author | Wenbiao Zhang <wenbiao.zhang@amlogic.com> | 2016-02-19 03:29:59 (GMT) |
---|---|---|
committer | wenbiao.zhang <wenbiao.zhang@amlogic.com> | 2016-02-19 10:50:19 (GMT) |
commit | 8fa44bf1707bc9ddfb23db5682bb1b47951fa8bc (patch) | |
tree | 7738a833fc94dd38c0cbbd4b1c1d2dbe78e6d09e | |
parent | 31e8afad6f747713b369ccb265ca7746994b9b53 (diff) | |
download | tv_input-8fa44bf1707bc9ddfb23db5682bb1b47951fa8bc.zip tv_input-8fa44bf1707bc9ddfb23db5682bb1b47951fa8bc.tar.gz tv_input-8fa44bf1707bc9ddfb23db5682bb1b47951fa8bc.tar.bz2 |
PD#119234: only tv input hal
Change-Id: Icf4282223678eb9fcf8d24ce77e7d26526660230
163 files changed, 13 insertions, 62934 deletions
@@ -7,7 +7,7 @@ LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) DVB_PATH := $(wildcard vendor/amlogic/dvb) -TVAPI_PATH := $(LOCAL_PATH)/tvapi +TVAPI_PATH := vendor/amlogic/frameworks/libtvbinder/include LIB_SQLITE_PATH := $(wildcard external/sqlite) AM_LIBPLAYER_PATH := $(wildcard vendor/amlogic/frameworks/av/LibPlayer) @@ -19,21 +19,22 @@ else endif LOCAL_MODULE_RELATIVE_PATH := hw -LOCAL_SHARED_LIBRARIES := libcutils liblog -LOCAL_SRC_FILES := tv_input.cpp +LOCAL_SHARED_LIBRARIES := libcutils libutils libtvbinder libbinder libui liblog +LOCAL_REQUIRED_MODULES := libtvbinder + +LOCAL_SRC_FILES := tv_input.cpp \ + TvPlay.cpp + LOCAL_MODULE := tv_input.amlogic LOCAL_MODULE_TAGS := optional LOCAL_C_INCLUDES += \ - $(TVAPI_PATH)/android \ + $(TVAPI_PATH) \ $(DVB_PATH)/android/ndk/include \ $(DVB_PATH)/include/am_adp \ $(DVB_PATH)/include/am_mw \ $(DVB_PATH)/include/am_ver \ $(DVB_PATH)/android/ndk/include \ $(LIB_SQLITE_PATH)/dist \ - $(TVAPI_PATH)/libtv/tvdb \ - $(TVAPI_PATH)/libtv/tv \ - $(TVAPI_PATH)/libtv/include \ $(AM_LIBPLAYER_PATH)/amadec/include \ $(AM_LIBPLAYER_PATH)/amcodec/include \ $(AM_LIBPLAYER_PATH)/amffmpeg \ @@ -45,12 +46,4 @@ LOCAL_C_INCLUDES += \ LOCAL_C_INCLUDES += hardware/amlogic/audio/libTVaudio - -LOCAL_SHARED_LIBRARIES += \ - libtvplay \ - libbinder - -LOCAL_SHARED_LIBRARIES += libutils liblog libui - include $(BUILD_SHARED_LIBRARY) -include $(LOCAL_PATH)/tvapi/Android.mk diff --git a/tvapi/android/tv/TvPlay.cpp b/TvPlay.cpp index 8d2ef82..030b9f4 100644 --- a/tvapi/android/tv/TvPlay.cpp +++ b/TvPlay.cpp @@ -1,6 +1,6 @@ #include <utils/Log.h> #include "TvPlay.h" -#include "../include/tvcmd.h" +#include "tvcmd.h" TvPlay::TvPlay() { diff --git a/tvapi/android/tv/TvPlay.h b/TvPlay.h index d30522d..008f298 100644 --- a/tvapi/android/tv/TvPlay.h +++ b/TvPlay.h @@ -5,7 +5,7 @@ //extern "C" { #endif -#include <include/TvClient.h> +#include <TvClient.h> typedef enum tv_source_input_e { SOURCE_INVALID = -1, diff --git a/tv_callback.h b/tv_callback.h index 50e7ab8..c024237 100644 --- a/tv_callback.h +++ b/tv_callback.h @@ -1,6 +1,6 @@ #ifndef TV_CALLBACK #define TV_CALLBACK -#include "tvapi/android/tv/TvPlay.h" +#include "TvPlay.h" class TvCallback : public TvPlayObserver { public: TvCallback(void *data) diff --git a/tv_input.cpp b/tv_input.cpp index 320c46c..d846626 100644 --- a/tv_input.cpp +++ b/tv_input.cpp @@ -22,9 +22,9 @@ #include <cutils/native_handle.h> #include <hardware/tv_input.h> -#include "tvapi/android/tv/TvPlay.h" +#include "TvPlay.h" #include "tv_callback.h" -#include "tvapi/android/include/tvcmd.h" +#include <tvcmd.h> #include <ui/GraphicBufferMapper.h> #include <ui/GraphicBuffer.h> /*****************************************************************************/ diff --git a/tvapi/Android.mk b/tvapi/Android.mk deleted file mode 100644 index 5053e7d..0000000 --- a/tvapi/Android.mk +++ b/dev/null @@ -1 +0,0 @@ -include $(call all-subdir-makefiles) diff --git a/tvapi/android/Android.mk b/tvapi/android/Android.mk deleted file mode 100644 index 5053e7d..0000000 --- a/tvapi/android/Android.mk +++ b/dev/null @@ -1 +0,0 @@ -include $(call all-subdir-makefiles) diff --git a/tvapi/android/include/ITv.h b/tvapi/android/include/ITv.h deleted file mode 100644 index 064e4e9..0000000 --- a/tvapi/android/include/ITv.h +++ b/dev/null @@ -1,49 +0,0 @@ -#ifndef ANDROID_AMLOGIC_ITV_H -#define ANDROID_AMLOGIC_ITV_H - -#include <utils/RefBase.h> -#include <binder/IInterface.h> -#include <binder/Parcel.h> -#include <binder/IMemory.h> -#include <utils/String8.h> -#include <include/TvClient.h> - -using namespace android; - -class ITvClient; - -class ITv: public IInterface { -public: - DECLARE_META_INTERFACE(Tv); - - virtual void disconnect() = 0; - - // connect new client with existing tv remote - virtual status_t connect(const sp<ITvClient> &client) = 0; - - // prevent other processes from using this ITv interface - virtual status_t lock() = 0; - - // allow other processes to use this ITv interface - virtual status_t unlock() = 0; - - virtual status_t processCmd(const Parcel &p, Parcel *r) = 0; - - //share mem for subtitle bmp - virtual status_t createSubtitle(const sp<IMemory> &share_mem) = 0; - //share mem for video/hdmi bmp - virtual status_t createVideoFrame(const sp<IMemory> &share_mem, int iSourceMode, int iCapVideoLayerOnly) = 0; - -}; - -// ---------------------------------------------------------------------------- - -class BnTv: public BnInterface<ITv> { -public: - virtual status_t onTransact( uint32_t code, - const Parcel &data, - Parcel *reply, - uint32_t flags = 0); -}; - -#endif diff --git a/tvapi/android/include/ITvClient.h b/tvapi/android/include/ITvClient.h deleted file mode 100644 index 05c498d..0000000 --- a/tvapi/android/include/ITvClient.h +++ b/dev/null @@ -1,28 +0,0 @@ -#ifndef ANDROID_AMLOGIC_ITV_CLIENT_H -#define ANDROID_AMLOGIC_ITV_CLIENT_H - -#include <utils/RefBase.h> -#include <binder/IInterface.h> -#include <binder/Parcel.h> -#include <binder/IMemory.h> -#include <utils/Timers.h> - -using namespace android; - -class ITvClient: public IInterface { -public: - DECLARE_META_INTERFACE(TvClient); - - virtual void notifyCallback(int32_t msgType, const Parcel &p) = 0; -}; - - -class BnTvClient: public BnInterface<ITvClient> { -public: - virtual status_t onTransact(uint32_t code, - const Parcel &data, - Parcel *reply, - uint32_t flags = 0); -}; - -#endif diff --git a/tvapi/android/include/ITvService.h b/tvapi/android/include/ITvService.h deleted file mode 100644 index 60983d3..0000000 --- a/tvapi/android/include/ITvService.h +++ b/dev/null @@ -1,33 +0,0 @@ -#ifndef ANDROID_AMLOGIC_ITVSERVICE_H -#define ANDROID_AMLOGIC_ITVSERVICE_H - -#include <utils/RefBase.h> -#include <binder/IInterface.h> -#include <binder/Parcel.h> -#include <include/ITvClient.h> -#include <include/ITv.h> - -using namespace android; - - -class ITvService : public IInterface { -public: - enum { - CONNECT = IBinder::FIRST_CALL_TRANSACTION, - }; - -public: - DECLARE_META_INTERFACE(TvService); - - virtual sp<ITv> connect(const sp<ITvClient> &tvClient) = 0; -}; - -class BnTvService: public BnInterface<ITvService> { -public: - virtual status_t onTransact(uint32_t code, - const Parcel &data, - Parcel *reply, - uint32_t flags = 0); -}; - -#endif diff --git a/tvapi/android/include/TvClient.h b/tvapi/android/include/TvClient.h deleted file mode 100644 index 505f2bb..0000000 --- a/tvapi/android/include/TvClient.h +++ b/dev/null @@ -1,78 +0,0 @@ -#ifndef _ANDROID_TV_CLIENT_H_ -#define _ANDROID_TV_CLIENT_H_ - -#include <utils/Timers.h> -#include <include/ITvClient.h> -#include <binder/MemoryHeapBase.h> -#include <binder/MemoryBase.h> -#include <utils/threads.h> - -using namespace android; - -class ITvService; -class ITv; - -// ref-counted object for callbacks -class TvListener: virtual public RefBase { -public: - virtual void notify(int32_t msgType, const Parcel &ext) = 0; -}; - -class TvClient : public BnTvClient, public IBinder::DeathRecipient { -public: - // construct a tv client from an existing remote - static sp<TvClient> create(const sp<ITv> &tv); - static sp<TvClient> connect(); - ~TvClient(); - void init(); - status_t reconnect(); - void disconnect(); - status_t lock(); - status_t unlock(); - - status_t getStatus() - { - return mStatus; - } - status_t processCmd(const Parcel &p, Parcel *r); - status_t createSubtitle(const sp<IMemory> &share_mem); - status_t createVideoFrame(const sp<IMemory> &share_mem, int iSourceMode, int iCapVideoLayerOnly); - void setListener(const sp<TvListener> &listener); - - // ITvClient interface - virtual void notifyCallback(int32_t msgType, const Parcel &p); - - sp<ITv> remote(); - -private: - TvClient(); - TvClient(const TvClient &); - TvClient &operator = (const TvClient); - virtual void binderDied(const wp<IBinder> &who); - - class DeathNotifier: public IBinder::DeathRecipient { - public: - DeathNotifier() {} - virtual void binderDied(const wp<IBinder> &who); - }; - - static sp<DeathNotifier> mDeathNotifier; - - // helper function to obtain tv service handle - static const sp<ITvService> &getTvService(); - - sp<ITv> mTv; - status_t mStatus; - - sp<TvListener> mListener; - - friend class DeathNotifier; - - static Mutex mLock; - static sp<ITvService> mTvService; - - sp<MemoryHeapBase> mBmpMemHeap; - sp<MemoryBase> mBmpMemBase; -}; -#endif/*_ANDROID_TV_CLIENT_H_*/ - diff --git a/tvapi/android/include/tvcmd.h b/tvapi/android/include/tvcmd.h deleted file mode 100644 index ac8fa57..0000000 --- a/tvapi/android/include/tvcmd.h +++ b/dev/null @@ -1,618 +0,0 @@ -#ifndef ANDROID_AMLOGIC_TVCMD_H -#define ANDROID_AMLOGIC_TVCMD_H - -enum tvcmd_e { - // Tv function - OPEN_TV = 1, - CLOSE_TV = 2, - START_TV = 3, - STOP_TV = 4, - GET_TV_STATUS = 5, - GET_LAST_SOURCE_INPUT = 6, - GET_CURRENT_SOURCE_INPUT = 7, - GET_CURRENT_SOURCE_INPUT_TYPE = 8, - GET_CURRENT_SIGNAL_INFO = 9, - IS_SOURCE_SWTICH_DONE = 10, - SET_SOURCE_INPUT = 11, - RUN_ADC_AUTO_CALIBRATION = 12, - IS_DVI_SIGNAL = 13, - IS_VGA_TIMEING_IN_HDMI = 14, - GET_VIDEO_PATH_STATUS = 15, - GET_VIDEO_STREAM_STATUS = 16, - GET_FIRST_START_SWITCH_TYPE = 17, - SET_PREVIEW_WINDOW = 18, - GET_SOURCE_CONNECT_STATUS = 19, - //Tv function END - - // VGA - RUN_VGA_AUTO_ADJUST = 20, - GET_VGA_AUTO_ADJUST_STATUS = 21, - IS_VGA_AUTO_ADJUST_DONE = 22, - SET_VGA_HPOS = 23, - GET_VGA_HPOS = 24, - SET_VGA_VPOS = 25, - GET_VGA_VPOS = 26, - SET_VGA_CLOCK = 27, - GET_VGA_CLOCK = 28, - SET_VGA_PHASE = 29, - GET_VGA_PHASE = 30, - SET_VGA_AJUST_PARA = 31, - GET_VGA_AJUST_PARA = 32, - SET_VGAPARAM_DEFAULT = 33, - - // 3D - SET_3D_MODE = 61, - GET_3D_MODE = 62, - SET_3D_LR_SWITH = 63, - GET_3D_LR_SWITH = 64, - SET_3D_TO_2D_MODE = 65, - GET_3D_TO_2D_MODE = 66, - SET_3D_DEPTH = 67, - GET_3D_DEPTH = 68, - GET_3D_AUTO_DETECT = 69, - SET_3D_AUTO_DETECT = 70, - // 3D END - - //Screen related - SET_VIDEO_DISABLE = 80, - - // PQ - SET_SCENEMODE = 192, - GET_SCENEMODE = 193, - SET_BRIGHTNESS = 194, - GET_BRIGHTNESS = 195, - SAVE_BRIGHTNESS = 196, - SET_CONTRAST = 197, - GET_CONTRAST = 198, - SAVE_CONTRAST = 199, - SET_SATUATION = 200, - GET_SATUATION = 201, - SAVE_SATUATION = 202, - SET_HUE = 203, - GET_HUE = 204, - SAVE_HUE = 205, - SET_PQMODE = 206, - GET_PQMODE = 207, - SAVE_PQMODE = 208, - SET_SHARPNESS = 209, - GET_SHARPNESS = 210, - SAVE_SHARPNESS = 211, - SET_BACKLIGHT = 212, - GET_BACKLIGHT = 213, - SAVE_BACKLIGHT = 214, - SET_COLOR_MODE = 215, - GET_COLOR_MODE = 216, - SAVE_COLOR_MODE = 217, - SET_COLOR_TEMPERATURE = 218, - GET_COLOR_TEMPERATURE = 219, - SAVE_COLOR_TEMPERATURE = 220, - SET_DISPLAY_MODE = 221, - GET_DISPLAY_MODE = 222, - SAVE_DISPLAY_MODE = 223, - SET_NOISE_REDUCTION_MODE = 224, - GET_NOISE_REDUCTION_MODE = 225, - VPP_SPLIT_SCREEN_EFFECT = 226, - SET_BACKLIGHT_SWITCH = 227, - GET_BACKLIGHT_SWITCH = 228, - SAVE_NOISE_REDUCTION_MODE = 229, - //GETRGBOGO_GAIN_G = 237, - //GETRGBOGO_GAIN_B = 238, - - // FACTORY - FACTORY_SETPQMODE_BRIGHTNESS = 240, - FACTORY_GETPQMODE_BRIGHTNESS = 241, - FACTORY_SETPQMODE_CONTRAST = 242, - FACTORY_GETPQMODE_CONTRAST = 243, - FACTORY_SETPQMODE_SATURATION = 244, - FACTORY_GETPQMODE_SATURATION = 245, - FACTORY_SETPQMODE_HUE = 246, - FACTORY_GETPQMODE_HUE = 247, - FACTORY_SETPQMODE_SHARPNESS = 248, - FACTORY_GETPQMODE_SHARPNESS = 249, - FACTORY_SETTESTPATTERN = 268, - FACTORY_GETTESTPATTERN = 269, - FACTORY_RESETPQMODE = 270, - FACTORY_RESETCOLORTEMP = 271, - FACTORY_RESETPAMAMSDEFAULT = 272, - FACTORY_SETDDRSSC = 273, - FACTORY_GETDDRSSC = 274, - FACTORY_SETLVDSSSC = 275, - FACTORY_GETLVDSSSC = 276, - FACTORY_SETNOLINEPARAMS = 277, - FACTORY_GETNOLINEPARAMS = 278, - FACTORY_SETOVERSCAN = 279, - FACTORY_GETOVERSCAN = 280, - FACTORY_SET_OUT_DEFAULT = 281, - FACTORY_GETGLOBALOGO_RGAIN = 282, - FACTORY_GETGLOBALOGO_GGAIN = 283, - FACTORY_GETGLOBALOGO_BGAIN = 284, - FACTORY_GETGLOBALOGO_ROFFSET = 285, - FACTORY_GETGLOBALOGO_GOFFSET = 286, - FACTORY_GETGLOBALOGO_BOFFSET = 287, - FACTORY_SETGLOBALOGO_RGAIN = 288, - FACTORY_SETGLOBALOGO_GGAIN = 289, - FACTORY_SETGLOBALOGO_BGAIN = 290, - FACTORY_SETGLOBALOGO_ROFFSET = 291, - FACTORY_SETGLOBALOGO_GOFFSET = 292, - FACTORY_SETGLOBALOGO_BOFFSET = 293, - FACTORY_CLEAN_ALL_TABLE_FOR_PROGRAM = 294, - - DELETE_PARAM_PQ_DB = 295, - REPLACE_PARAM_PQ_DB = 296, - FACTORY_SETPATTERN_YUV = 297, - - // FACTORY END - - // AUDIO - // AUDIO MUTE - SET_AUDIO_MUTEKEY_STATUS = 301, - GET_AUDIO_MUTEKEY_STATUS = 302, - SET_AUDIO_FORCE_MUTE_STATUS = 303, - GET_AUDIO_FORCE_MUTE_STATUS = 304, - SET_AUDIO_AVOUT_MUTE_STATUS = 305, - GET_AUDIO_AVOUT_MUTE_STATUS = 306, - SET_AUDIO_SPDIF_MUTE_STATUS = 307, - GET_AUDIO_SPDIF_MUTE_STATUS = 308, - // AUDIO MASTER VOLUME - SET_AUDIO_MASTER_VOLUME = 309, - GET_AUDIO_MASTER_VOLUME = 310, - SAVE_CUR_AUDIO_MASTER_VOLUME = 311, - GET_CUR_AUDIO_MASTER_VOLUME = 312, - // AUDIO BALANCE - SET_AUDIO_BALANCE = 313, - GET_AUDIO_BALANCE = 314, - SAVE_CUR_AUDIO_BALANCE = 315, - GET_CUR_AUDIO_BALANCE = 316, - // AUDIO SUPPERBASS VOLUME - SET_AUDIO_SUPPER_BASS_VOLUME = 317, - GET_AUDIO_SUPPER_BASS_VOLUME = 318, - SAVE_CUR_AUDIO_SUPPER_BASS_VOLUME = 319, - GET_CUR_AUDIO_SUPPER_BASS_VOLUME = 320, - // AUDIO SUPPERBASS SWITCH - SET_AUDIO_SUPPER_BASS_SWITCH = 321, - GET_AUDIO_SUPPER_BASS_SWITCH = 322, - SAVE_CUR_AUDIO_SUPPER_BASS_SWITCH = 323, - GET_CUR_AUDIO_SUPPER_BASS_SWITCH = 324, - // AUDIO SRS SURROUND SWITCH - SET_AUDIO_SRS_SURROUND = 325, - GET_AUDIO_SRS_SURROUND = 326, - SAVE_CUR_AUDIO_SRS_SURROUND = 327, - GET_CUR_AUDIO_SRS_SURROUND = 328, - // AUDIO SRS DIALOG CLARITY - SET_AUDIO_SRS_DIALOG_CLARITY = 329, - GET_AUDIO_SRS_DIALOG_CLARITY = 330, - SAVE_CUR_AUDIO_SRS_DIALOG_CLARITY = 331, - GET_CUR_AUDIO_SRS_DIALOG_CLARITY = 332, - // AUDIO SRS TRUBASS - SET_AUDIO_SRS_TRU_BASS = 333, - GET_AUDIO_SRS_TRU_BASS = 334, - SAVE_CUR_AUDIO_SRS_TRU_BASS = 335, - GET_CUR_AUDIO_SRS_TRU_BASS = 336, - // AUDIO BASS - SET_AUDIO_BASS_VOLUME = 337, - GET_AUDIO_BASS_VOLUME = 338, - SAVE_CUR_AUDIO_BASS_VOLUME = 339, - GET_CUR_AUDIO_BASS_VOLUME = 340, - // AUDIO TREBLE - SET_AUDIO_TREBLE_VOLUME = 341, - GET_AUDIO_TREBLE_VOLUME = 342, - SAVE_CUR_AUDIO_TREBLE_VOLUME = 343, - GET_CUR_AUDIO_TREBLE_VOLUME = 344, - // AUDIO SOUND MODE - SET_AUDIO_SOUND_MODE = 345, - GET_AUDIO_SOUND_MODE = 346, - SAVE_CUR_AUDIO_SOUND_MODE = 347, - GET_CUR_AUDIO_SOUND_MODE = 348, - // AUDIO WALL EFFECT - SET_AUDIO_WALL_EFFECT = 349, - GET_AUDIO_WALL_EFFECT = 350, - SAVE_CUR_AUDIO_WALL_EFFECT = 351, - GET_CUR_AUDIO_WALL_EFFECT = 352, - // AUDIO EQ MODE - SET_AUDIO_EQ_MODE = 353, - GET_AUDIO_EQ_MODE = 354, - SAVE_CUR_AUDIO_EQ_MODE = 355, - GET_CUR_AUDIO_EQ_MODE = 356, - // AUDIO EQ GAIN - GET_AUDIO_EQ_RANGE = 357, - GET_AUDIO_EQ_BAND_COUNT = 358, - SET_AUDIO_EQ_GAIN = 359, - GET_AUDIO_EQ_GAIN = 360, - GET_CUR_EQ_GAIN = 361, - SAVE_CUR_AUDIO_EQ_GAIN = 362, - SET_AUDIO_EQ_SWITCH = 363, - // AUDIO SPDIF SWITCH - SET_AUDIO_SPDIF_SWITCH = 364, - GET_AUDIO_SPDIF_SWITCH = 365, - SAVE_CUR_AUDIO_SPDIF_SWITCH = 366, - GET_CUR_AUDIO_SPDIF_SWITCH = 367, - // AUDIO SPDIF MODE - SET_AUDIO_SPDIF_MODE = 368, - GET_AUDIO_SPDIF_MODE = 369, - SAVE_CUR_AUDIO_SPDIF_MODE = 370, - GET_CUR_AUDIO_SPDIF_MODE = 371, - // amAudio - OPEN_AMAUDIO = 372, - CLOSE_AMAUDIO = 373, - SET_AMAUDIO_INPUT_SR = 374, - SET_AMAUDIO_OUTPUT_MODE = 375, - SET_AMAUDIO_MUSIC_GAIN = 376, - SET_AMAUDIO_LEFT_GAIN = 377, - SET_AMAUDIO_RIGHT_GAIN = 378, - SET_AMAUDIO_REV1 = 379, - SET_AMAUDIO_REV2 = 380, - SET_AMAUDIO_REV3 = 381, - SET_AMAUDIO_REV4 = 382, - SET_AMAUDIO_REV5 = 383, - //AUDIO INPUT LEVEL SWITCH - SELECT_LINE_IN_CHANNEL = 384, - SET_LINE_IN_CAPTURE_VOL = 385, - HANDLE_AUDIO_HEADSET_PLUG_IN = 386, - HANDLE_AUDIO_HEADSET_PULL_OUT = 387, - SET_AUDIO_VOL_COMP = 388, - GET_AUDIO_VOL_COMP = 389, - SET_NOISE_GATE_THRESHOLD = 390, - SAVE_AUDIO_VOL_COMP = 391, - SET_KALAOK_IO_LEVEL = 392, - AUDIO_SET_DOUBLE_OUTPUT_ENABLE = 393, - USB_AUDIO_OUPUT_MODULE_ENABLE = 394, - GET_USB_AUDIO_DOUBLE_OUPUT_MODULE_ENABLE = 395, - GET_USB_AUDIO_OUPUT_MODULE_ENABLE = 396, - SET_AUDIO_SOURCE_FOR_KARAOKE = 397, - SET_DBX_TV_MODE = 398, - SET_DRC_ONOFF = 399, - GET_DRC_ONOFF = 400, - GET_DBX_TV_MODE = 401, - //AUDIO END - - // CALLBACK - SEARCH_CALLBACK = 501, - SIGLE_DETECT_CALLBACK = 502, - VGA_CALLBACK = 503, - DREAM_PANEL_CALLBACK = 504, - ADC_CALIBRATION_CALLBACK = 505, - SOURCE_SWITCH_CALLBACK = 506, - CHANNEL_SELECT_CALLBACK = 507, - STATUS_3D_CALLBACK = 508, - DTV_AV_PLAYBACK_CALLBACK = 509, - SOURCE_CONNECT_CALLBACK = 510, - HDMIRX_CEC_CALLBACK = 511, - SERIAL_COMMUNICATION_CALLBACK = 512, - CLOSE_CAPTION_CALLBACK = 514, - VCHIP_CALLBACK = 515, - UPGRADE_FBC_CALLBACK = 516, - HEADSET_STATUS_CALLBACK = 517, - - RELEASE_RESOURCE_CALLBACK = 530, - RESOURCES_STATE_CHANGED_CALLBACK = 531, - RESOURCE_STATE_CHANGED_LISTEN_NOFIFY_CALLBACK = 532, - - SUBTITLE_UPDATE_CALLBACK = 540, - SCAN_EVENT_CALLBACK = 541, - EPG_EVENT_CALLBACK = 542, - VFRAME_BMP_EVENT_CALLBACK = 543, - // CALLBACK END - - // SSM - SSM_INIT_DEVICE = 600, - SSM_SAVE_ONE_BYTE = 601, - SSM_READ_ONE_BYTE = 602, - SSM_SAVE_N_BYTES = 603, - SSM_READ_N_BYTES = 604, - SSM_SAVE_POWER_ON_OFF_CHANNEL = 605, - SSM_READ_POWER_ON_OFF_CHANNEL = 606, - SSM_SAVE_SOURCE_INPUT = 607, - SSM_READ_SOURCE_INPUT = 608, - SSM_SAVE_LAST_SOURCE_INPUT = 609, - SSM_READ_LAST_SOURCE_INPUT = 610, - SSM_SAVE_SYS_LANGUAGE = 611, - SSM_READ_SYS_LANGUAGE = 612, - SSM_SAVE_AGING_MODE = 613, - SSM_READ_AGING_MODE = 614, - SSM_SAVE_PANEL_TYPE = 615, - SSM_READ_PANEL_TYPE = 616, - SSM_SAVE_MAC_ADDR = 617, - SSM_READ_MAC_ADDR = 618, - SSM_SAVE_BAR_CODE = 619, - SSM_READ_BAR_CODE = 620, - SSM_SAVE_POWER_ON_MUSIC_SWITCH = 623, - SSM_READ_POWER_ON_MUSIC_SWITCH = 624, - SSM_SAVE_POWER_ON_MUSIC_VOL = 625, - SSM_READ_POWER_ON_MUSIC_VOL = 626, - SSM_SAVE_SYS_SLEEP_TIMER = 627, - SSM_READ_SYS_SLEEP_TIMER = 628, - SSM_SET_BUS_STATUS = 629, - SSM_GET_BUS_STATUS = 630, - SSM_SAVE_INPUT_SRC_PARENTAL_CTL = 631, - SSM_READ_INPUT_SRC_PARENTAL_CTL = 632, - SSM_SAVE_PARENTAL_CTL_SWITCH = 633, - SSM_READ_PARENTAL_CTL_SWITCH = 634, - SSM_SAVE_PARENTAL_CTL_PASS_WORD = 635, - SSM_READ_PARENTAL_CTL_PASS_WORD = 636, - SSM_SAVE_USING_DEF_HDCP_KEY_FLAG = 637, - SSM_READ_USING_DEF_HDCP_KEY_FLAG = 638, - SSM_GET_CUSTOMER_DATA_START = 639, - SSM_GET_CUSTOMER_DATA_LEN = 640, - SSM_SAVE_STANDBY_MODE = 641, - SSM_READ_STANDBY_MODE = 642, - SSM_SAVE_LOGO_ON_OFF_FLAG = 643, - SSM_READ_LOGO_ON_OFF_FLAG = 644, - SSM_SAVE_HDMIEQ_MODE = 645, - SSM_READ_HDMIEQ_MODE = 646, - SSM_SAVE_HDMIINTERNAL_MODE = 647, - SSM_READ_HDMIINTERNAL_MODE = 648, - SSM_SAVE_DISABLE_3D = 649, - SSM_READ_DISABLE_3D = 650, - SSM_SAVE_GLOBAL_OGOENABLE = 651, - SSM_READ_GLOBAL_OGOENABLE = 652, - SSM_SAVE_LOCAL_DIMING_STATUS = 653, - SSM_READ_LOCAL_DIMING_STATUS = 654, - SSM_SAVE_NON_STANDARD_STATUS = 655, - SSM_READ_NON_STANDARD_STATUS = 656, - SSM_SAVE_ADB_SWITCH_STATUS = 657, - SSM_READ_ADB_SWITCH_STATUS = 658, - SSM_SAVE_SERIAL_CMD_SWITCH_STATUS = 659, - SSM_READ_SERIAL_CMD_SWITCH_STATUS = 660, - SSM_SET_HDCP_KEY = 661, - SSM_SAVE_CHROMA_STATUS = 662, - SSM_SAVE_CA_BUFFER_SIZE = 663, - SSM_READ_CA_BUFFER_SIZE = 664, - SSM_GET_ATV_DATA_START = 665, - SSM_GET_ATV_DATA_LEN = 666, - SSM_GET_VPP_DATA_START = 667, - SSM_GET_VPP_DATA_LEN = 668, - SSM_SAVE_NOISE_GATE_THRESHOLD_STATUS = 669, - SSM_READ_NOISE_GATE_THRESHOLD_STATUS = 670, - SSM_SAVE_PROJECT_ID = 673, - SSM_READ_PROJECT_ID = 674, - SSM_SAVE_HDCPKEY = 675, - SSM_READ_HDCPKEY = 676, - SSM_READ_BLACKOUT_ENABLE = 677, - SSM_REFRESH_HDCPKEY = 678, - - // Misc - MISC_PROP_SET = 701, - MISC_PROP_GET = 702, - MISC_CFG_SET = 703, - MISC_CFG_GET = 704, - MISC_READ_ADC_VAL = 707, - MISC_SET_WDT_USER_PET = 708, - MISC_SET_WDT_USER_COUNTER = 709, - MISC_SET_WDT_USER_PET_RESET_ENABLE = 710, - MISC_GET_TV_API_VERSION = 713, - MISC_GET_DVB_API_VERSION = 714, - MISC_SERIAL_SWITCH = 715, - MISC_SERIAL_SEND_DATA = 716, - MISC_CHANNEL_EXPORT = 721, - MISC_CHANNEL_IMPORT = 722, - MISC_GET_PROJECT_INFO = 723, - MISC_GET_PLATFORM_TYPE = 724, - - //Extra - FORMAT_PARTITION = 801, - DELETE_DIR_FILES = 802, - REQUEST_RESOURCES = 803, - RELEASED_RESOURCES = 804, - SET_LISTEN_TO_RESOURCE = 805, - QUERY_RESOURCE_STATE = 806, - GET_DISPLAY_RESOLUTION_CONFIG = 808, - GET_DISPLAY_RESOLUTION_INFO = 809, - HDMIRX_CEC_SEND_CUSTOM_MESSAGE = 810, - HDMIRX_CEC_SEND_CUSTOM_WAIT_REPLY_MESSAGE = 811, - HDMIRX_CEC_SEND_BROADCAST_STANDBY_MESSAGE = 812, - HDMIRX_CEC_SEND_GIVE_CEC_VERSION_MESSAGE = 813, - HDMIRX_CEC_SEND_GIVE_DEV_VENDOR_ID_MESSAGE = 814, - HDMIRX_CEC_SEND_GIVE_OSD_NAME_MESSAGE = 815, - GET_HDMI_KSV_INFO = 816, - HDMI_OUT_TOWHAT = 817, - SET_DEBUG_SERIAL_PORT_ONOFF = 818, - GET_DEBUG_SERIAL_PORT_ONOFF = 819, - DO_SUSPEND = 820, - DO_RESUME = 821, - - //Fac_FBC - FACTORY_FBC_UPGRADE = 900, - FACTORY_FBC_SET_BRIGHTNESS = 901, - FACTORY_FBC_GET_BRIGHTNESS = 902, - FACTORY_FBC_SET_CONTRAST = 903, - FACTORY_FBC_GET_CONTRAST = 904, - FACTORY_FBC_SET_SATURATION = 905, - FACTORY_FBC_GET_SATURATION = 906, - FACTORY_FBC_SET_HUE = 907, - FACTORY_FBC_GET_HUE = 908, - FACTORY_FBC_SET_BACKLIGHT = 909, - FACTORY_FBC_GET_BACKLIGHT = 910, - FACTORY_FBC_SET_PIC_MODE = 911, - FACTORY_FBC_GET_PIC_MODE = 912, - FACTORY_FBC_SET_GAIN_RED = 913, - FACTORY_FBC_GET_GAIN_RED = 914, - FACTORY_FBC_SET_GAIN_GREEN = 915, - FACTORY_FBC_GET_GAIN_GREEN = 916, - FACTORY_FBC_SET_GAIN_BLUE = 917, - FACTORY_FBC_GET_GAIN_BLUE = 918, - FACTORY_FBC_SET_OFFSET_RED = 919, - FACTORY_FBC_GET_OFFSET_RED = 920, - FACTORY_FBC_SET_OFFSET_GREEN = 921, - FACTORY_FBC_GET_OFFSET_GREEN = 922, - FACTORY_FBC_SET_OFFSET_BLUE = 923, - FACTORY_FBC_GET_OFFSET_BLUE = 924, - FACTORY_FBC_SET_COLORTEMP_MODE = 925, - FACTORY_FBC_GET_COLORTEMP_MODE = 926, - FACTORY_FBC_SET_WB_INIT = 927, - FACTORY_FBC_GET_WB_INIT = 928, - FACTORY_FBC_SET_TEST_PATTERN = 929, - FACTORY_FBC_GET_TEST_PATTERN = 930, - FACTORY_FBC_SET_BACKLIGHT_EN = 931, - FACTORY_FBC_GET_BACKLIGHT_EN = 932, - FACTORY_FBC_SET_LVDS_SSG = 933, - FACTORY_FBC_SET_ELEC_MODE = 934, - FACTORY_FBC_GET_MAINCODE_VERSION = 935, - FACTORY_FBC_PANEL_POWER_SWITCH = 936, - FACTORY_FBC_PANEL_GET_INFO = 937, - FACTORY_FBC_PANEL_SUSPEND = 938, - FACTORY_FBC_SEND_KEY_TO_FBC = 939, - FACTORY_FBC_POWER_REBOOT = 940, - FACTORY_FBC_GET_ELEC_MODE = 941, - FACTORY_FBC_PANEL_USER_SETTING_DEFAULT = 942, - FACTORY_FBC_SET_BACKLIGHT_N360 = 943, - FACTORY_FBC_GET_BACKLIGHT_N360 = 944, - FACTORY_FBC_SET_COLORTEMP_MODE_N360 = 945, - FACTORY_FBC_GET_COLORTEMP_MODE_N360 = 946, - FACTORY_FBC_SET_LOCKN_STATE_N360 = 947, - FACTORY_FBC_TEST_PATTERN = 950, - FACTORY_FBC_VIDEO_MUTE = 951, - - //T868 for cvt - FACTORY_SETBACKLIGHT_PWM_FREQUENCY = 1000, - FACTORY_GETBACKLIGHT_PWM_FREQUENCY = 1001, - FACTORY_SETBACKLIGHT_SWITCH_STATUS = 1002, - FACTORY_GETBACKLIGHT_SWITCH_STATUS = 1003, - FACTORY_SETBACKLIGHT_PWM_DUTY = 1004, - FACTORY_GETBACKLIGHT_PWM_DUTY = 1005, - FACTORY_SETLVDS_COLOR_DEPTH = 1006, - FACTORY_GETLVDS_COLOR_DEPTH = 1007, - FACTORY_SETLVDS_DITHER_STATUS = 1008, - FACTORY_GETLVDS_DITHER_STATUS = 1009, - FACTORY_SETLVDS_MAPPING_STATUS = 1010, - FACTORY_GETLVDS_MAPPING_STATUS = 1011, - FACTORY_SETLVDS_PORT_SWAP_STATUS = 1012, - FACTORY_GETLVDS_PORT_SWAP_STATUS = 1013, - FACTORY_SET_SN = 1014, - FACTORY_GET_SN = 1015, - - //Uniform White Balance - FACTORY_WHITE_BALANCE_SET_GAIN_RED = 1100, - FACTORY_WHITE_BALANCE_GET_GAIN_RED = 1101, - FACTORY_WHITE_BALANCE_SET_GAIN_GREEN = 1102, - FACTORY_WHITE_BALANCE_GET_GAIN_GREEN = 1103, - FACTORY_WHITE_BALANCE_SET_GAIN_BLUE = 1104, - FACTORY_WHITE_BALANCE_GET_GAIN_BLUE = 1105, - FACTORY_WHITE_BALANCE_SET_OFFSET_RED = 1106, - FACTORY_WHITE_BALANCE_GET_OFFSET_RED = 1107, - FACTORY_WHITE_BALANCE_SET_OFFSET_GREEN = 1108, - FACTORY_WHITE_BALANCE_GET_OFFSET_GREEN = 1109, - FACTORY_WHITE_BALANCE_SET_OFFSET_BLUE = 1110, - FACTORY_WHITE_BALANCE_GET_OFFSET_BLUE = 1111, - FACTORY_WHITE_BALANCE_GET_COLOR_TMP = 1112, - FACTORY_WHITE_BALANCE_SET_COLOR_TMP = 1113, - FACTORY_WHITE_BALANCE_SAVE_PRAMAS = 1114, - FACTORY_WHITE_BALANCE_SET_WB_INIT = 1115, - FACTORY_WHITE_BALANCE_GET_WB_INIT = 1116, - FACTORY_WHITE_BALANCE_SET_GRAY_PATTERN = 1117, - FACTORY_WHITE_BALANCE_GET_GRAY_PATTERN = 1118, - FACTORY_WHITE_BALANCE_OPEN_GRAY_PATTERN = 1119, - FACTORY_WHITE_BALANCE_CLOSE_GRAY_PATTERN = 1120, - FACTORY_WHITE_BALANCE_GET_ALL_PRAMAS = 1121, - - //dtv - DTV_GET_SUBTITLE_SWITCH = 1380, - DTV_SUBTITLE_INIT = 1381, - DTV_SUBTITLE_LOCK = 1382, - DTV_SUBTITLE_UNLOCK = 1383, - DTV_START_SUBTITLE = 1384, - DTV_STOP_SUBTITLE = 1385, - DTV_GET_SUBTITLE_INDEX = 1386, - DTV_SET_SUBTITLE_INDEX = 1387, - ATV_GET_CURRENT_PROGRAM_ID = 1389, - DTV_GET_CURRENT_PROGRAM_ID = 1390, - ATV_SAVE_PROGRAM_ID = 1391, - DTV_SCAN_MANUAL_BETWEEN_FREQ = 1392, - ATV_GET_MIN_MAX_FREQ = 1393, - DTV_GET_SCAN_FREQUENCY_LIST = 1394, - DTV_GET_CHANNEL_INFO = 1395, - ATV_GET_CHANNEL_INFO = 1396, - ATV_SCAN_MANUAL = 1397, - ATV_SCAN_AUTO = 1398, - DTV_SCAN_MANUAL = 1399, - DTV_SCAN_AUTO = 1400, - TV_SUBTITLE_DRAW_END = 1401, - PLAY_PROGRAM = 1402, - STOP_PROGRAM_PLAY = 1403, - GET_PROGRAM_LIST = 1404, - STOP_SCAN = 1405, - DTV_GET_SNR = 1406, - DTV_GET_BER = 1407, - DTV_GET_STRENGTH = 1408, - DTV_GET_AUDIO_TRACK_NUM = 1409, - DTV_GET_AUDIO_TRACK_INFO = 1410, - DTV_SWITCH_AUDIO_TRACK = 1411, - DTV_GET_EPG_UTC_TIME = 1412, - DTV_GET_CUR_FREQ = 1413, - DTV_GET_EPG_INFO_POINT_IN_TIME = 1414, - DTV_GET_EPG_INFO_DURATION = 1415, - SET_FRONTEND_PARA = 1416, - DTV_SET_PROGRAM_NAME = 1417, - DTV_SET_PROGRAM_SKIPPED = 1418, - DTV_SET_PROGRAM_FAVORITE = 1419, - DTV_DETELE_PROGRAM = 1420, - DTV_SWAP_PROGRAM = 1421, - DTV_SET_PROGRAM_LOCKED = 1422, - DTV_SET_BOOKING_FLAG = 1423, - DTV_GET_BOOKED_EVENT = 1424, - DTV_GET_CURR_AUDIO_TRACK_INDEX = 1425, - DTV_SET_AUDIO_CHANNEL_MOD = 1426, - DTV_GET_AUDIO_CHANNEL_MOD = 1427, - DTV_GET_FREQ_BY_PROG_ID = 1428, - DTV_GET_VIDEO_FMT_INFO = 1429, - DTV_START_RECORD = 1430, - DTV_STOP_RECORD = 1431, - DTV_SET_RECORD_ALL_TS = 1432, - DTV_SCAN_AUTO_ATSC = 1433, - DTV_TEST_1 = 1451, - DTV_TEST_2 = 1452, - DTV_TEST_3 = 1453, - TV_CLEAR_ALL_PROGRAM = 1454, - SET_BLACKOUT_ENABLE = 1455, - START_AUTO_BACKLIGHT = 1456, - STOP_AUTO_BACKLIGHT = 1457, - IS_AUTO_BACKLIGHTING = 1458, - HDMIAV_HOTPLUGDETECT_ONOFF = 1459, - GET_AVERAGE_LUMA = 1480, - GET_AUTO_BACKLIGHT_DATA = 1481, - SET_AUTO_BACKLIGHT_DATA = 1482, - TV_PRINT_DEBUG_INFO = 2000, - - //customer interface - FACTROY_FBC_SET_LIGHT_SENSOR_STATUS_N310 = 3000, - FACTROY_FBC_GET_LIGHT_SENSOR_STATUS_N310 = 3001, - FACTROY_FBC_SET_DREAM_PANEL_STATUS_N310 = 3002, - FACTROY_FBC_GET_DREAM_PANEL_STATUS_N310 = 3003, - SSM_EEPROM_SAVE_ONE_BYTE_N310_N311 = 3004, - SSM_EEPROM_READ_ONE_BYTE_N310_N311 = 3005, - SSM_EEPROM_SAVE_N_BYTES_N310_N311 = 3006, - SSM_EEPROM_READ_N_BYTES_N310_N311 = 3007, - SSM_FLASH_SAVE_ONE_BYTE_N310_N311 = 3008, - SSM_FLASH_READ_ONE_BYTE_N310_N311 = 3009, - SSM_FLASH_SAVE_N_BYTES_N310_N311 = 3010, - SSM_FLASH_READ_N_BYTES_N310_N311 = 3011, - FACTROY_FBC_SET_MULT_PQ_STATUS_N310 = 3012, - FACTROY_FBC_GET_MULT_PQ_STATUS_N310 = 3013, - FACTROY_FBC_SET_MEMC_STATUS_N310 = 3014, - FACTROY_FBC_GET_MEMC_STATUS_N310 = 3015, - FACTROY_FBC_SET_BACKLIGNT_N310 = 3016, - FACTROY_FBC_GET_BACKLIGNT_N310 = 3017, - FACTROY_FBC_SET_COLORTEMP_MODE_N310 = 3018, - FACTROY_FBC_GET_COLORTEMP_MODE_N310 = 3019, - FACTROY_SET_VBYONE_SPREAD_SPECTRUM_N311 = 3020, - FACTROY_GET_VBYONE_SPREAD_SPECTRUM_N311 = 3021, - GET_HISTGRAM_N311 = 3022, - FACTROY_SET_IIC_BUS_ONOFF_N311 = 3023, - FACTROY_GET_IIC_BUS_ONOFF_N311 = 3024, - SET_SPLIT_SCREEN_DEMO_ONOFF_N390 = 3025, - GET_SPLIT_SCREEN_DEMO_ONOFF_N390 = 3026, - FACTROY_FBC_SET_BLUETOOTH_IIS_N310 = 3027, - FACTROY_FBC_GET_BLUETOOTH_IIS_N310 = 3028, - FACTROY_FBC_SET_LED_N310 = 3029, - MISC_SET_2K_TO_4K_SCALE_UP_MODE = 3030, - MISC_GET_2K_TO_4K_SCALE_UP_MODE = 3031, - MISC_SET_FBC_AP_STANDBY_N310 = 3032, - MISC_GET_FBC_AP_STANDBY_N310 = 3033, - MISC_SET_BLUETOOTH_VOL_N311_N310 = 3034, - MISC_GET_BLUETOOTH_VOL_N311_N310 = 3035, - - // 2.4G headset - START_OPEN_HEADSET_DETECT = 4000, - -}; - -#endif //ANDROID_AMLOGIC_TVCMD_H diff --git a/tvapi/android/jni/Android.mk b/tvapi/android/jni/Android.mk deleted file mode 100644 index 1d71943..0000000 --- a/tvapi/android/jni/Android.mk +++ b/dev/null @@ -1,69 +0,0 @@ -LOCAL_PATH:= $(call my-dir) -include $(CLEAR_VARS) - -LOCAL_MODULE_TAGS := optional - -LOCAL_SRC_FILES:= \ - com_droidlogic_app_tv_TvControlManager.cpp -LOCAL_SHARED_LIBRARIES := \ - libcutils \ - libutils \ - libbinder \ - libtvbinder \ - libnativehelper \ - libandroid_runtime \ - liblog \ - libskia - -LOCAL_C_INCLUDES += \ - frameworks/base/core/jni \ - frameworks/base/core/jni/android/graphics \ - frameworks/base/libs/hwui \ - $(LOCAL_PATH)/../ \ - external/skia/include \ - -LOCAL_MODULE:= libtv_jni -LOCAL_PRELINK_MODULE := false -include $(BUILD_SHARED_LIBRARY) - - - - -#cfbc communication jni lib -include $(CLEAR_VARS) -LOCAL_MODULE_TAGS := optional - -LOCAL_C_INCLUDES += \ - frameworks/base/core/jni \ - $(LOCAL_PATH)/../../libtv \ - external/skia/include \ - $(LOCAL_PATH)/../../libtv/tv \ - bionic/libc/include \ - bionic/libc/private \ - system/extras/ext4_utils \ - bionic/libc/include - -LOCAL_SRC_FILES := \ - ../../libtv/tv/CTvLog.cpp \ - ../../libtv/tvutils/CFile.cpp \ - ../../libtv/tvutils/CThread.cpp \ - ../../libtv/tvutils/CMsgQueue.cpp \ - ../../libtv/tvutils/zepoll.cpp \ - ../../libtv/tv/CFbcCommunication.cpp \ - ../../libtv/tvutils/serial_base.cpp \ - ../../libtv/tvutils/CSerialPort.cpp \ - ../../libtv/tvutils/CHdmiCecCmd.cpp \ - cfbc_jni.cpp \ - cfbc_test.cpp - -LOCAL_SHARED_LIBRARIES := \ - libcutils \ - libutils \ - libandroid_runtime \ - liblog \ - libdl - -LOCAL_MODULE:= libcfbc_jni -LOCAL_PRELINK_MODULE := false -#include $(BUILD_EXECUTABLE) -#include $(BUILD_SHARED_LIBRARY) diff --git a/tvapi/android/jni/cfbc_jni.cpp b/tvapi/android/jni/cfbc_jni.cpp deleted file mode 100644 index 7ec7d86..0000000 --- a/tvapi/android/jni/cfbc_jni.cpp +++ b/dev/null @@ -1,167 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <unistd.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <fcntl.h> -#include <assert.h> -#include "jni.h" -#include "JNIHelp.h" -#include "android_runtime/AndroidRuntime.h" -#include "tv/CFbcCommunication.h" - -#define TAG "joey_jni" -#define JNI_DBG(a...) __android_log_print(ANDROID_LOG_INFO, TAG, a) -#define MAX_CNT 128 - -static JNIEnv *jni_local_env = NULL; -static jclass jni_local_clz = NULL; -static jobject jni_local_obj = NULL; -static jmethodID jni_local_mid = NULL; -static JavaVM *m_vm = NULL; -static CFbcCommunication *g_cfbc_handle = NULL; - -JNIEnv *getJNIEnv(bool *needsDetach) -{ - JNIEnv *env = NULL; - jint result = -1; - if (m_vm->GetEnv((void **) &env, JNI_VERSION_1_4) != JNI_OK) { - __android_log_print(ANDROID_LOG_INFO, TAG, "ERROR: GetEnv failed\n"); - - int status = m_vm->AttachCurrentThread(&env, NULL); - if (status < 0) { - __android_log_print(ANDROID_LOG_INFO, TAG, "callback_handler: failed to attach current thread"); - return NULL; - } - - *needsDetach = true; - } - - __android_log_print(ANDROID_LOG_INFO, TAG, "GetEnv Success"); - return env; -} - -void detachJNI() -{ - int result = m_vm->DetachCurrentThread(); - if (result != JNI_OK) { - __android_log_print(ANDROID_LOG_INFO, TAG, "thread detach failed: %#x", result); - } -} - -//this data buf is same as cmd buf -void java_jni_callback(char *str, int cnt, int data_buf[]) -{ - char temp_str[MAX_CNT]; - int idx = 0; - if (str != NULL && cnt > 0) { - memset(temp_str, 0, sizeof(temp_str)); - JNI_DBG("java jni string is:\n%s, cnt:%d.", str, cnt); - //strcpy(temp_str, "Call From C/C++!"); - memcpy(temp_str, str, strlen(str) % MAX_CNT); - - if (NULL != jni_local_obj) { - bool needsDetach = false; - jint j_cnt = data_buf[1]; - jint j_data_buf[MAX_CNT]; - for (idx = 0; idx < j_cnt; idx++) { - idx %= MAX_CNT; - j_data_buf[idx] = data_buf[idx]; - JNI_DBG("java_jni_callback the %d data is:0x%x, %d.", idx, j_data_buf[idx], data_buf[idx]); - } - - //jobject obj; - jni_local_env = getJNIEnv(&needsDetach); - //obj = (*jni_local_env)->NewGlobalRef(jni_local_env,jni_local_obj); - jni_local_clz = jni_local_env->GetObjectClass(jni_local_obj); - //this func name and parameters should be same as the callback defined in java code - jni_local_mid = jni_local_env->GetMethodID(jni_local_clz, "android_java_callback", "(Ljava/lang/String;[I)I"); - - jstring str1 = jni_local_env->NewStringUTF(temp_str); - - jintArray cc_data_arr = jni_local_env->NewIntArray(j_cnt); - jni_local_env->SetIntArrayRegion(cc_data_arr, 0, cnt, j_data_buf); - //jint *temp_data = jni_local_env->GetIntArrayElements(cc_data_arr, NULL); - - jint cnt = jni_local_env->CallIntMethod(jni_local_obj, jni_local_mid, str1, cc_data_arr); - - //jni_local_env->ReleaseIntArrayElements(cc_data_arr, temp_data, 0); - //jni_local_env->ReleaseIntArrayElements(cc_cmd_arr, temp_cmd, 0); - JNI_DBG("%s %d be called.", __FUNCTION__, __LINE__); - - if (needsDetach) { - detachJNI(); - } - } - } -} - -//here we needn't to match the java package name -static jint jni_java_exec_cmd(JNIEnv *env, jobject obj, jintArray cmdArray) -{ - jint *arry = env->GetIntArrayElements(cmdArray, NULL); - jint length = env->GetArrayLength(cmdArray); - - int cmd_cnt = arry[1], idx = 0; - int cmd_array[MAX_CNT]; - memset(cmd_array, 0, sizeof(cmd_array)); - for (idx = 0; idx < cmd_cnt; idx++) - cmd_array[idx] = arry[idx]; - - JNI_DBG("%s %s %d be called.", __FILE__, __FUNCTION__, __LINE__); - - if (g_cfbc_handle == NULL) { - g_cfbc_handle = new CFbcCommunication(); - g_cfbc_handle->run("cfbc_thread", 0, 0); - } - - //g_cfbc_handle->handleCmd(COMM_DEV_CEC, cmd_array); - //c_exec_cmd(cmd_array); - - if (NULL == jni_local_obj) { - jni_local_obj = env->NewGlobalRef(obj); - } - -#if 0 - /* this is used to terminate the jni call if needed - ** and we should handle the pthread we create in c layer - */ - if (cmd_array[0] == 0x1002) { - if (NULL != jni_local_obj) - env->DeleteGlobalRef(jni_local_obj); - } -#endif - return 0; -} - -//the name of 'exec_cmd' should be same as the native func in java code -static JNINativeMethod gMethods[] = { - {"exec_cmd", "([I)I", (void *)jni_java_exec_cmd}, -}; - -static int register_android_MyFunc(JNIEnv *env) -{ - JNI_DBG("%s %s %d be called.", __FILE__, __FUNCTION__, __LINE__); - //the name below should be same as the class name in which native method declared in Java layer - return android::AndroidRuntime::registerNativeMethods(env, "com/fbc/MyFunc", gMethods, NELEM(gMethods)); -} - -jint JNI_OnLoad(JavaVM *vm, void *reserved) -{ - JNIEnv *env = NULL; - JNI_DBG("%s %s %d be called.", __FILE__, __FUNCTION__, __LINE__); - //c_set_callback(&java_jni_callback); - if (vm->GetEnv((void **)&env, JNI_VERSION_1_4) != JNI_OK) { - JNI_DBG("Error GetEnv\n"); - return -1; - } - - assert(env != NULL); - if (register_android_MyFunc(env) < 0) { - JNI_DBG("register_android_test_hdi error.\n"); - return -1; - } - - m_vm = vm; - return JNI_VERSION_1_4; -} diff --git a/tvapi/android/jni/cfbc_test.cpp b/tvapi/android/jni/cfbc_test.cpp deleted file mode 100644 index ecba2e6..0000000 --- a/tvapi/android/jni/cfbc_test.cpp +++ b/dev/null @@ -1,43 +0,0 @@ -#include "stdlib.h" -#include "stdio.h" -#include "tv/CFbcCommunication.h" - -int main(int argc, char **argv) -{ - int idx = 0, send_buf[128], recv_buf[128], cmd_value = 1, run_flag = 0, run_cnt = 0, cmd_type = 0, read_flag = 0; - printf("run begin.......\n"); - if (argc < 4) { - printf("usage:./libcfbc_jni cmd_type cmd_value run_cnt(all hex mode)\n"); - return 0; - } - - cmd_type = strtol(argv[1], NULL, 16); - cmd_value = strtol(argv[2], NULL, 16); - run_cnt = strtol(argv[3], NULL, 16); - - CFbcCommunication *cfbcHandle = new CFbcCommunication(); - printf("to test.......\n"); - cfbcHandle->run(); - sleep(0.2); - - switch (cmd_type) { - default: - for (idx = 0; idx < run_cnt; idx++) { - memset(send_buf, 0, sizeof(send_buf)); - memset(recv_buf, 0, sizeof(recv_buf)); - send_buf[0] = cmd_type; - send_buf[1] = 3; - send_buf[2] = cmd_value; - printf("\n\n======%d to set value is:0x%02x\n", idx, cmd_value); - cfbcHandle->handleCmd(COMM_DEV_SERIAL, send_buf, recv_buf); - sleep(1); - } - break; - } - - printf("wait to exit......\n"); - cfbcHandle->requestExitAndWait(); - delete cfbcHandle; - printf("program exited\n"); - return 0; -} diff --git a/tvapi/android/jni/com_droidlogic_app_tv_TvControlManager.cpp b/tvapi/android/jni/com_droidlogic_app_tv_TvControlManager.cpp deleted file mode 100644 index 0cc30df..0000000 --- a/tvapi/android/jni/com_droidlogic_app_tv_TvControlManager.cpp +++ b/dev/null @@ -1,469 +0,0 @@ -#define LOG_TAG "Tv-JNI" -#include <utils/Log.h> - -#include "../include/tvcmd.h" -#include "jni.h" -#include "JNIHelp.h" -#include "GraphicsJNI.h" -#include "android_runtime/AndroidRuntime.h" -#include <utils/Vector.h> -#include <include/TvClient.h> -#include <binder/IMemory.h> -#include <binder/Parcel.h> -#include <binder/MemoryHeapBase.h> -#include <binder/MemoryBase.h> -#include <core/SkBitmap.h> -#include "android_util_Binder.h" -#include "android_os_Parcel.h" -using namespace android; - -struct fields_t { - jfieldID context; - jmethodID post_event; -}; - -static fields_t fields; -static Mutex sLock; -class JNITvContext: public TvListener { -public: - JNITvContext(JNIEnv *env, jobject weak_this, jclass clazz, const sp<TvClient> &tv); - ~JNITvContext() - { - release(); - } - virtual void notify(int32_t msgType, const Parcel &p); - void addCallbackBuffer(JNIEnv *env, jbyteArray cbb); - sp<TvClient> getTv() - { - Mutex::Autolock _l(mLock); - return mTv; - } - void release(); - Parcel *mExtParcel; - SkBitmap *pSubBmp;//for UI subtitle Bitmap - sp<MemoryBase> mSubMemBase;//for subtitle shar memory to tvapi -private: - jobject mTvJObjectWeak; // weak reference to java object - jclass mTvJClass; // strong reference to java class - sp<TvClient> mTv; // strong reference to native object - Mutex mLock; - - Vector<jbyteArray> mCallbackBuffers; // Global reference application managed byte[] - bool mManualBufferMode; // Whether to use application managed buffers. - bool mManualTvCallbackSet; // Whether the callback has been set, used to reduce unnecessary calls to set the callback. -}; - -sp<TvClient> get_native_tv(JNIEnv *env, jobject thiz, JNITvContext **pContext) -{ - sp<TvClient> tv; - Mutex::Autolock _l(sLock); - JNITvContext *context = reinterpret_cast<JNITvContext *>(env->GetIntField(thiz, fields.context)); - if (context != NULL) { - tv = context->getTv(); - } - if (tv == 0) { - jniThrowException(env, "java/lang/RuntimeException", "Method called after release()"); - } - - if (pContext != NULL) *pContext = context; - return tv; -} - -JNITvContext::JNITvContext(JNIEnv *env, jobject weak_this, jclass clazz, const sp<TvClient> &tv) -{ - mTvJObjectWeak = env->NewGlobalRef(weak_this); - mTvJClass = (jclass)env->NewGlobalRef(clazz); - mTv = tv; - ALOGD("tvjni----------------------JNITvContext::JNITvContext("); - mManualBufferMode = false; - mManualTvCallbackSet = false; - pSubBmp = NULL; - mSubMemBase = NULL; - //mExtParcel = parcelForJavaObject(env, ext_parcel); -} - -void JNITvContext::release() -{ - ALOGD("release"); - Mutex::Autolock _l(mLock); - JNIEnv *env = AndroidRuntime::getJNIEnv(); - - if (mTvJObjectWeak != NULL) { - env->DeleteGlobalRef(mTvJObjectWeak); - mTvJObjectWeak = NULL; - } - if (mTvJClass != NULL) { - env->DeleteGlobalRef(mTvJClass); - mTvJClass = NULL; - } - if (pSubBmp != NULL) { - pSubBmp = NULL; - } - mTv.clear(); -} - -// connect to tv service -static void com_droidlogic_app_tv_TvControlManager_native_setup(JNIEnv *env, jobject thiz, jobject weak_this) -{ - sp<TvClient> tv = TvClient::connect(); - - ALOGD("com_droidlogic_app_tv_TvControlManager_native_setup."); - - if (tv == NULL) { - jniThrowException(env, "java/lang/RuntimeException", "Fail to connect to tv service"); - return; - } - - // make sure tv amlogic is alive - if (tv->getStatus() != NO_ERROR) { - jniThrowException(env, "java/lang/RuntimeException", "Tv initialization failed!"); - return; - } - - jclass clazz = env->GetObjectClass(thiz); - if (clazz == NULL) { - jniThrowException(env, "java/lang/RuntimeException", "Can't find com/droidlogic/app/tv/TvControlManager!"); - return; - } - - sp<JNITvContext> context = new JNITvContext(env, weak_this, clazz, tv); - context->incStrong(thiz); - tv->setListener(context); - - env->SetIntField(thiz, fields.context, (int)context.get()); -} - - -static void com_droidlogic_app_tv_TvControlManager_release(JNIEnv *env, jobject thiz) -{ - // TODO: Change to LOGE - JNITvContext *context = NULL; - sp<TvClient> tv; - { - Mutex::Autolock _l(sLock); - context = reinterpret_cast<JNITvContext *>(env->GetIntField(thiz, fields.context)); - - // Make sure we do not attempt to callback on a deleted Java object. - env->SetIntField(thiz, fields.context, 0); - } - - ALOGD("release tv"); - - // clean up if release has not been called before - if (context != NULL) { - tv = context->getTv(); - context->release(); - ALOGD("native_release: context=%p tv=%p", context, tv.get()); - - // clear callbacks - if (tv != NULL) { - //tv->setPreviewCallbackFlags(FRAME_CALLBACK_FLAG_NOOP); - tv->disconnect(); - } - - // remove context to prevent further Java access - context->decStrong(thiz); - } -} - -void JNITvContext::notify(int32_t msgType, const Parcel &p) -{ - // VM pointer will be NULL if object is released - Mutex::Autolock _l(mLock); - if (mTvJObjectWeak == NULL) { - ALOGW("callback on dead tv object"); - return; - } - if (msgType == SUBTITLE_UPDATE_CALLBACK) { - if (pSubBmp) { - SkAutoLockPixels alp(*pSubBmp); - char *pDst = (char *) pSubBmp->getPixels(); - char *pBuf = (char *) mSubMemBase->pointer(); - for (int i = 0; i < pSubBmp->width() * pSubBmp->height() * 4; i++) { - pDst[i] = pBuf[i]; - } - pSubBmp->notifyPixelsChanged(); - } - } - - JNIEnv *env = AndroidRuntime::getJNIEnv(); - - jobject jParcel = createJavaParcelObject(env); - if (jParcel != NULL) { - Parcel *nativeParcel = parcelForJavaObject(env, jParcel); - nativeParcel->write(p.data(), p.dataSize()); - env->CallStaticVoidMethod(mTvJClass, fields.post_event, mTvJObjectWeak, msgType, jParcel); - env->DeleteLocalRef(jParcel); - } -} - - -void JNITvContext::addCallbackBuffer(JNIEnv *env, jbyteArray cbb) -{ - if (cbb != NULL) { - Mutex::Autolock _l(mLock); - jbyteArray callbackBuffer = (jbyteArray)env->NewGlobalRef(cbb); - mCallbackBuffers.push(cbb); - ALOGD("Adding callback buffer to queue, %d total", mCallbackBuffers.size()); - } else { - ALOGE("Null byte array!"); - } -} - -static jint com_droidlogic_app_tv_TvControlManager_processCmd(JNIEnv *env, jobject thiz, jobject pObj, jobject rObj) -{ - sp<TvClient> tv = get_native_tv(env, thiz, NULL); - if (tv == 0) return -1; - - Parcel *p = parcelForJavaObject(env, pObj); - //jclass clazz; - //clazz = env->FindClass("android/os/Parcel"); - //LOG_FATAL_IF(clazz == NULL, "Unable to find class android.os.Parcel"); - - - //jmethodID mConstructor = env->GetMethodID(clazz, "<init>", "(I)V"); - //jobject replayobj = env->NewObject(clazz, mConstructor, 0); - Parcel *r = parcelForJavaObject(env, rObj); - - - return tv->processCmd(*p, r); - //if ( != NO_ERROR) { - // jniThrowException(env, "java/lang/RuntimeException", "StartTv failed"); - // return -1; - // } - //return 0; -} - -static void com_droidlogic_app_tv_TvControlManager_addCallbackBuffer(JNIEnv *env, jobject thiz, jbyteArray bytes) -{ - JNITvContext *context = reinterpret_cast<JNITvContext *>(env->GetIntField(thiz, fields.context)); - - ALOGD("addCallbackBuffer"); - if (context != NULL) { - context->addCallbackBuffer(env, bytes); - } -} - -static void com_droidlogic_app_tv_TvControlManager_reconnect(JNIEnv *env, jobject thiz) -{ - sp<TvClient> tv = get_native_tv(env, thiz, NULL); - if (tv == 0) return; - - if (tv->reconnect() != NO_ERROR) { - jniThrowException(env, "java/io/IOException", "reconnect failed"); - return; - } -} - -static void com_droidlogic_app_tv_TvControlManager_lock(JNIEnv *env, jobject thiz) -{ - sp<TvClient> tv = get_native_tv(env, thiz, NULL); - if (tv == 0) return; - - ALOGD("lock"); - - if (tv->lock() != NO_ERROR) { - jniThrowException(env, "java/lang/RuntimeException", "lock failed"); - } -} - -static void com_droidlogic_app_tv_TvControlManager_unlock(JNIEnv *env, jobject thiz) -{ - sp<TvClient> tv = get_native_tv(env, thiz, NULL); - if (tv == 0) return; - - ALOGD("unlock"); - - if (tv->unlock() != NO_ERROR) { - jniThrowException(env, "java/lang/RuntimeException", "unlock failed"); - } -} - -static void com_droidlogic_app_tv_TvControlManager_create_subtitle_bitmap(JNIEnv *env, jobject thiz, jobject bmpobj) -{ - ALOGD("create subtitle bmp"); - JNITvContext *context = reinterpret_cast<JNITvContext *>(env->GetIntField(thiz, fields.context)); - sp<TvClient> tv = get_native_tv(env, thiz, NULL); - if (tv == 0) return; - - //get skbitmap - jclass bmp_clazz; - jfieldID skbmp_fid; - jint hbmp; - bmp_clazz = env->FindClass("android/graphics/Bitmap"); - skbmp_fid = env->GetFieldID(bmp_clazz, "mNativeBitmap", "I"); - hbmp = env->GetIntField(bmpobj, skbmp_fid); - context->pSubBmp = reinterpret_cast<SkBitmap *>(hbmp); - env->DeleteLocalRef(bmp_clazz); - - //alloc share mem - sp<MemoryHeapBase> MemHeap = new MemoryHeapBase(context->pSubBmp->width()*context->pSubBmp->height() * 4, 0, "subtitle bmp"); - ALOGD("heap id = %d", MemHeap->getHeapID()); - if (MemHeap->getHeapID() < 0) { - return; - } - context->pSubBmp->lockPixels(); - context->mSubMemBase = new MemoryBase(MemHeap, 0, context->pSubBmp->width()*context->pSubBmp->height() * 4); - - - //send share mem to server - tv->createSubtitle(context->mSubMemBase); - return; -} - -static void com_droidlogic_app_tv_TvControlManager_create_video_frame_bitmap(JNIEnv *env, jobject thiz, jobject bmpobj, jint inputSourceMode, jint iCapVideoLayer ) -{ - ALOGD("create video frame bmp"); - sp<TvClient> tv = get_native_tv(env, thiz, NULL); - if (tv == 0) return; - - //get skbitmap - jclass bmp_clazz; - jfieldID skbmp_fid; - jint hbmp; - bmp_clazz = env->FindClass("android/graphics/Bitmap"); - skbmp_fid = env->GetFieldID(bmp_clazz, "mNativeBitmap", "I"); - hbmp = env->GetIntField(bmpobj, skbmp_fid); - SkBitmap *pSkBmp = reinterpret_cast<SkBitmap *>(hbmp); - ALOGD("pSkBmp = %d", hbmp); - ALOGD("bmp width = %d height = %d", pSkBmp->width(), pSkBmp->height()); - env->DeleteLocalRef(bmp_clazz); - - //alloc share mem - sp<MemoryHeapBase> MemHeap = new MemoryHeapBase(1920 * 1080 * 4, 0, "video frame bmp"); - ALOGD("heap id = %d", MemHeap->getHeapID()); - if (MemHeap->getHeapID() < 0) { - return; - } - sp<MemoryBase> MemBase = new MemoryBase(MemHeap, 0, 1920 * 1080 * 4); - pSkBmp->setPixels(MemBase->pointer()); - - - //send share mem to server - tv->createVideoFrame(MemBase, inputSourceMode, iCapVideoLayer); - return; -} - -//------------------------------------------------- - -static JNINativeMethod camMethods[] = { - { - "native_setup", - "(Ljava/lang/Object;)V", - (void *)com_droidlogic_app_tv_TvControlManager_native_setup - }, - { - "native_release", - "()V", - (void *)com_droidlogic_app_tv_TvControlManager_release - }, - { - "processCmd", - "(Landroid/os/Parcel;Landroid/os/Parcel;)I", - (void *)com_droidlogic_app_tv_TvControlManager_processCmd - }, - { - "addCallbackBuffer", - "([B)V", - (void *)com_droidlogic_app_tv_TvControlManager_addCallbackBuffer - }, - { - "reconnect", - "()V", - (void *)com_droidlogic_app_tv_TvControlManager_reconnect - }, - { - "lock", - "()V", - (void *)com_droidlogic_app_tv_TvControlManager_lock - }, - { - "unlock", - "()V", - (void *)com_droidlogic_app_tv_TvControlManager_unlock - }, - { - "native_create_subtitle_bitmap", - "(Ljava/lang/Object;)V", - (void *)com_droidlogic_app_tv_TvControlManager_create_subtitle_bitmap - }, - { - "native_create_video_frame_bitmap", - "(Ljava/lang/Object;)V", - (void *)com_droidlogic_app_tv_TvControlManager_create_video_frame_bitmap - }, - -}; - -struct field { - const char *class_name; - const char *field_name; - const char *field_type; - jfieldID *jfield; -}; - -static int find_fields(JNIEnv *env, field *fields, int count) -{ - for (int i = 0; i < count; i++) { - field *f = &fields[i]; - jclass clazz = env->FindClass(f->class_name); - if (clazz == NULL) { - ALOGE("Can't find %s", f->class_name); - return -1; - } - - jfieldID field = env->GetFieldID(clazz, f->field_name, f->field_type); - if (field == NULL) { - ALOGE("Can't find %s.%s", f->class_name, f->field_name); - return -1; - } - - *(f->jfield) = field; - } - - return 0; -} - -// Get all the required offsets in java class and register native functions -int register_com_droidlogic_app_tv_TvControlManager(JNIEnv *env) -{ - field fields_to_find[] = { - { "com/droidlogic/app/tv/TvControlManager", "mNativeContext", "I", &fields.context } - }; - - ALOGD("register_com_droidlogic_app_tv_TvControlManager."); - - if (find_fields(env, fields_to_find, NELEM(fields_to_find)) < 0) - return -1; - - jclass clazz = env->FindClass("com/droidlogic/app/tv/TvControlManager"); - fields.post_event = env->GetStaticMethodID(clazz, "postEventFromNative", "(Ljava/lang/Object;ILandroid/os/Parcel;)V"); - if (fields.post_event == NULL) { - ALOGE("Can't find com/droidlogic/app/tv/TvControlManager.postEventFromNative"); - return -1; - } - - // Register native functions - return AndroidRuntime::registerNativeMethods(env, "com/droidlogic/app/tv/TvControlManager", camMethods, NELEM(camMethods)); -} - - -jint JNI_OnLoad(JavaVM *vm, void *reserved __unused) -{ - JNIEnv *env = NULL; - jint result = -1; - - if (vm->GetEnv((void **) &env, JNI_VERSION_1_4) != JNI_OK) { - ALOGE("ERROR: GetEnv failed\n"); - goto bail; - } - assert(env != NULL); - - register_com_droidlogic_app_tv_TvControlManager(env); - - /* success -- return valid version number */ - result = JNI_VERSION_1_4; -bail: - return result; -} - diff --git a/tvapi/android/libtvbinder/Android.mk b/tvapi/android/libtvbinder/Android.mk deleted file mode 100644 index b1b7517..0000000 --- a/tvapi/android/libtvbinder/Android.mk +++ b/dev/null @@ -1,24 +0,0 @@ -LOCAL_PATH:= $(call my-dir) -include $(CLEAR_VARS) - -LOCAL_MODULE_TAGS := optional - -LOCAL_SRC_FILES:= \ - TvClient.cpp \ - ITv.cpp \ - ITvClient.cpp \ - ITvService.cpp - -LOCAL_SHARED_LIBRARIES := \ - libcutils \ - libutils \ - libbinder \ - libui - -LOCAL_MODULE:= libtvbinder - -LOCAL_C_INCLUDES += \ - $(LOCAL_PATH)/../ - -LOCAL_PRELINK_MODULE := false -include $(BUILD_SHARED_LIBRARY) diff --git a/tvapi/android/libtvbinder/ITv.cpp b/tvapi/android/libtvbinder/ITv.cpp deleted file mode 100644 index 5988713..0000000 --- a/tvapi/android/libtvbinder/ITv.cpp +++ b/dev/null @@ -1,148 +0,0 @@ -//#define LOG_NDEBUG 0 -#define LOG_TAG "ITv" -#include <utils/Log.h> -#include <stdint.h> -#include <sys/types.h> -#include <binder/Parcel.h> -#include <include/ITv.h> - -enum { - DISCONNECT = IBinder::FIRST_CALL_TRANSACTION, - START_PREVIEW, - SEND_COMMAND, - CONNECT, - LOCK, - UNLOCK, - TV_CMD, - TV_CREATE_SUBTITLE, - TV_CREATE_VIDEO_FRAME, -}; - -class BpTv: public BpInterface<ITv> { -public: - BpTv(const sp<IBinder> &impl) - : BpInterface<ITv>(impl) - { - } - - // disconnect from tv service - void disconnect() - { - Parcel data, reply; - data.writeInterfaceToken(ITv::getInterfaceDescriptor()); - remote()->transact(DISCONNECT, data, &reply); - } - - status_t processCmd(const Parcel &p, Parcel *r) - { - Parcel data, reply; - data.writeInterfaceToken(ITv::getInterfaceDescriptor()); - data.write(p.data(), p.dataSize()); - remote()->transact(TV_CMD, data, &reply); - r->write(reply.data(), reply.dataSize()); - r->setDataPosition(0); - return 0; - } - - virtual status_t createVideoFrame(const sp<IMemory> &share_mem, int iSourceMode, int iCapVideoLayerOnly) - { - Parcel data, reply; - data.writeInterfaceToken(ITv::getInterfaceDescriptor()); - data.writeStrongBinder(IInterface::asBinder(share_mem)); - data.writeInt32(iSourceMode); - data.writeInt32(iCapVideoLayerOnly); - remote()->transact(TV_CREATE_VIDEO_FRAME, data, &reply); - return reply.readInt32(); - } - - virtual status_t createSubtitle(const sp<IMemory> &share_mem) - { - Parcel data, reply; - data.writeInterfaceToken(ITv::getInterfaceDescriptor()); - data.writeStrongBinder(IInterface::asBinder(share_mem)); - remote()->transact(TV_CREATE_SUBTITLE, data, &reply); - return reply.readInt32(); - } - virtual status_t connect(const sp<ITvClient> &tvClient) - { - Parcel data, reply; - data.writeInterfaceToken(ITv::getInterfaceDescriptor()); - data.writeStrongBinder(IInterface::asBinder(tvClient)); - remote()->transact(CONNECT, data, &reply); - return reply.readInt32(); - } - virtual status_t lock() - { - Parcel data, reply; - data.writeInterfaceToken(ITv::getInterfaceDescriptor()); - remote()->transact(LOCK, data, &reply); - return reply.readInt32(); - } - virtual status_t unlock() - { - Parcel data, reply; - data.writeInterfaceToken(ITv::getInterfaceDescriptor()); - remote()->transact(UNLOCK, data, &reply); - return reply.readInt32(); - } -}; - -IMPLEMENT_META_INTERFACE(Tv, "android.amlogic.ITv"); - -status_t BnTv::onTransact( - uint32_t code, const Parcel &data, Parcel *reply, uint32_t flags) -{ - switch (code) { - case DISCONNECT: { - CHECK_INTERFACE(ITv, data, reply); - disconnect(); - return NO_ERROR; - } - break; - case CONNECT: { - CHECK_INTERFACE(ITv, data, reply); - sp<ITvClient> tvClient = interface_cast<ITvClient>(data.readStrongBinder()); - reply->writeInt32(connect(tvClient)); - return NO_ERROR; - } - break; - case LOCK: { - CHECK_INTERFACE(ITv, data, reply); - reply->writeInt32(lock()); - return NO_ERROR; - } - break; - case UNLOCK: { - CHECK_INTERFACE(ITv, data, reply); - reply->writeInt32(unlock()); - return NO_ERROR; - } - break; - case TV_CMD: { - CHECK_INTERFACE(ITv, data, reply); - processCmd(data, reply); - //reply->write(tmp.data(), tmp.dataSize()); - return NO_ERROR; - } - case TV_CREATE_SUBTITLE: { - CHECK_INTERFACE(ITv, data, reply); - sp<IMemory> buffer = interface_cast<IMemory>(data.readStrongBinder()); - createSubtitle(buffer); - //reply->write(tmp.data(), tmp.dataSize()); - return NO_ERROR; - } - case TV_CREATE_VIDEO_FRAME: { - CHECK_INTERFACE(ITv, data, reply); - sp<IMemory> buffer = interface_cast<IMemory>(data.readStrongBinder()); - int srcMode = data.readInt32(); - int capVideoLayerOnly = data.readInt32(); - createVideoFrame(buffer, srcMode, capVideoLayerOnly); - //reply->write(tmp.data(), tmp.dataSize()); - return NO_ERROR; - } - break; - default: - return BBinder::onTransact(code, data, reply, flags); - } -} - diff --git a/tvapi/android/libtvbinder/ITvClient.cpp b/tvapi/android/libtvbinder/ITvClient.cpp deleted file mode 100644 index 0c450af..0000000 --- a/tvapi/android/libtvbinder/ITvClient.cpp +++ b/dev/null @@ -1,58 +0,0 @@ -#define LOG_TAG "ITvClient" -#include <utils/Log.h> -#include <stdint.h> -#include <sys/types.h> -#include <include/ITvClient.h> -#include "../include/tvcmd.h" -enum { - NOTIFY_CALLBACK = IBinder::FIRST_CALL_TRANSACTION, -}; - -class BpTvClient: public BpInterface<ITvClient> { -public: - BpTvClient(const sp<IBinder> &impl) : - BpInterface<ITvClient> (impl) - { - } - - // generic callback from tv service to app - void notifyCallback(int32_t msgType, const Parcel &p) - { - ALOGV("BpTvClient notifyCallback datasize = %d pos = %d", p.dataSize(), p.dataPosition()); - Parcel data, reply; - data.writeInterfaceToken(ITvClient::getInterfaceDescriptor()); - data.writeInt32(msgType); - data.write(p.data(), p.dataSize()); - remote()->transact(NOTIFY_CALLBACK, data, &reply, IBinder::FLAG_ONEWAY); - } -}; - -IMPLEMENT_META_INTERFACE(TvClient, "android.amlogic.ITvClient"); - -// ---------------------------------------------------------------------- -status_t BnTvClient::onTransact(uint32_t code, const Parcel &data, Parcel *reply, uint32_t flags) -{ - int i = 0, loop_count = 0; - - switch (code) { - case NOTIFY_CALLBACK: { - CHECK_INTERFACE(ITvClient, data, reply); - Parcel ext; - int32_t msgType = data.readInt32(); - - ext.appendFrom(const_cast<Parcel *>(&data), data.dataPosition(), data.dataAvail()); - - - switch (msgType) { - default: - ALOGE("BnTvClient::onTransact NOTIFY_CALLBACK msg type ----= %d", msgType); - break; - } - notifyCallback(msgType, ext); - return NO_ERROR; - } - break; - default: - return BBinder::onTransact(code, data, reply, flags); - } -} diff --git a/tvapi/android/libtvbinder/ITvService.cpp b/tvapi/android/libtvbinder/ITvService.cpp deleted file mode 100644 index a60b032..0000000 --- a/tvapi/android/libtvbinder/ITvService.cpp +++ b/dev/null @@ -1,50 +0,0 @@ - -#include <stdint.h> -#include <sys/types.h> -#include <utils/Log.h> -#include <binder/Parcel.h> -#include <binder/IPCThreadState.h> -#include <binder/IServiceManager.h> - -#include <include/ITvService.h> - -class BpTvService: public BpInterface<ITvService> { -public: - BpTvService(const sp<IBinder> &impl) - : BpInterface<ITvService>(impl) - { - } - - // connect to tv service - virtual sp<ITv> connect(const sp<ITvClient> &tvClient) - { - Parcel data, reply; - data.writeInterfaceToken(ITvService::getInterfaceDescriptor()); - data.writeStrongBinder(IInterface::asBinder(tvClient)); - remote()->transact(BnTvService::CONNECT, data, &reply); - return interface_cast<ITv>(reply.readStrongBinder()); - } -}; - -IMPLEMENT_META_INTERFACE(TvService, "android.amlogic.ITvService"); - -// ---------------------------------------------------------------------- - -status_t BnTvService::onTransact( - uint32_t code, const Parcel &data, Parcel *reply, uint32_t flags) -{ - switch (code) { - case CONNECT: { - CHECK_INTERFACE(ITvService, data, reply); - sp<ITvClient> tvClient = interface_cast<ITvClient>(data.readStrongBinder()); - sp<ITv> tv = connect(tvClient); - ALOGD("BnTvService::onTransact( sp<ITv> tv = connect(tvClient);"); - reply->writeStrongBinder(IInterface::asBinder(tv)); - return NO_ERROR; - } - break; - default: - return BBinder::onTransact(code, data, reply, flags); - } -} - diff --git a/tvapi/android/libtvbinder/TvClient.cpp b/tvapi/android/libtvbinder/TvClient.cpp deleted file mode 100644 index 5babae8..0000000 --- a/tvapi/android/libtvbinder/TvClient.cpp +++ b/dev/null @@ -1,186 +0,0 @@ -#define LOG_TAG "TvClient" -#include <utils/Log.h> -#include <utils/threads.h> -#include <signal.h> -#include <binder/IServiceManager.h> -#include <binder/IMemory.h> - -#include <include/TvClient.h> -#include <include/ITvService.h> - -// client singleton for tv service binder interface -Mutex TvClient::mLock; -sp<ITvService> TvClient::mTvService; -sp<TvClient::DeathNotifier> TvClient::mDeathNotifier; - -// establish binder interface to tv service -const sp<ITvService> &TvClient::getTvService() -{ - Mutex::Autolock _l(mLock); - if (mTvService.get() == 0) { - sp<IServiceManager> sm = defaultServiceManager(); - sp<IBinder> binder; - do { - binder = sm->getService(String16("aml.tvserver")); - if (binder != 0) - break; - ALOGW("TvService not published, waiting..."); - usleep(500000); // 0.5 s - } while (true); - if (mDeathNotifier == NULL) { - mDeathNotifier = new DeathNotifier(); - } - binder->linkToDeath(mDeathNotifier); - mTvService = interface_cast<ITvService>(binder); - } - ALOGE_IF(mTvService == 0, "no TvService!?"); - return mTvService; -} - -TvClient::TvClient() -{ - init(); -} - -// construct a tv client from an existing tv remote -sp<TvClient> TvClient::create(const sp<ITv> &tv) -{ - ALOGD("create"); - if (tv == 0) { - ALOGE("tv remote is a NULL pointer"); - return 0; - } - - sp<TvClient> c = new TvClient(); - if (tv->connect(c) == NO_ERROR) { - c->mStatus = NO_ERROR; - c->mTv = tv; - IInterface::asBinder(tv)->linkToDeath(c); - } - return c; -} - -void TvClient::init() -{ - mStatus = UNKNOWN_ERROR; -} - -TvClient::~TvClient() -{ - disconnect(); -} - -sp<TvClient> TvClient::connect() -{ - ALOGD("Tv::connect------------------------------------------"); - sp<TvClient> c = new TvClient(); - const sp<ITvService> &cs = getTvService(); - if (cs != 0) { - c->mTv = cs->connect(c); - } - if (c->mTv != 0) { - IInterface::asBinder(c->mTv)->linkToDeath(c); - c->mStatus = NO_ERROR; - } else { - c.clear(); - } - return c; -} - -void TvClient::disconnect() -{ - ALOGD("disconnect"); - if (mTv != 0) { - mTv->disconnect(); - IInterface::asBinder(mTv)->unlinkToDeath(this); - mTv = 0; - } -} - -status_t TvClient::reconnect() -{ - ALOGD("reconnect"); - sp <ITv> c = mTv; - if (c == 0) return NO_INIT; - return c->connect(this); -} - -sp<ITv> TvClient::remote() -{ - return mTv; -} - -status_t TvClient::lock() -{ - sp <ITv> c = mTv; - if (c == 0) return NO_INIT; - return c->lock(); -} - -status_t TvClient::unlock() -{ - sp <ITv> c = mTv; - if (c == 0) return NO_INIT; - return c->unlock(); -} - -status_t TvClient::processCmd(const Parcel &p, Parcel *r) -{ - sp <ITv> c = mTv; - if (c == 0) return NO_INIT; - return c->processCmd(p, r); -} - -status_t TvClient::createSubtitle(const sp<IMemory> &share_mem) -{ - sp <ITv> c = mTv; - if (c == 0) return NO_INIT; - return c->createSubtitle(share_mem); -} - -status_t TvClient::createVideoFrame(const sp<IMemory> &share_mem, int iSourceMode, int iCapVideoLayerOnly) -{ - sp <ITv> c = mTv; - if (c == 0) return NO_INIT; - return c->createVideoFrame(share_mem, iSourceMode, iCapVideoLayerOnly); -} - -void TvClient::setListener(const sp<TvListener> &listener) -{ - ALOGD("tv------------Tv::setListener"); - Mutex::Autolock _l(mLock); - mListener = listener; -} - -// callback from tv service -void TvClient::notifyCallback(int32_t msgType, const Parcel &p) -{ - int size = p.dataSize(); - int pos = p.dataPosition(); - p.setDataPosition(0); - sp<TvListener> listener; - { - Mutex::Autolock _l(mLock); - listener = mListener; - } - if (listener != NULL) { - listener->notify(msgType, p); - } -} - -void TvClient::binderDied(const wp<IBinder> &who __unused) -{ - ALOGW("ITv died"); - //notifyCallback(1, 2, 0); -} - -void TvClient::DeathNotifier::binderDied(const wp<IBinder> &who __unused) -{ - ALOGW("-----------------binderDied"); - Mutex::Autolock _l(TvClient::mLock); - TvClient::mTvService.clear(); - ALOGW("kill myself"); - kill(getpid(), SIGKILL); - ALOGW("----------------Tv server died!"); -} - diff --git a/tvapi/android/tv/Android.mk b/tvapi/android/tv/Android.mk deleted file mode 100644 index dcadd57..0000000 --- a/tvapi/android/tv/Android.mk +++ b/dev/null @@ -1,23 +0,0 @@ -LOCAL_PATH:= $(call my-dir) -include $(CLEAR_VARS) - -LOCAL_MODULE_TAGS := optional - -LOCAL_SRC_FILES:= \ - TvPlay.cpp \ - -LOCAL_SHARED_LIBRARIES := \ - libcutils \ - libutils \ - libtvbinder \ - libbinder \ - libui \ - - -LOCAL_MODULE:= libtvplay - -LOCAL_C_INCLUDES += \ - $(LOCAL_PATH)/../ - -LOCAL_PRELINK_MODULE := false -include $(BUILD_SHARED_LIBRARY) diff --git a/tvapi/android/tvserver/Android.mk b/tvapi/android/tvserver/Android.mk deleted file mode 100644 index 7f9e5f1..0000000 --- a/tvapi/android/tvserver/Android.mk +++ b/dev/null @@ -1,83 +0,0 @@ -LOCAL_PATH:= $(call my-dir) - - -DVB_PATH := $(wildcard external/dvb) - -ifeq ($(DVB_PATH), ) - DVB_PATH := $(wildcard vendor/amlogic/dvb) -endif - -AM_LIBPLAYER_PATH := $(wildcard vendor/amlogic/frameworks/av/LibPlayer) -LIB_ZVBI_PATH := $(wildcard external/libzvbi) -LIB_SQLITE_PATH := $(wildcard external/sqlite) - - -#tvserver -include $(CLEAR_VARS) - - - -LOCAL_MODULE_TAGS := optional - -LOCAL_SRC_FILES:= \ - main.cpp \ - TvService.cpp - -LOCAL_SHARED_LIBRARIES := \ - libtv - -LOCAL_SHARED_LIBRARIES += \ - libui \ - libutils \ - libbinder \ - libcutils \ - libsqlite \ - libmedia \ - libtvbinder \ - libhardware_legacy \ - libdl \ - libskia \ - libtinyxml - -LOCAL_SHARED_LIBRARIES += \ - libzvbi \ - libntsc_decode \ - libam_mw \ - libam_adp \ - libam_ver - -LOCAL_C_INCLUDES := \ - $(LOCAL_PATH)/../../libtv \ - $(LOCAL_PATH)/../ \ - $(LOCAL_PATH)/../../libtv/tvdb \ - $(LOCAL_PATH)/../../libtv/tv \ - $(LOCAL_PATH)/../../libtv/include \ - $(LOCAL_PATH)/../../build/include \ - -LOCAL_C_INCLUDES += \ - bionic/libc/include \ - bionic/libc/private \ - system/extras/ext4_utils \ - $(LOCAL_PATH)/../ \ - $(LIB_SQLITE_PATH)/dist \ - system/media/audio_effects/include - - -LOCAL_C_INCLUDES += \ - $(LIB_ZVBI_PATH)/ntsc_decode/include \ - $(LIB_ZVBI_PATH)/ntsc_decode/include/ntsc_dmx \ - $(LIB_ZVBI_PATH)/src \ - $(DVB_PATH)/include/am_adp \ - $(DVB_PATH)/include/am_mw \ - $(DVB_PATH)/include/am_ver \ - $(DVB_PATH)/android/ndk/include \ - $(AM_LIBPLAYER_PATH)/amadec/include \ - $(AM_LIBPLAYER_PATH)/amcodec/include \ - $(AM_LIBPLAYER_PATH)/amffmpeg \ - $(AM_LIBPLAYER_PATH)/amplayer -LOCAL_C_INCLUDES += hardware/amlogic/audio/libTVaudio -LOCAL_CFLAGS += -DTARGET_BOARD_$(strip $(TVAPI_TARGET_BOARD_VERSION)) - -LOCAL_MODULE:= tvserver - -include $(BUILD_EXECUTABLE) diff --git a/tvapi/android/tvserver/TvService.cpp b/tvapi/android/tvserver/TvService.cpp deleted file mode 100644 index 7cd5907..0000000 --- a/tvapi/android/tvserver/TvService.cpp +++ b/dev/null @@ -1,4500 +0,0 @@ -#define LOG_TAG "TvService" - -#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 <include/ITvService.h> -#include <hardware/hardware.h> -#include "TvService.h" -#include <cutils/atomic.h> -#include <cutils/properties.h> -#include <stdint.h> -#include <tvconfig/tvconfig.h> -#include <tvsetting/CTvSetting.h> -#include <audio/CTvAudio.h> -#include <tvutils/tvutils.h> -#include <version/version.h> -#include "../include/tvcmd.h" -#include "tv/CTvLog.h" -#include <tvdb/CTvRegion.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" -} - -#define PICTURE_TIMEOUT seconds(5) - -static int getCallingPid() -{ - return IPCThreadState::self()->getCallingPid(); -} - -TvService *TvService::mTvService = NULL; -CTv *TvService::mpTv = NULL; - -void TvService::instantiate() -{ - defaultServiceManager()->addService(String16("aml.tvserver"), TvService::getIntance()); -} - -TvService::TvService() : - BnTvService() -{ - mpStartTvClient = NULL; - mpScannerClient = NULL; - mUsers = 0; - mpTv = new CTv(); - mpTv->setTvObserver(this); - mCapVidFrame.setObserver(this); - mpTv->OpenTv(); -} - -TvService::~TvService() -{ - mpStartTvClient = NULL; - mpScannerClient = NULL; - int client_size = m_v_Clients.size(); - wp<Client> client; - for (int i = 0; i < client_size; i++) { - client = m_v_Clients[i]; - if (client != 0) { - LOGW("some client still connect it!"); - } - } - if (mpTv != NULL) { - delete mpTv; - mpTv = NULL; - } -} - -void TvService::onTvEvent(const CTvEv &ev) -{ - int type = ev.getEvType(); - LOGD("TvService::onTvEvent ev type = %d", type); - switch (type) { - case CTvEv::TV_EVENT_COMMOM: { - break; - } - 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", - pScannerEv->mType, pScannerEv->mFrequency, pScannerEv->mVid, pScannerEv->mAcnt); - p.writeInt32(pScannerEv->mType); - p.writeInt32(pScannerEv->mPercent); - p.writeInt32(pScannerEv->mTotalChannelCount); - p.writeInt32(pScannerEv->mLockedStatus); - p.writeInt32(pScannerEv->mChannelNumber); - p.writeInt32(pScannerEv->mFrequency); - p.writeString16(String16(pScannerEv->mProgramName)); - p.writeInt32(pScannerEv->mprogramType); - p.writeString16(String16(pScannerEv->mMSG)); - 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->mOfdm_mode); - 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]); - 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])); - ScannerClient->notifyCallback(SCAN_EVENT_CALLBACK, p); - } - } - break; - } - case CTvEv::TV_EVENT_EPG: { - CTvEpg::EpgEvent *pEpgEvent = (CTvEpg::EpgEvent *) (&ev); - int client_size = m_v_Clients.size(); - wp<Client> client; - for (int i = 0; i < client_size; i++) { - client = m_v_Clients[i]; - if (client != 0) { - sp<Client> currentClient = client.promote(); - if (currentClient != 0) { - Parcel p; - p.writeInt32(pEpgEvent->type); - p.writeInt32(pEpgEvent->time); - p.writeInt32(pEpgEvent->programID); - p.writeInt32(pEpgEvent->channelID); - currentClient->getTvClient()->notifyCallback(EPG_EVENT_CALLBACK, p); - } - } - } - break; - } - case CTvEv::TV_EVENT_HDMI_IN_CAP: { - CTvScreenCapture::CapEvent *pCapEvt = (CTvScreenCapture::CapEvent *)(&ev); - int client_size = m_v_Clients.size(); - wp<Client> client; - for (int i = 0; i < client_size; i++) { - client = m_v_Clients[i]; - if (client != 0) { - sp<Client> currentClient = client.promote(); - if (currentClient != 0) { - Parcel p; - p.writeInt32(pCapEvt->mFrameNum); - p.writeInt32(pCapEvt->mFrameSize); - p.writeInt32(pCapEvt->mFrameWide); - p.writeInt32(pCapEvt->mFrameHeight); - currentClient->getTvClient()->notifyCallback(VFRAME_BMP_EVENT_CALLBACK, p); - } - } - } - break; - } - case CTvEv::TV_EVENT_AV_PLAYBACK: { - TvEvent::AVPlaybackEvent *pEv = (TvEvent::AVPlaybackEvent *)(&ev); - int client_size = m_v_Clients.size(); - wp<Client> client; - for (int i = 0; i < client_size; i++) { - client = m_v_Clients[i]; - if (client != 0) { - sp<Client> currentClient = client.promote(); - if (currentClient != 0) { - Parcel p; - p.writeInt32(pEv->mMsgType); - p.writeInt32(pEv->mProgramId); - currentClient->getTvClient()->notifyCallback(DTV_AV_PLAYBACK_CALLBACK, p); - } - } - } - break; - } - case CTvEv::TV_EVENT_SIGLE_DETECT: { - TvEvent::SignalInfoEvent *pEv = (TvEvent::SignalInfoEvent *)(&ev); - - int client_size = m_v_Clients.size(); - wp<Client> client; - for (int i = 0; i < client_size; i++) { - client = m_v_Clients[i]; - if (client != 0) { - sp<Client> currentClient = client.promote(); - if (currentClient != 0) { - Parcel p; - p.writeInt32(pEv->mTrans_fmt); - p.writeInt32(pEv->mFmt); - p.writeInt32(pEv->mStatus); - p.writeInt32(pEv->mReserved); - currentClient->getTvClient()->notifyCallback(SIGLE_DETECT_CALLBACK, p); - } - } - } - break; - } - case CTvEv::TV_EVENT_SUBTITLE: { - TvEvent::SubtitleEvent *pEv = (TvEvent::SubtitleEvent *)(&ev); - sp<Client> pSubtitleClient = mpSubClient.promote(); - if (pSubtitleClient != NULL) { - Parcel p; - p.writeInt32(pEv->pic_width); - p.writeInt32(pEv->pic_height); - pSubtitleClient->notifyCallback(SUBTITLE_UPDATE_CALLBACK, p); - } - break; - } - case CTvEv::TV_EVENT_ADC_CALIBRATION: { - TvEvent::ADCCalibrationEvent *pEv = (TvEvent::ADCCalibrationEvent *)(&ev); - int client_size = m_v_Clients.size(); - wp<Client> client; - for (int i = 0; i < client_size; i++) { - client = m_v_Clients[i]; - if (client != 0) { - sp<Client> currentClient = client.promote(); - if (currentClient != 0) { - Parcel p; - p.writeInt32(pEv->mState); - currentClient->getTvClient()->notifyCallback(ADC_CALIBRATION_CALLBACK, p); - } - } - } - break; - } - case CTvEv::TV_EVENT_VGA: { //VGA - TvEvent::VGAEvent *pEv = (TvEvent::VGAEvent *)(&ev); - int client_size = m_v_Clients.size(); - wp<Client> client; - for (int i = 0; i < client_size; i++) { - client = m_v_Clients[i]; - if (client != 0) { - sp<Client> currentClient = client.promote(); - if (currentClient != 0) { - Parcel p; - p.writeInt32(pEv->mState); - currentClient->getTvClient()->notifyCallback(VGA_CALLBACK, p); - } - } - } - break; - } - case CTvEv::TV_EVENT_SOURCE_CONNECT: { - TvEvent::SourceConnectEvent *pEv = (TvEvent::SourceConnectEvent *)(&ev); - int client_size = m_v_Clients.size(); - wp<Client> client; - for (int i = 0; i < client_size; i++) { - client = m_v_Clients[i]; - if (client != 0) { - sp<Client> currentClient = client.promote(); - if (currentClient != 0) { - Parcel p; - p.writeInt32(pEv->mSourceInput); - p.writeInt32(pEv->connectionState); - currentClient->getTvClient()->notifyCallback(SOURCE_CONNECT_CALLBACK, p); - } - } - } - break; - } - case CTvEv::TV_EVENT_HDMIRX_CEC: { - TvEvent::HDMIRxCECEvent *pEv = (TvEvent::HDMIRxCECEvent *)(&ev); - int client_size = m_v_Clients.size(); - wp<Client> client; - for (int i = 0; i < client_size; i++) { - client = m_v_Clients[i]; - if (client != 0) { - sp<Client> currentClient = client.promote(); - if (currentClient != 0) { - Parcel p; - - p.writeInt32(pEv->mDataCount); - for (int j = 0; j < pEv->mDataCount; j++) { - p.writeInt32(pEv->mDataBuf[j]); - } - - currentClient->getTvClient()->notifyCallback(HDMIRX_CEC_CALLBACK, p); - } - } - } - break; - } - case CTvEv::TV_EVENT_UPGRADE_FBC: { - TvEvent::UpgradeFBCEvent *pEv = (TvEvent::UpgradeFBCEvent *)(&ev); - - int client_size = m_v_Clients.size(); - wp<Client> client; - for (int i = 0; i < client_size; i++) { - client = m_v_Clients[i]; - if (client != 0) { - sp<Client> currentClient = client.promote(); - if (currentClient != 0) { - Parcel p; - p.writeInt32(pEv->mState); - p.writeInt32(pEv->param); - currentClient->getTvClient()->notifyCallback(UPGRADE_FBC_CALLBACK, p); - } - } - } - break; - } - case CTvEv::TV_EVENT_SERIAL_COMMUNICATION: { - TvEvent::SerialCommunicationEvent *pEv = (TvEvent::SerialCommunicationEvent *)(&ev); - int client_size = m_v_Clients.size(); - wp<Client> client; - for (int i = 0; i < client_size; i++) { - client = m_v_Clients[i]; - if (client != 0) { - sp<Client> currentClient = client.promote(); - if (currentClient != 0) { - Parcel p; - p.writeInt32(pEv->mDevId); - p.writeInt32(pEv->mDataCount); - for (int j = 0; j < pEv->mDataCount; j++) { - p.writeInt32(pEv->mDataBuf[j]); - } - - currentClient->getTvClient()->notifyCallback(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); - int client_size = m_v_Clients.size(); - wp<Client> client; - for (int i = 0; i < client_size; i++) { - client = m_v_Clients[i]; - if (client != 0) { - sp<Client> currentClient = client.promote(); - if (currentClient != 0) { - Parcel p; - p.writeInt32(pEv->state); - p.writeInt32(pEv->para); - currentClient->getTvClient()->notifyCallback(HEADSET_STATUS_CALLBACK, p); - } - } - } - break; - } - - default: - break; - } -} - -sp<ITv> TvService::connect(const sp<ITvClient> &tvClient) -{ - int callingPid = getCallingPid(); - LOGD("TvService::connect E (pid %d, client %p)", callingPid, IInterface::asBinder(tvClient).get()); - - Mutex::Autolock lock(mServiceLock); - - int client_size = m_v_Clients.size(); - wp<Client> client; - for (int i = 0; i < client_size; i++) { - client = m_v_Clients[i]; - if (client != 0) { - sp<Client> currentClient = client.promote(); - if (currentClient != 0) { - sp<ITvClient> currentTvClient(currentClient->getTvClient()); - if (IInterface::asBinder(tvClient) == IInterface::asBinder(currentTvClient)) { - LOGD("TvService::connect X (pid %d, same client %p) is reconnecting...", callingPid, IInterface::asBinder(tvClient).get()); - return currentClient; - } else { - //LOGD("TvService::connect X (pid %d, new client %p) rejected. " - // "(old pid %d, old client %p)", callingPid, tvClient->asBinder().get(), currentClient->mClientPid, currentTvClient->asBinder().get()); - // if (kill(currentClient->mClientPid, 0) == -1 && errno == ESRCH) { - // LOGE("The old client is dead!"); - // } - //return client; - //return currentClient; - continue; - } - } else { - LOGE("client (pid %d) have delete ------------not exist", callingPid); - client.clear(); - m_v_Clients.removeAt(i); - client_size--; - continue; - } - } - } - - if (mUsers > 0) { - LOGE("Still have client, rejected"); - //return client; - } - LOGD("TvService::connect X 3"); - // client = new Client(this, tvClient, callingPid); - //mClient = client; - - sp<Client> newclient = new Client(this, tvClient, callingPid, mpTv); - m_v_Clients.add(newclient); - -#if DEBUG_CLIENT_REFERENCES - //client->trackMe(true, true); -#endif - //mCurClient = client; - LOGD("TvService::connect X 4"); - return newclient; -} - -void TvService::removeClient(const sp<ITvClient> &tvClient) -{ - int callingPid = getCallingPid(); - - Mutex::Autolock lock(mServiceLock); - - int client_size = m_v_Clients.size(); - wp<Client> client; - for (int i = 0; i < client_size; i++) { - client = m_v_Clients[i]; - if (client != 0) { - sp<Client> currentClient = client.promote(); - if (currentClient != 0) { - sp<ITvClient> currentTvClient(currentClient->getTvClient()); - if (IInterface::asBinder(tvClient) == IInterface::asBinder(currentTvClient)) { - LOGD("find client , and remove it pid = %d, client = %p i=%d", callingPid, IInterface::asBinder(tvClient).get(), i); - client.clear(); - LOGD("find client , and remove it pid1 "); - m_v_Clients.removeAt(i); - LOGD("find client , and remove it pid2 "); - break; - } else { - LOGW("removeClient (pid %d): mClient doesn't match!", callingPid); - continue; - } - } else { - LOGW("removeclient currentClient == 0 (pid %d)", callingPid); - client.clear(); - m_v_Clients.removeAt(i); - client_size--; - continue; - } - } else { - LOGW("removeclient client == 0 (pid %d)", callingPid); - client.clear(); - m_v_Clients.removeAt(i); - client_size--; - continue; - } - } - - LOGD("removeClient (pid %d) done", callingPid); -} - -void TvService::incUsers() -{ - android_atomic_inc(&mUsers); -} - -void TvService::decUsers() -{ - android_atomic_dec(&mUsers); -} - -TvService::Client::Client(const sp<TvService> &tvService, const sp<ITvClient> &tvClient, pid_t clientPid, CTv *pTv) -{ - int callingPid = getCallingPid(); - LOGD("Client::Client E (pid %d)", callingPid); - mTvService = tvService; - mTvClient = tvClient; - mClientPid = clientPid; - tvService->incUsers(); - mpTv = pTv; - mIsStartTv = false; -} - -status_t TvService::Client::checkPid() -{ - int callingPid = getCallingPid(); - if (mClientPid == callingPid) - return NO_ERROR; - LOGD("Attempt to use locked tv (client %p) from different process " - " (old pid %d, new pid %d)", IInterface::asBinder(getTvClient()).get(), mClientPid, callingPid); - return -EBUSY; -} - -status_t TvService::Client::lock() -{ - int callingPid = getCallingPid(); - LOGD("lock from pid %d (mClientPid %d)", callingPid, mClientPid); - Mutex::Autolock _l(mLock); - // lock tv to this client if the the tv is unlocked - if (mClientPid == 0) { - mClientPid = callingPid; - return NO_ERROR; - } - // returns NO_ERROR if the client already owns the tv, -EBUSY otherwise - return checkPid(); -} - -status_t TvService::Client::unlock() -{ - int callingPid = getCallingPid(); - LOGD("unlock from pid %d (mClientPid %d)", callingPid, mClientPid); - Mutex::Autolock _l(mLock); - // allow anyone to use tv - status_t result = checkPid(); - if (result == NO_ERROR) { - mClientPid = 0; - LOGD("clear mTvClient (pid %d)", callingPid); - // we need to remove the reference so that when app goes - // away, the reference count goes to 0. - mTvClient.clear(); - } - return result; -} - -status_t TvService::Client::connect(const sp<ITvClient> &client) -{ - int callingPid = getCallingPid(); - LOGD("Client::connect E (pid %d, client %p)", callingPid, IInterface::asBinder(client).get()); - { - sp<ITvClient> oldClient; - { - Mutex::Autolock _l(mLock); - if (mClientPid != 0 && checkPid() != NO_ERROR) { - LOGW("Tried to connect to locked tv (old pid %d, new pid %d)", mClientPid, callingPid); - return -EBUSY; - } - oldClient = mTvClient; - - // did the client actually change? - if ((mTvClient != NULL) && (IInterface::asBinder(client) == IInterface::asBinder(mTvClient))) { - LOGD("Connect to the same client"); - return NO_ERROR; - } - - mTvClient = client; - mClientPid = -1; - LOGD("Connect to the new client (pid %d, client %p)", callingPid, IInterface::asBinder(mTvClient).get()); - } - - } - mClientPid = callingPid; - return NO_ERROR; -} - -TvService::Client::~Client() -{ - if (mIsStartTv) mpTv->StopTvLock(); - - int callingPid = getCallingPid(); - // tear down client - LOGD("Client::~Client E (pid %d, client %p)", callingPid, IInterface::asBinder(getTvClient()).get()); - // make sure we tear down the hardware - mClientPid = callingPid; - disconnect(); - LOGD("Client::~Client X (pid %d)", mClientPid); -} - -void TvService::Client::disconnect() -{ - int callingPid = getCallingPid(); - - LOGD("Client::disconnect() E (pid %d client %p)", callingPid, IInterface::asBinder(getTvClient()).get()); - - Mutex::Autolock lock(mLock); - if (mClientPid <= 0) { - LOGE("tv is unlocked (mClientPid = %d), don't tear down hardware", mClientPid); - return; - } - if (checkPid() != NO_ERROR) { - LOGE("Different client - don't disconnect"); - return; - } - - mTvService->removeClient(mTvClient); - mTvService->decUsers(); - - LOGD("Client::disconnect() X (pid %d)", callingPid); -} - -status_t TvService::Client::createVideoFrame(const sp<IMemory> &share_mem, int iSourceMode, int iCapVideoLayerOnly) -{ - LOGD(" mem=%d size=%d", share_mem->pointer() == NULL, share_mem->size()); - LOGD("iSourceMode :%d iCapVideoLayerOnly = %d \n", iSourceMode, iCapVideoLayerOnly); - int Len = 0; - Mutex::Autolock lock(mLock); - mTvService->mCapVidFrame.InitVCap(share_mem); - - if ((1 == iSourceMode) && (1 == iCapVideoLayerOnly)) { - mTvService->mCapVidFrame.CapMediaPlayerVideoLayerOnly(1920, 1080); -#if 0 - mTvService->mCapVidFrame.SetVideoParameter(1920, 1080, 50); - mTvService->mCapVidFrame.VideoStart(); - mTvService->mCapVidFrame.GetVideoData(&Len); - mTvService->mCapVidFrame.VideoStop(); -#endif - } else if (2 == iSourceMode && 0 == iCapVideoLayerOnly) { - mTvService->mCapVidFrame.CapOsdAndVideoLayer(1920, 1080); - } else if (2 == iSourceMode && 1 == iCapVideoLayerOnly) { - mTvService->mCapVidFrame.CapMediaPlayerVideoLayerOnly(1920, 1080); - } else { - LOGD("=============== NOT SUPPORT=======================\n"); - } - mTvService->mCapVidFrame.DeinitVideoCap(); - - return 0; -} - -status_t TvService::Client::createSubtitle(const sp<IMemory> &share_mem) -{ - mSubBmpBuf = share_mem; - LOGD("createSubtitle pid = %d, mem=%d size=%d", getCallingPid(), share_mem->pointer() == NULL, share_mem->size()); - mpTv->setSubtitleBuffer((char *)mSubBmpBuf->pointer()); - mTvService->mpSubClient = this; - //pSub = new CTvSubtitle(share_mem, this); - //pSub->run(); - return 0; -} -status_t TvService::Client::processCmd(const Parcel &p, Parcel *r) -{ - int tmp_i_buf[128] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,}; - unsigned char tmp_uc_buf[512] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,}; - unsigned char tmp_uc_buf2[512] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,}; - int8_t tmp_int8_buf[512] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,}; - static int source_input = 0; - int *data_ptr = NULL; - - int cmd = p.readInt32(); - - LOGD("enter client=%d cmd=%d", getCallingPid(), cmd); - switch (cmd) { - // Tv function - case OPEN_TV: { - break; - } - case CLOSE_TV: { - int ret = mpTv->CloseTv(); - r->writeInt32(ret); - break; - } - case START_TV: { - int mode = p.readInt32(); - int ret = mpTv->StartTvLock(); - //mTvService->mpStartTvClient = this; - mIsStartTv = true; - r->writeInt32(ret); - break; - } - case STOP_TV: { - int ret = mpTv->StopTvLock(); - r->writeInt32(ret); - mIsStartTv = false; - break; - } - case GET_TV_STATUS: { - int ret = 0; - ret = (int)mpTv->GetTvStatus(); - r->writeInt32(ret); - break; - } - case GET_LAST_SOURCE_INPUT: { - int ret = (int)mpTv->GetLastSourceInput(); - r->writeInt32(ret); - break; - } - case GET_CURRENT_SOURCE_INPUT: { - int ret = (int)mpTv->GetCurrentSourceInputLock(); - r->writeInt32(ret); - break; - } - case GET_CURRENT_SOURCE_INPUT_TYPE: { - int ret = 0;//(int)mpTv->Tvin_GetSrcInputType(); - r->writeInt32(ret); - 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 IS_SOURCE_SWTICH_DONE: { - //int ret = mpTv->Tv_IsSourceSwtichDone(); - r->writeInt32(0); - break; - } - case SET_SOURCE_INPUT: { - int sourceinput = p.readInt32(); - tvin_window_pos_t win_pos; - LOGD(" SetSourceInput sourceId= %x", sourceinput); - source_input = sourceinput; - int ret = mpTv->SetSourceSwitchInput((tv_source_input_t)sourceinput); - r->writeInt32(ret); - break; - } - case DO_SUSPEND: { - int type = p.readInt32(); - int ret = mpTv->DoSuspend(type); - r->writeInt32(ret); - break; - } - case DO_RESUME: { - int type = p.readInt32(); - int ret = mpTv->DoResume(type); - r->writeInt32(ret); - break; - } - case RUN_ADC_AUTO_CALIBRATION: { - // int ret = mpTv->Tv_RunADCAutoCalibration(); - // r->writeInt32(ret); - break; - } - case IS_DVI_SIGNAL: { - int ret = mpTv->IsDVISignal(); - r->writeInt32(ret); - break; - } - case IS_VGA_TIMEING_IN_HDMI: { - int ret = mpTv->isVgaFmtInHdmi(); - r->writeInt32(ret); - break; - } - case GET_VIDEO_PATH_STATUS: { - int path_type = p.readInt32(); - int ret = 0;//(int)mpTv->Tvin_CheckPathActive((tv_path_type_t)path_type); - r->writeInt32(ret); - break; - } - case GET_VIDEO_STREAM_STATUS: { - // int ret = (int)mpTv->Tvin_CheckVideoStreamStatus(); - // r->writeInt32(ret); - break; - } - case GET_FIRST_START_SWITCH_TYPE: { - //int tmp_val = 0; - //int ret = (int)mpTv->Tv_GetFirstStartSwitchType(&tmp_val); - //r->writeInt32(ret); - r->writeInt32(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(); - int ret = (int)mpTv->SetPreviewWindow(win_pos); - r->writeInt32(ret); - break; - } - - case SET_VIDEO_DISABLE: { - int value = p.readInt32(); - int ret = 0;//(int)mpTv->Tv_SetVideoDisable(value); - r->writeInt32(ret); - break; - } - - case GET_SOURCE_CONNECT_STATUS: { - int source_input = p.readInt32(); - int ret = mpTv->GetSourceConnectStatus((tv_source_input_t)source_input); - r->writeInt32(ret); - break; - } - //Tv function END - - //VGA - case RUN_VGA_AUTO_ADJUST: { - //int ret = mpTv->Tv_RunVGAAutoAdjust(); - int ret = 0; - r->writeInt32(ret); - break; - } - case GET_VGA_AUTO_ADJUST_STATUS: { - // int fmt = p.readInt32(); - //int ret = (int) mpTv->Tv_GetVagAutoAdjustStatus(); - int ret = 0; - r->writeInt32(ret); - break; - } - case IS_VGA_AUTO_ADJUST_DONE: { - int fmt = p.readInt32(); - int ret = 0;//mpTv->Tv_IsVGAAutoAdjustDone((tvin_sig_fmt_t)fmt); - r->writeInt32(ret); - break; - } - case SET_VGA_HPOS: { - // int value = p.readInt32(); - // int fmt = p.readInt32(); - //int ret = mpTv->Tv_SetVGAHPos(value, (tvin_sig_fmt_t)fmt); - int ret = 0; - r->writeInt32(ret); - break; - } - case GET_VGA_HPOS: { - // int fmt = p.readInt32(); - // int ret = mpTv->Tv_GetVGAHPos((tvin_sig_fmt_t)fmt); - int ret = 0; - r->writeInt32(ret); - break; - } - - case SET_VGA_VPOS: { - // int value = p.readInt32(); - // int fmt = p.readInt32(); - // int ret = mpTv->Tv_SetVGAVPos(value, (tvin_sig_fmt_t)fmt); - int ret = 0; - r->writeInt32(ret); - break; - } - case GET_VGA_VPOS: { - // int fmt = p.readInt32(); - // int ret = mpTv->Tv_GetVGAVPos((tvin_sig_fmt_t)fmt); - int ret = 0; - r->writeInt32(ret); - break; - } - - case SET_VGA_CLOCK: { - // int value = p.readInt32(); - // int fmt = p.readInt32(); - // int ret = mpTv->Tv_SetVGAClock(value, (tvin_sig_fmt_t)fmt); - int ret = 0; - r->writeInt32(ret); - break; - } - case GET_VGA_CLOCK: { - // int fmt = p.readInt32(); - // int ret = mpTv->Tv_GetVGAClock((tvin_sig_fmt_t)fmt); - int ret = 0; - r->writeInt32(ret); - break; - } - - case SET_VGA_PHASE: { - // int value = p.readInt32(); - // int fmt = p.readInt32(); - // int ret = mpTv->Tv_SetVGAPhase(value, (tvin_sig_fmt_t)fmt); - int ret = 0; - r->writeInt32(ret); - break; - } - case GET_VGA_PHASE: { - // int fmt = p.readInt32(); - // int ret = mpTv->Tv_GetVGAPhase((tvin_sig_fmt_t)fmt); - int ret = 0; - r->writeInt32(ret); - break; - } - case SET_VGA_AJUST_PARA: { - tvafe_vga_parm_t adjparam; - adjparam.clk_step = p.readInt32(); - adjparam.phase = p.readInt32(); - adjparam.hpos_step = p.readInt32(); - adjparam.vpos_step = p.readInt32(); - adjparam.vga_in_clean = p.readInt32(); - int fmt = p.readInt32(); - int ret = 0/*SetVGAAjustPara(adjparam, (tvin_sig_fmt_t)fmt)*/; - r->writeInt32(ret); - break; - } - case GET_VGA_AJUST_PARA: { - tvafe_vga_parm_t adjparam; - int fmt = p.readInt32(); - int ret = 0/*GetVGAAjustPara(&adjparam, (tvin_sig_fmt_t)fmt)*/; - r->writeInt32(adjparam.clk_step); - r->writeInt32(adjparam.phase); - r->writeInt32(adjparam.hpos_step); - r->writeInt32(adjparam.vpos_step); - r->writeInt32(adjparam.vga_in_clean); - r->writeInt32(ret); - break; - } - case SET_VGAPARAM_DEFAULT: { - // int ret = (int)mpTv->TvinResetVgaAjustParam(); - // r->writeInt32(ret); - break; - } - // VGA END - - // 3D - - case SET_3D_MODE: { - int mode = p.readInt32(); - int ret = mpTv->Tv_Set3DMode((VIDEO_3D_MODE_T)mode); - r->writeInt32(ret); - break; - } - case GET_3D_MODE: { - int ret = (int)mpTv->Tv_Get3DMode(); - r->writeInt32(ret); - break; - } - case SET_3D_LR_SWITH: { - int on_off = p.readInt32(); - //int status = p.readInt32(); - int ret = mpTv->Tv_Set3DLRSwith(on_off); - r->writeInt32(ret); - break; - } - case GET_3D_LR_SWITH: { - int ret = mpTv->Tv_Get3DLRSwith(); - r->writeInt32(ret); - break; - } - case SET_3D_TO_2D_MODE: { - int mode = p.readInt32(); - //int status = p.readInt32(); - int ret = mpTv->Tv_Set3DTo2DMode(mode); - r->writeInt32(ret); - break; - } - case GET_3D_TO_2D_MODE: { - int ret = mpTv->Tv_Get3DTo2DMode(); - r->writeInt32(ret); - break; - } - case SET_3D_DEPTH: { - int value = p.readInt32(); - int ret = mpTv->Tv_Set3DDepth(value); - r->writeInt32(ret); - break; - } - case GET_3D_DEPTH: { - int ret = mpTv->GetSave3DDepth(); - r->writeInt32(ret); - break; - } - // 3D END - - // PQ - case SET_BRIGHTNESS: { - int brightness = p.readInt32(); - int source_type = p.readInt32(); - int is_save = p.readInt32(); - int ret = mpTv->Tv_SetBrightness(brightness, (tv_source_input_type_t)source_type, is_save); - r->writeInt32(ret); - break; - } - case GET_BRIGHTNESS: { - int source_type = p.readInt32(); - LOGD("GET_BRIGHTNESS------------=%d", source_type); - int ret = mpTv->Tv_GetBrightness((tv_source_input_type_t)source_type); - r->writeInt32(ret); - break; - } - case SAVE_BRIGHTNESS: { - int brightness = p.readInt32(); - int source_type = p.readInt32(); - int ret = mpTv->Tv_SaveBrightness(brightness, (tv_source_input_type_t)source_type); - r->writeInt32(ret); - break; - } - - case SET_CONTRAST: { - int contrast = p.readInt32(); - int source_type = p.readInt32(); - int is_save = p.readInt32(); - int ret = mpTv->Tv_SetContrast(contrast, (tv_source_input_type_t)source_type, is_save); - r->writeInt32(ret); - break; - } - case GET_CONTRAST: { - int source_type = p.readInt32(); - int ret = mpTv->Tv_GetContrast((tv_source_input_type_t)source_type); - r->writeInt32(ret); - break; - } - case SAVE_CONTRAST: { - int contrast = p.readInt32(); - int source_type = p.readInt32(); - int ret = mpTv->Tv_SaveContrast(contrast, (tv_source_input_type_t)source_type); - r->writeInt32(ret); - break; - } - case SET_SATUATION: { - int satuation = p.readInt32(); - int source_type = p.readInt32(); - int fmt = p.readInt32(); - int is_save = p.readInt32(); - int ret = mpTv->Tv_SetSaturation(satuation, (tv_source_input_type_t)source_type, (tvin_sig_fmt_t)fmt, is_save); - r->writeInt32(ret); - break; - } - case GET_SATUATION: { - int source_type = p.readInt32(); - int ret = mpTv->Tv_GetSaturation((tv_source_input_type_t)source_type); - r->writeInt32(ret); - break; - } - case SAVE_SATUATION: { - int satuation = p.readInt32(); - int source_type = p.readInt32(); - int ret = mpTv->Tv_SaveSaturation(satuation, (tv_source_input_type_t)source_type); - r->writeInt32(ret); - break; - } - case SET_HUE: { - int hue = p.readInt32(); - int source_type = p.readInt32(); - int fmt = p.readInt32(); - int is_save = p.readInt32(); - int ret = mpTv->Tv_SetHue(hue, (tv_source_input_type_t)source_type, (tvin_sig_fmt_t)fmt, is_save); - r->writeInt32(ret); - break; - } - case GET_HUE: { - int source_type = p.readInt32(); - int ret = mpTv->Tv_GetHue((tv_source_input_type_t)source_type); - r->writeInt32(ret); - break; - } - case SAVE_HUE: { - int hue = p.readInt32(); - int source_type = p.readInt32(); - int ret = mpTv->Tv_SaveHue(hue, (tv_source_input_type_t)source_type); - r->writeInt32(ret); - break; - } - case SET_SCENEMODE: { - int mode = p.readInt32(); - int is_save = p.readInt32(); - int ret = 0;//mpTv->Tv_SetSceneMode((vpp_scene_mode_t)mode,is_save); - r->writeInt32(ret); - break; - } - case GET_SCENEMODE: { - int ret = 0;//(int)mpTv->Tv_GetSceneMode(); - r->writeInt32(ret); - break; - } - case SET_PQMODE: { - int mode = p.readInt32(); - int source_type = p.readInt32(); - int is_save = p.readInt32(); - int ret = mpTv->Tv_SetPQMode((vpp_picture_mode_t)mode, (tv_source_input_type_t)source_type, is_save); - r->writeInt32(ret); - break; - } - case GET_PQMODE: { - int source_type = p.readInt32(); - int ret = (int)mpTv->Tv_GetPQMode((tv_source_input_type_t)source_type); - r->writeInt32(ret); - break; - } - case SAVE_PQMODE: { - int mode = p.readInt32(); - int source_type = p.readInt32(); - int ret = mpTv->Tv_SavePQMode((vpp_picture_mode_t)mode, (tv_source_input_type_t)source_type); - r->writeInt32(ret); - break; - } - case SET_SHARPNESS: { - int value = p.readInt32(); - int source_type = p.readInt32(); - int en = p.readInt32(); - int status_3d = p.readInt32(); - int is_save = p.readInt32(); - int ret = mpTv->Tv_SetSharpness(value, (tv_source_input_type_t)source_type, en, is_save); - r->writeInt32(ret); - break; - } - case GET_SHARPNESS: { - int source_type = p.readInt32(); - int ret = mpTv->Tv_GetSharpness((tv_source_input_type_t)source_type); - r->writeInt32(ret); - break; - } - case SAVE_SHARPNESS: { - int value = p.readInt32(); - int source_type = p.readInt32(); - int is_save = p.readInt32(); - int ret = mpTv->Tv_SaveSharpness(value, (tv_source_input_type_t)source_type); - r->writeInt32(ret); - break; - } - case SET_BACKLIGHT: { - int value = p.readInt32(); - int source_type = p.readInt32(); - int is_save = p.readInt32(); - int ret = mpTv->Tv_SetBacklight(value, (tv_source_input_type_t)source_type, is_save); - r->writeInt32(ret); - break; - } - case GET_BACKLIGHT: { - int source_type = p.readInt32(); - int ret = mpTv->Tv_GetBacklight((tv_source_input_type_t)source_type); - r->writeInt32(ret); - break; - } - case SAVE_BACKLIGHT: { - int value = p.readInt32(); - int source_type = p.readInt32(); - int ret = mpTv->Tv_SaveBacklight ( value, (tv_source_input_type_t)source_type ); - r->writeInt32(ret); - break; - } - case SET_BACKLIGHT_SWITCH: { - int value = p.readInt32(); - int ret = mpTv->Tv_SetBacklight_Switch(value); - r->writeInt32(ret); - break; - } - case GET_BACKLIGHT_SWITCH: { - int ret = mpTv->Tv_GetBacklight_Switch(); - r->writeInt32(ret); - break; - } - case SET_COLOR_TEMPERATURE: { - int mode = p.readInt32(); - int source_type = p.readInt32(); - int is_save = p.readInt32(); - int ret = mpTv->Tv_SetColorTemperature((vpp_color_temperature_mode_t)mode, (tv_source_input_type_t)source_type, is_save); - r->writeInt32(ret); - break; - } - case GET_COLOR_TEMPERATURE: { - int source_type = p.readInt32(); - int ret = mpTv->Tv_GetColorTemperature((tv_source_input_type_t)source_type); - r->writeInt32(ret); - break; - } - case SAVE_COLOR_TEMPERATURE: { - int mode = p.readInt32(); - int source_type = p.readInt32(); - int ret = mpTv->Tv_SaveColorTemperature ( (vpp_color_temperature_mode_t)mode, (tv_source_input_type_t)source_type ); - r->writeInt32(ret); - break; - } - case SET_DISPLAY_MODE: { - int mode = p.readInt32(); - int source_type = p.readInt32(); - int fmt = p.readInt32(); - int is_save = p.readInt32(); - int ret = mpTv->Tv_SetDisplayMode((vpp_display_mode_t)mode, (tv_source_input_type_t)source_type, (tvin_sig_fmt_t)fmt, is_save); - r->writeInt32(ret); - break; - } - case GET_DISPLAY_MODE: { - int source_type = p.readInt32(); - int ret = (int)mpTv->Tv_GetDisplayMode((tv_source_input_type_t)source_type); - r->writeInt32(ret); - break; - } - case SAVE_DISPLAY_MODE: { - int mode = p.readInt32(); - int source_type = p.readInt32(); - int ret = mpTv->Tv_SaveDisplayMode((vpp_display_mode_t)mode, (tv_source_input_type_t)source_type); - r->writeInt32(ret); - break; - } - case SET_NOISE_REDUCTION_MODE: { - int mode = p.readInt32(); - int source_type = p.readInt32(); - int is_save = p.readInt32(); - int ret = mpTv->Tv_SetNoiseReductionMode((vpp_noise_reduction_mode_t)mode, (tv_source_input_type_t)source_type, is_save); - r->writeInt32(ret); - break; - } - case GET_NOISE_REDUCTION_MODE: { - int source_type = p.readInt32(); - int ret = mpTv->Tv_GetNoiseReductionMode((tv_source_input_type_t)source_type); - r->writeInt32(ret); - break; - } - case SAVE_NOISE_REDUCTION_MODE: { - int mode = p.readInt32(); - int source_type = p.readInt32(); - int ret = mpTv->Tv_SaveNoiseReductionMode((vpp_noise_reduction_mode_t)mode, (tv_source_input_type_t)source_type); - r->writeInt32(ret); - break; - } - case VPP_SPLIT_SCREEN_EFFECT: { - int mode = p.readInt32(); - int width = p.readInt32(); - int reverse = p.readInt32(); - int ret = mpTv->Tv_SplitScreenEffect(mode, width, reverse); - r->writeInt32(ret); - break; - } - // PQ END - - // FACTORY - case FACTORY_SETPQMODE_BRIGHTNESS: { - int source_type = p.readInt32(); - int pq_mode = p.readInt32(); - int brightness = p.readInt32(); - int ret = mpTv->Tv_FactorySetPQMode_Brightness(source_type, pq_mode, brightness); - r->writeInt32(ret); - break; - } - case FACTORY_GETPQMODE_BRIGHTNESS: { - int source_type = p.readInt32(); - int pq_mode = p.readInt32(); - int ret = mpTv->Tv_FactoryGetPQMode_Brightness(source_type, pq_mode); - r->writeInt32(ret); - break; - } - case FACTORY_SETPQMODE_CONTRAST: { - int source_type = p.readInt32(); - int pq_mode = p.readInt32(); - int contrast = p.readInt32(); - int ret = mpTv->Tv_FactorySetPQMode_Contrast(source_type, pq_mode, contrast); - r->writeInt32(ret); - break; - } - case FACTORY_GETPQMODE_CONTRAST: { - int source_type = p.readInt32(); - int pq_mode = p.readInt32(); - int ret = mpTv->Tv_FactoryGetPQMode_Contrast(source_type, pq_mode); - r->writeInt32(ret); - break; - } - case FACTORY_SETPQMODE_SATURATION: { - int source_type = p.readInt32(); - int pq_mode = p.readInt32(); - int saturation = p.readInt32(); - int ret = mpTv->Tv_FactorySetPQMode_Saturation(source_type, pq_mode, saturation); - r->writeInt32(ret); - break; - } - case FACTORY_GETPQMODE_SATURATION: { - int source_type = p.readInt32(); - int pq_mode = p.readInt32(); - int ret = mpTv->Tv_FactoryGetPQMode_Saturation(source_type, pq_mode); - r->writeInt32(ret); - break; - } - case FACTORY_SETPQMODE_HUE: { - int source_type = p.readInt32(); - int pq_mode = p.readInt32(); - int hue = p.readInt32(); - int ret = mpTv->Tv_FactorySetPQMode_Hue(source_type, pq_mode, hue); - r->writeInt32(ret); - break; - } - case FACTORY_GETPQMODE_HUE: { - int source_type = p.readInt32(); - int pq_mode = p.readInt32(); - int ret = mpTv->Tv_FactoryGetPQMode_Hue(source_type, pq_mode); - r->writeInt32(ret); - break; - } - case FACTORY_SETPQMODE_SHARPNESS: { - int source_type = p.readInt32(); - int pq_mode = p.readInt32(); - int sharpness = p.readInt32(); - int ret = mpTv->Tv_FactorySetPQMode_Sharpness(source_type, pq_mode, sharpness); - r->writeInt32(ret); - break; - } - case FACTORY_GETPQMODE_SHARPNESS: { - int source_type = p.readInt32(); - int pq_mode = p.readInt32(); - int ret = mpTv->Tv_FactoryGetPQMode_Sharpness(source_type, pq_mode); - - r->writeInt32(ret); - break; - } - case FACTORY_SETTESTPATTERN: { - int pattern = p.readInt32(); - int ret = mpTv->Tv_FactorySetTestPattern(pattern); - r->writeInt32(ret); - break; - } - case FACTORY_GETTESTPATTERN: { - int ret = mpTv->Tv_FactoryGetTestPattern(); - r->writeInt32(ret); - break; - } - case FACTORY_SETPATTERN_YUV: { - int blend = p.readInt32(); - int y = p.readInt32(); - int u = p.readInt32(); - int v = p.readInt32(); - int ret = mpTv->Tv_FactorySetScreenColor(blend, y, u, v); - r->writeInt32(ret); - break; - } - case FACTORY_RESETPQMODE: { - int ret = mpTv->Tv_FactoryResetPQMode(); - r->writeInt32(ret); - break; - } - case FACTORY_RESETCOLORTEMP: { - int ret = mpTv->Tv_FactoryResetColorTemp(); - r->writeInt32(ret); - break; - } - case FACTORY_RESETPAMAMSDEFAULT: { - int ret = mpTv->Tv_FactorySetParamsDefault(); - r->writeInt32(ret); - break; - } - case FACTORY_SETDDRSSC: { - int setp = p.readInt32(); - int ret = mpTv->Tv_FactorySetDDRSSC(setp); - r->writeInt32(ret); - break; - } - case FACTORY_GETDDRSSC: { - int ret = mpTv->Tv_FactoryGetDDRSSC(); - r->writeInt32(ret); - break; - } - case FACTORY_SETLVDSSSC: { - int setp = p.readInt32(); - int ret = mpTv->Tv_FactorySetLVDSSSC(setp); - r->writeInt32(ret); - break; - } - case FACTORY_GETLVDSSSC: { - int ret = mpTv->Tv_FactoryGetLVDSSSC(); - r->writeInt32(ret); - break; - } - case FACTORY_SETNOLINEPARAMS: { - noline_params_t params; - int noline_params_type = p.readInt32(); - int source_type = p.readInt32(); - params.osd0 = p.readInt32(); - params.osd25 = p.readInt32(); - params.osd50 = p.readInt32(); - params.osd75 = p.readInt32(); - params.osd100 = p.readInt32(); - int ret = mpTv->Tv_FactorySetNolineParams(noline_params_type, source_type, params); - r->writeInt32(ret); - break; - } - case FACTORY_GETNOLINEPARAMS: { - int noline_params_type = p.readInt32(); - int source_type = p.readInt32(); - noline_params_t params = mpTv->Tv_FactoryGetNolineParams(noline_params_type, source_type); - r->writeInt32(params.osd0); - r->writeInt32(params.osd25); - r->writeInt32(params.osd50); - r->writeInt32(params.osd75); - r->writeInt32(params.osd100); - break; - } - case FACTORY_SETOVERSCAN: { - tvin_cutwin_t cutwin_t; - int source_type = p.readInt32(); - int fmt = p.readInt32(); - int status_3d = p.readInt32(); - int trans_fmt = p.readInt32(); - cutwin_t.hs = p.readInt32(); - cutwin_t.he = p.readInt32(); - cutwin_t.vs = p.readInt32(); - cutwin_t.ve = p.readInt32(); - int ret = mpTv->Tv_FactorySetOverscan(source_type, fmt, status_3d, trans_fmt, cutwin_t); - r->writeInt32(ret); - break; - } - case FACTORY_GETOVERSCAN: { - int source_type = p.readInt32(); - int fmt = p.readInt32(); - int status_3d = p.readInt32(); - int trans_fmt = p.readInt32(); - tvin_cutwin_t cutwin_t = mpTv->Tv_FactoryGetOverscan(source_type, fmt, status_3d, trans_fmt); - r->writeInt32(cutwin_t.hs); - r->writeInt32(cutwin_t.he); - r->writeInt32(cutwin_t.vs); - r->writeInt32(cutwin_t.ve); - break; - } - case DELETE_PARAM_PQ_DB: { - int tmpRet = mpTv->Tv_ReplacePqDb(); - r->writeInt32(tmpRet); - } - case REPLACE_PARAM_PQ_DB: { - int tmpRet; - String16 tmp_str16; - String8 value_str; - - tmp_str16 = p.readString16(); - value_str = String8(tmp_str16); - - tmpRet = mpTv->Tv_ReplacePqDb(value_str.string()); - r->writeInt32(tmpRet); - break; - } - case FACTORY_SET_OUT_DEFAULT: { - int ret = 0; - ret = mpTv->Tv_SSMFacRestoreDefaultSetting(); - r->writeInt32(ret); - break; - } - case FACTORY_GETGLOBALOGO_RGAIN: { - int ret = 0; - r->writeInt32(ret); - break; - } - case FACTORY_GETGLOBALOGO_GGAIN: { - int ret = 0; - r->writeInt32(ret); - break; - } - case FACTORY_GETGLOBALOGO_BGAIN: { - int ret = 0; - r->writeInt32(ret); - break; - } - case FACTORY_GETGLOBALOGO_ROFFSET: { - int ret = 0; - r->writeInt32(ret); - break; - } - case FACTORY_GETGLOBALOGO_GOFFSET: { - int ret = 0; - r->writeInt32(ret); - break; - } - case FACTORY_GETGLOBALOGO_BOFFSET: { - int ret = 0; - r->writeInt32(ret); - break; - } - case FACTORY_SETGLOBALOGO_RGAIN: { - int ret = 0; - r->writeInt32(ret); - break; - } - case FACTORY_SETGLOBALOGO_GGAIN: { - int p1 = p.readInt32(); - int ret = 0; - r->writeInt32(ret); - break; - } - case FACTORY_SETGLOBALOGO_BGAIN: { - int p1 = p.readInt32(); - int ret = 0; - r->writeInt32(ret); - break; - } - case FACTORY_SETGLOBALOGO_ROFFSET: { - int p1 = p.readInt32(); - int ret = 0; - r->writeInt32(ret); - break; - } - case FACTORY_SETGLOBALOGO_GOFFSET: { - int p1 = p.readInt32(); - int ret = 0; - r->writeInt32(ret); - break; - } - case FACTORY_SETGLOBALOGO_BOFFSET: { - int p1 = p.readInt32(); - int ret = 0; - r->writeInt32(ret); - break; - } - case FACTORY_CLEAN_ALL_TABLE_FOR_PROGRAM: { - int ret = mpTv->ClearAnalogFrontEnd(); - mpTv->clearDbAllProgramInfoTable(); - r->writeInt32(ret); - break; - } - case FACTORY_SETBACKLIGHT_PWM_FREQUENCY: { - int value = p.readInt32(); - int ret = 0;//mpTv->GetVpp().Tv_FactorySetBacklightPWM_Frequency(value); - r->writeInt32(ret); - break; - } - case FACTORY_GETBACKLIGHT_PWM_FREQUENCY: { - int ret = 0;//mpTv->GetVpp().Tv_FactoryGetBacklightPWM_Frequency(); - r->writeInt32(ret); - break; - } - case FACTORY_SETBACKLIGHT_SWITCH_STATUS: { - int value = p.readInt32(); - int ret = 0;//mpTv->GetVpp().Tv_FactorySetBacklight_Switch_status(value); - r->writeInt32(ret); - break; - } - case FACTORY_GETBACKLIGHT_SWITCH_STATUS: { - int ret = 0;//mpTv->GetVpp().Tv_FactoryGetBacklight_Switch_status(); - r->writeInt32(ret); - break; - } - case FACTORY_SETBACKLIGHT_PWM_DUTY: { - int value = p.readInt32(); - int ret = 0;//mpTv->GetVpp().Tv_FactorySetBacklightPWM_Duty(value); - r->writeInt32(ret); - break; - } - case FACTORY_GETBACKLIGHT_PWM_DUTY: { - int ret = 0;//mpTv->GetVpp().Tv_FactoryGetBacklightPWM_Duty(); - r->writeInt32(ret); - break; - } - - case FACTORY_SETLVDS_COLOR_DEPTH: { - int value = p.readInt32(); - int ret = 0;//mpTv->GetVpp().Tv_FactorySetLVDS_ColorDepth(value); - r->writeInt32(ret); - break; - } - case FACTORY_GETLVDS_COLOR_DEPTH: { - int ret = 0;//mpTv->GetVpp().Tv_FactoryGetLVDS_ColorDepth(); - r->writeInt32(ret); - break; - } - case FACTORY_SETLVDS_DITHER_STATUS: { - int value = p.readInt32(); - int ret = 0;//mpTv->GetVpp().Tv_FactorySetLVDS_ColorDither_status(value); - r->writeInt32(ret); - break; - } - case FACTORY_GETLVDS_DITHER_STATUS: { - int ret = 0;//mpTv->GetVpp().Tv_FactoryGetLVDS_ColorDither_status(); - r->writeInt32(ret); - break; - } - case FACTORY_SETLVDS_MAPPING_STATUS: { - int value = p.readInt32(); - int ret = 0;//mpTv->GetVpp().Tv_FactorySetLVDS_Mapping_status(value); - r->writeInt32(ret); - break; - } - case FACTORY_GETLVDS_MAPPING_STATUS: { - int ret = 0;//mpTv->GetVpp().Tv_FactoryGetLVDS_Mapping_status(); - r->writeInt32(ret); - break; - } - case FACTORY_SETLVDS_PORT_SWAP_STATUS: { - int value = p.readInt32(); - int ret = 0;//mpTv->GetVpp().Tv_FactorySetLVDS_PortSwap_status(value); - r->writeInt32(ret); - break; - } - case FACTORY_GETLVDS_PORT_SWAP_STATUS: { - int ret = 0;//mpTv->GetVpp().Tv_FactoryGetLVDS_PortSwap_status(); - r->writeInt32(ret); - break; - } - // FACTORY END - - // AUDIO - // AUDIO MUTE - case SET_AUDIO_MUTEKEY_STATUS: { - int status = p.readInt32(); - int ret = mpTv->SetAudioMuteForSystem(status); - r->writeInt32(ret); - break; - } - case GET_AUDIO_MUTEKEY_STATUS: { - int ret = mpTv->GetAudioMuteForSystem(); - r->writeInt32(ret); - break; - } - case SET_AUDIO_FORCE_MUTE_STATUS: { - int status = p.readInt32(); - int ret = 0;//pTv->getTvAudio().AudioSetForceMuteStatus(status); - r->writeInt32(ret); - break; - } - case GET_AUDIO_FORCE_MUTE_STATUS: { - int ret = 0;//mpTv->AudioGetForceMuteStatus(); - r->writeInt32(ret); - break; - } - case SET_AUDIO_AVOUT_MUTE_STATUS: { - int status = p.readInt32(); - int ret = mpTv->SetAudioAVOutMute(status); - r->writeInt32(ret); - break; - } - case GET_AUDIO_AVOUT_MUTE_STATUS: { - int ret = mpTv->GetAudioAVOutMute(); - r->writeInt32(ret); - break; - } - case SET_AUDIO_SPDIF_MUTE_STATUS: { - int status = p.readInt32(); - int ret = mpTv->SetAudioSPDIFMute(status); - r->writeInt32(ret); - break; - } - case GET_AUDIO_SPDIF_MUTE_STATUS: { - int ret = mpTv->GetAudioSPDIFMute(); - r->writeInt32(ret); - break; - } - // AUDIO MASTER VOLUME - case SET_AUDIO_MASTER_VOLUME: { - int vol = p.readInt32(); - int ret = mpTv->SetAudioMasterVolume(vol); - r->writeInt32(ret); - break; - } - case GET_AUDIO_MASTER_VOLUME: { - int ret = mpTv->GetAudioMasterVolume(); - r->writeInt32(ret); - break; - } - case SAVE_CUR_AUDIO_MASTER_VOLUME: { - int vol = p.readInt32(); - int ret = mpTv->SaveCurAudioMasterVolume(vol); - r->writeInt32(ret); - break; - } - case GET_CUR_AUDIO_MASTER_VOLUME: { - int ret = mpTv->GetCurAudioMasterVolume(); - r->writeInt32(ret); - break; - } - //AUDIO BALANCE - case SET_AUDIO_BALANCE: { - int vol = p.readInt32(); - int ret = mpTv->SetAudioBalance(vol); - r->writeInt32(ret); - break; - } - case GET_AUDIO_BALANCE: { - int ret = mpTv->GetAudioBalance(); - r->writeInt32(ret); - break; - } - case SAVE_CUR_AUDIO_BALANCE: { - int vol = p.readInt32(); - int ret = mpTv->SaveCurAudioBalance(vol); - r->writeInt32(ret); - break; - } - case GET_CUR_AUDIO_BALANCE: { - int ret = mpTv->GetCurAudioBalance(); - r->writeInt32(ret); - break; - } - //AUDIO SUPPERBASS VOLUME - case SET_AUDIO_SUPPER_BASS_VOLUME: { - int vol = p.readInt32(); - int ret = mpTv->SetAudioSupperBassVolume(vol); - r->writeInt32(ret); - break; - } - case GET_AUDIO_SUPPER_BASS_VOLUME: { - int ret = mpTv->GetAudioSupperBassVolume(); - r->writeInt32(ret); - break; - } - case SAVE_CUR_AUDIO_SUPPER_BASS_VOLUME: { - int vol = p.readInt32(); - int ret = mpTv->SaveCurAudioSupperBassVolume(vol); - r->writeInt32(ret); - break; - } - case GET_CUR_AUDIO_SUPPER_BASS_VOLUME: { - int ret = mpTv->GetCurAudioSupperBassVolume(); - r->writeInt32(ret); - break; - } - //AUDIO SUPPERBASS SWITCH - case SET_AUDIO_SUPPER_BASS_SWITCH: { - int vol = p.readInt32(); - int ret = mpTv->SetAudioSupperBassSwitch(vol); - r->writeInt32(ret); - break; - } - case GET_AUDIO_SUPPER_BASS_SWITCH: { - int ret = mpTv->GetAudioSupperBassSwitch(); - r->writeInt32(ret); - break; - } - case SAVE_CUR_AUDIO_SUPPER_BASS_SWITCH: { - int vol = p.readInt32(); - int ret = mpTv->SaveCurAudioSupperBassSwitch(vol); - r->writeInt32(ret); - break; - } - case GET_CUR_AUDIO_SUPPER_BASS_SWITCH: { - int ret = mpTv->GetCurAudioSupperBassSwitch(); - r->writeInt32(ret); - break; - } - //AUDIO SRS SURROUND SWITCH - case SET_AUDIO_SRS_SURROUND: { - int vol = p.readInt32(); - int ret = mpTv->SetAudioSRSSurround(vol); - mpTv->RefreshAudioMasterVolume(SOURCE_MAX); - r->writeInt32(ret); - break; - } - case GET_AUDIO_SRS_SURROUND: { - int ret = mpTv->GetAudioSRSSurround(); - r->writeInt32(ret); - break; - } - case SAVE_CUR_AUDIO_SRS_SURROUND: { - int vol = p.readInt32(); - int ret = mpTv->SaveCurAudioSrsSurround(vol); - r->writeInt32(ret); - break; - } - case GET_CUR_AUDIO_SRS_SURROUND: { - int ret = mpTv->GetCurAudioSRSSurround(); - r->writeInt32(ret); - break; - } - //AUDIO SRS DIALOG CLARITY - case SET_AUDIO_SRS_DIALOG_CLARITY: { - int vol = p.readInt32(); - int ret = mpTv->SetAudioSrsDialogClarity(vol); - mpTv->RefreshAudioMasterVolume(SOURCE_MAX); - r->writeInt32(ret); - break; - } - case GET_AUDIO_SRS_DIALOG_CLARITY: { - int ret = mpTv->GetAudioSrsDialogClarity(); - r->writeInt32(ret); - break; - } - case SAVE_CUR_AUDIO_SRS_DIALOG_CLARITY: { - int vol = p.readInt32(); - int ret = mpTv->SaveCurAudioSrsDialogClarity(vol); - r->writeInt32(ret); - break; - } - case GET_CUR_AUDIO_SRS_DIALOG_CLARITY: { - int ret = mpTv->GetCurAudioSrsDialogClarity(); - r->writeInt32(ret); - break; - } - //AUDIO SRS TRUBASS - case SET_AUDIO_SRS_TRU_BASS: { - int vol = p.readInt32(); - int ret = mpTv->SetAudioSrsTruBass(vol); - mpTv->RefreshAudioMasterVolume(SOURCE_MAX); - r->writeInt32(ret); - break; - } - case GET_AUDIO_SRS_TRU_BASS: { - int ret = mpTv->GetAudioSrsTruBass(); - r->writeInt32(ret); - break; - } - case SAVE_CUR_AUDIO_SRS_TRU_BASS: { - int vol = p.readInt32(); - int ret = mpTv->SaveCurAudioSrsTruBass(vol); - r->writeInt32(ret); - break; - } - case GET_CUR_AUDIO_SRS_TRU_BASS: { - int ret = mpTv->GetCurAudioSrsTruBass(); - r->writeInt32(ret); - break; - } - //AUDIO BASS - case SET_AUDIO_BASS_VOLUME: { - int vol = p.readInt32(); - int ret = mpTv->SetAudioBassVolume(vol); - r->writeInt32(ret); - break; - } - case GET_AUDIO_BASS_VOLUME: { - int ret = mpTv->GetAudioBassVolume(); - r->writeInt32(ret); - break; - } - case SAVE_CUR_AUDIO_BASS_VOLUME: { - int vol = p.readInt32(); - int ret = mpTv->SaveCurAudioBassVolume(vol); - r->writeInt32(ret); - break; - } - case GET_CUR_AUDIO_BASS_VOLUME: { - int ret = mpTv->GetCurAudioBassVolume(); - r->writeInt32(ret); - break; - } - //AUDIO TREBLE - case SET_AUDIO_TREBLE_VOLUME: { - int vol = p.readInt32(); - int ret = mpTv->SetAudioTrebleVolume(vol); - r->writeInt32(ret); - break; - } - case GET_AUDIO_TREBLE_VOLUME: { - int ret = mpTv->GetAudioTrebleVolume(); - r->writeInt32(ret); - break; - } - case SAVE_CUR_AUDIO_TREBLE_VOLUME: { - int vol = p.readInt32(); - int ret = mpTv->SaveCurAudioTrebleVolume(vol); - r->writeInt32(ret); - break; - } - case GET_CUR_AUDIO_TREBLE_VOLUME: { - int ret = mpTv->GetCurAudioTrebleVolume(); - r->writeInt32(ret); - break; - } - //AUDIO SOUND MODE - case SET_AUDIO_SOUND_MODE: { - int vol = p.readInt32(); - int ret = mpTv->SetAudioSoundMode(vol); - r->writeInt32(ret); - break; - } - case GET_AUDIO_SOUND_MODE: { - int ret = mpTv->GetAudioSoundMode(); - r->writeInt32(ret); - break; - } - case SAVE_CUR_AUDIO_SOUND_MODE: { - int vol = p.readInt32(); - int ret = mpTv->SaveCurAudioSoundMode(vol); - r->writeInt32(ret); - break; - } - case GET_CUR_AUDIO_SOUND_MODE: { - int ret = mpTv->GetCurAudioSoundMode(); - r->writeInt32(ret); - break; - } - //AUDIO WALL EFFECT - case SET_AUDIO_WALL_EFFECT: { - int vol = p.readInt32(); - int ret = mpTv->SetAudioWallEffect(vol); - r->writeInt32(ret); - break; - } - case GET_AUDIO_WALL_EFFECT: { - int ret = mpTv->GetAudioWallEffect(); - r->writeInt32(ret); - break; - } - case SAVE_CUR_AUDIO_WALL_EFFECT: { - int vol = p.readInt32(); - int ret = mpTv->SaveCurAudioWallEffect(vol); - r->writeInt32(ret); - break; - } - case GET_CUR_AUDIO_WALL_EFFECT: { - int ret = mpTv->GetCurAudioWallEffect(); - r->writeInt32(ret); - break; - } - //AUDIO EQ MODE - case SET_AUDIO_EQ_MODE: { - int vol = p.readInt32(); - int ret = mpTv->SetAudioEQMode(vol); - r->writeInt32(ret); - break; - } - case GET_AUDIO_EQ_MODE: { - int ret = mpTv->GetAudioEQMode(); - r->writeInt32(ret); - break; - } - case SAVE_CUR_AUDIO_EQ_MODE: { - int vol = p.readInt32(); - int ret = mpTv->SaveCurAudioEQMode(vol); - r->writeInt32(ret); - break; - } - case GET_CUR_AUDIO_EQ_MODE: { - int ret = mpTv->GetCurAudioEQMode(); - r->writeInt32(ret); - break; - } - //AUDIO EQ GAIN - case GET_AUDIO_EQ_RANGE: { - int buf[2]; - int 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: { - int ret = mpTv->GetAudioEQBandCount(); - r->writeInt32(ret); - break; - } - case SET_AUDIO_EQ_GAIN: { - int i = 0, tmp_buf_size = 0, ret = 0; - tmp_buf_size = p.readInt32(); - for (i = 0; i < tmp_buf_size; i++) { - tmp_i_buf[i] = p.readInt32(); - } - ret = mpTv->SetAudioEQGain(tmp_i_buf); - r->writeInt32(ret); - break; - } - case GET_AUDIO_EQ_GAIN: { - int i = 0, tmp_buf_size = 0, ret = 0; - ret = mpTv->GetAudioEQGain(tmp_i_buf); - tmp_buf_size = mpTv->GetAudioEQBandCount(); - r->writeInt32(tmp_buf_size); - for (i = 0; i < tmp_buf_size; i++) { - r->writeInt32(tmp_i_buf[i]); - } - r->writeInt32(ret); - break; - } - case SAVE_CUR_AUDIO_EQ_GAIN: { - int i = 0, tmp_buf_size = 0, ret = 0; - tmp_buf_size = p.readInt32(); - for (i = 0; i < tmp_buf_size; i++) { - tmp_i_buf[i] = p.readInt32(); - } - ret = mpTv->SaveCurAudioEQGain(tmp_i_buf); - r->writeInt32(ret); - break; - } - case GET_CUR_EQ_GAIN: { - int i = 0, tmp_buf_size = 0, ret = 0; - ret = mpTv->GetCurAudioEQGain(tmp_i_buf); - tmp_buf_size = mpTv->GetAudioEQBandCount(); - r->writeInt32(tmp_buf_size); - for (i = 0; i < tmp_buf_size; i++) { - r->writeInt32(tmp_i_buf[i]); - } - r->writeInt32(ret); - break; - } - case SET_AUDIO_EQ_SWITCH: { - int tmpVal = p.readInt32(); - int ret = mpTv->SetAudioEQSwitch(tmpVal); - r->writeInt32(ret); - break; - } - // AUDIO SPDIF SWITCH - case SET_AUDIO_SPDIF_SWITCH: { - int tmp_val = p.readInt32(); - int ret = mpTv->SetAudioSPDIFSwitch(tmp_val); - r->writeInt32(ret); - break; - } - case GET_AUDIO_SPDIF_SWITCH: { - int ret = 0;//mpTv->GetAudioSPDIFSwitch(); - r->writeInt32(ret); - break; - } - case SAVE_CUR_AUDIO_SPDIF_SWITCH: { - int tmp_val = p.readInt32(); - int ret = mpTv->SaveCurAudioSPDIFSwitch(tmp_val); - r->writeInt32(ret); - break; - } - case GET_CUR_AUDIO_SPDIF_SWITCH: { - int ret = mpTv->GetCurAudioSPDIFSwitch(); - r->writeInt32(ret); - break; - } - //AUDIO SPDIF MODE - case SET_AUDIO_SPDIF_MODE: { - int vol = p.readInt32(); - int progId = p.readInt32(); - int audioTrackId = p.readInt32(); - int ret = mpTv->SetAudioSPDIFMode(vol); - mpTv->ResetAudioDecoderForPCMOutput(); - r->writeInt32(ret); - break; - } - case GET_AUDIO_SPDIF_MODE: { - int ret = 0;//mpTv->GetAudioSPDIFMode(); - r->writeInt32(ret); - break; - } - case SAVE_CUR_AUDIO_SPDIF_MODE: { - int vol = p.readInt32(); - int ret = mpTv->SaveCurAudioSPDIFMode(vol); - r->writeInt32(ret); - break; - } - case GET_CUR_AUDIO_SPDIF_MODE: { - int ret = mpTv->GetCurAudioSPDIFMode(); - r->writeInt32(ret); - break; - } - case OPEN_AMAUDIO: { - int sr = p.readInt32(); - int output_dev = p.readInt32(); - int ret = 0;//mpTv->OpenAmAudio(sr, output_dev); - r->writeInt32(ret); - break; - } - case CLOSE_AMAUDIO: { - int ret = 0;//mpTv->CloseAmAudio(); - r->writeInt32(ret); - break; - } - case SET_AMAUDIO_INPUT_SR: { - int sr = p.readInt32(); - int output_dev = p.readInt32(); - int ret = 0;//mpTv->SetAmAudioInputSr(sr, output_dev); - r->writeInt32(ret); - break; - } - case SET_AMAUDIO_OUTPUT_MODE: { - int tmp_val = p.readInt32(); - int ret = mpTv->SetAmAudioOutputMode(tmp_val); - r->writeInt32(ret); - break; - } - case SET_AMAUDIO_MUSIC_GAIN: { - int tmp_val = p.readInt32(); - int ret = mpTv->SetAmAudioMusicGain(tmp_val); - r->writeInt32(ret); - break; - } - case SET_AMAUDIO_LEFT_GAIN: { - int tmp_val = p.readInt32(); - int ret = mpTv->SetAmAudioLeftGain(tmp_val); - r->writeInt32(ret); - break; - } - case SET_AMAUDIO_RIGHT_GAIN: { - int tmp_val = p.readInt32(); - int ret = mpTv->SetAmAudioRightGain(tmp_val); - r->writeInt32(ret); - break; - } - case SELECT_LINE_IN_CHANNEL: { - int channel = p.readInt32(); - int ret = mpTv->AudioLineInSelectChannel(channel); - r->writeInt32(ret); - LOGD("SELECT_LINE_IN_CHANNEL: channel = %d; ret = %d.\n", channel, ret); - break; - } - case SET_KALAOK_IO_LEVEL: { - int level = p.readInt32(); - int ret = mpTv->SetKalaokIO(level); - ret = mpTv->AudioSetAudioInSource(CC_AUDIO_IN_SOURCE_LINEIN); - r->writeInt32(ret); - LOGD("set line in source CC_AUDIO_IN_SOURCE_LINEIN\n"); - break; - } - - case SET_LINE_IN_CAPTURE_VOL: { - int l_vol = p.readInt32(); - int r_vol = p.readInt32(); - int ret = mpTv->AudioSetLineInCaptureVolume(l_vol, r_vol); - r->writeInt32(ret); - break; - } - case HANDLE_AUDIO_HEADSET_PLUG_IN: { - int ret = mpTv->AudioHandleHeadsetPlugIn(); - r->writeInt32(ret); - break; - } - case HANDLE_AUDIO_HEADSET_PULL_OUT: { - int ret = mpTv->AudioHandleHeadsetPullOut(); - r->writeInt32(ret); - break; - } - case SET_AUDIO_VOL_COMP: { - int tmpVal = p.readInt32(); - int ret = mpTv->SetCurProgramAudioVolumeCompensationVal(tmpVal); - r->writeInt32(ret); - break; - } - case GET_AUDIO_VOL_COMP: { - int ret = mpTv->GetAudioVolumeCompensationVal(-1); - r->writeInt32(ret); - break; - } - case SAVE_AUDIO_VOL_COMP: { - int tmpVal = p.readInt32(); - int ret = -1;//mpTv->atvSaveAudioVolumeCompensationVal(tmpVal); - LOGD("this cmd is empty!!!!!!!!!!!!!!!!!!!"); - r->writeInt32(ret); - break; - } - case SET_NOISE_GATE_THRESHOLD: { - int ret = 0; - r->writeInt32(ret); - break; - } - case SET_AUDIO_SOURCE_FOR_KARAOKE: { - int sourceinput = p.readInt32(); - int ret = mpTv->Tv_SetAudioSourceType((tv_source_input_t)sourceinput); - r->writeInt32(ret); - break; - } - case SET_DBX_TV_MODE: { - int mode = p.readInt32(); - int son_value = p.readInt32(); - int vol_value = p.readInt32(); - int sur_value = p.readInt32(); - int ret = mpTv->SetDbxTvMode(mode, son_value, vol_value, sur_value); - r->writeInt32(ret); - break; - } - case GET_DBX_TV_MODE: { - int mode ; - int son_value ; - int vol_value ; - int sur_value ; - int ret = mpTv->GetDbxTvMode(&mode, &son_value, &vol_value, &sur_value); - r->writeInt32(mode); - r->writeInt32(son_value); - r->writeInt32(vol_value); - r->writeInt32(sur_value); - r->writeInt32(ret); - break; - } - - case SET_DRC_ONOFF: { - int val = p.readInt32(); - int ret = mpTv->Tv_SetDRC_OnOff(val); - r->writeInt32(ret); - break; - } - case GET_DRC_ONOFF: { - int ret = mpTv->Tv_GetDRC_OnOff(); - r->writeInt32(ret); - break; - } - // AUDIO END - - // SSM - case SSM_INIT_DEVICE: { - int tmpRet = 0; - tmpRet = mpTv->Tv_SSMRestoreDefaultSetting();//mpTv->Tv_SSMInitDevice(); - r->writeInt32(tmpRet); - break; - } - /*case SSM_SAVE_ONE_BYTE: { - int tmpOffset = p.readInt32(); - int tmpVal = p.readInt32(); - int tmpRet; - tmpRet = SSMWriteOneByte(tmpOffset, tmpVal); - r->writeInt32(tmpRet); - break; - } - case SSM_READ_ONE_BYTE: { - int tmpOffset = p.readInt32(); - int tmpRet = 0; - SSMReadOneByte(tmpOffset, &tmpRet); - r->writeInt32(tmpRet); - break; - } - case SSM_SAVE_N_BYTES: { - int i = 0, tmp_offset = 0, tmp_data_len = 0, ret = -1; - - tmp_offset = p.readInt32(); - tmp_data_len = p.readInt32(); - - if (tmp_data_len > 0) { - data_ptr = new int[tmp_data_len]; - - if (data_ptr != NULL) { - for (i = 0; i < tmp_data_len; i++) { - data_ptr[i] = p.readInt32(); - } - - ret = SSMWriteNTypes(tmp_offset, tmp_data_len, data_ptr); - - delete data_ptr; - data_ptr = NULL; - } - } - - r->writeInt32(ret); - break; - } - case SSM_READ_N_BYTES: { - int i = 0, tmp_offset = 0, tmp_data_len = 0, ret = -1; - tmp_offset = p.readInt32(); - tmp_data_len = p.readInt32(); - - if (tmp_data_len > 0) { - data_ptr = new int[tmp_data_len]; - if (data_ptr != NULL) { - ret = SSMReadNTypes(tmp_offset, tmp_data_len, data_ptr); - if (ret < 0) { - tmp_data_len = 0; - } - r->writeInt32(tmp_data_len); - for (i = 0; i < tmp_data_len; i++) { - r->writeInt32(data_ptr[i]); - } - delete data_ptr; - data_ptr = NULL; - } - } - r->writeInt32(ret); - break; - }*/ - case SSM_SAVE_POWER_ON_OFF_CHANNEL: { - int tmpPowerChanNum = p.readInt32(); - int tmpRet; - tmpRet = SSMSavePowerOnOffChannel(tmpPowerChanNum); - r->writeInt32(tmpRet); - break; - } - case SSM_READ_POWER_ON_OFF_CHANNEL: { - int tmpRet = 0; - tmpRet = SSMReadPowerOnOffChannel(); - r->writeInt32(tmpRet); - break; - } - case SSM_SAVE_SOURCE_INPUT: { - int tmpSouceInput = p.readInt32(); - int tmpRet; - tmpRet = SSMSaveSourceInput(tmpSouceInput); - r->writeInt32(tmpRet); - break; - } - case SSM_READ_SOURCE_INPUT: { - int tmpRet = 0; - tmpRet = SSMReadSourceInput(); - r->writeInt32(tmpRet); - break; - } - case SSM_SAVE_LAST_SOURCE_INPUT: { - int tmpLastSouceInput = p.readInt32(); - int tmpRet; - tmpRet = SSMSaveLastSelectSourceInput(tmpLastSouceInput); - r->writeInt32(tmpRet); - break; - } - case SSM_READ_LAST_SOURCE_INPUT: { - int tmpRet = 0; - tmpRet = SSMReadLastSelectSourceInput(); - r->writeInt32(tmpRet); - break; - } - case SSM_SAVE_SYS_LANGUAGE: { - int tmpVal = p.readInt32(); - int tmpRet; - tmpRet = SSMSaveSystemLanguage(tmpVal); - r->writeInt32(tmpRet); - break; - } - case SSM_READ_SYS_LANGUAGE: { - int tmpRet = 0; - tmpRet = SSMReadSystemLanguage(); - r->writeInt32(tmpRet); - break; - } - case SSM_SAVE_AGING_MODE: { - int tmpVal = p.readInt32(); - int tmpRet; - tmpRet = SSMSaveAgingMode(tmpVal); - r->writeInt32(tmpRet); - break; - } - case SSM_READ_AGING_MODE: { - int tmpRet = 0; - tmpRet = SSMReadAgingMode(); - r->writeInt32(tmpRet); - break; - } - case SSM_SAVE_PANEL_TYPE: { - int tmpVal = p.readInt32(); - int tmpRet; - tmpRet = SSMSavePanelType(tmpVal); - r->writeInt32(tmpRet); - break; - } - case SSM_READ_PANEL_TYPE: { - int tmpRet = 0; - tmpRet = SSMReadPanelType(); - r->writeInt32(tmpRet); - break; - } - case SSM_SAVE_MAC_ADDR: { - int i = 0, tmp_buf_size = 0, ret = 0; - tmp_buf_size = p.readInt32(); - for (i = 0; i < tmp_buf_size; i++) { - tmp_uc_buf[i] = p.readInt32(); - } - ret = KeyData_SaveMacAddress(tmp_uc_buf); - r->writeInt32(ret); - break; - } - case SSM_READ_MAC_ADDR: { - int i = 0, tmp_buf_size = 0, ret = 0; - ret = KeyData_ReadMacAddress(tmp_uc_buf); - tmp_buf_size = KeyData_GetMacAddressDataLen(); - r->writeInt32(tmp_buf_size); - for (i = 0; i < tmp_buf_size; i++) { - r->writeInt32(tmp_uc_buf[i]); - } - r->writeInt32(ret); - break; - } - case SSM_SAVE_BAR_CODE: { - int i = 0, tmp_buf_size = 0, ret = 0; - tmp_buf_size = p.readInt32(); - for (i = 0; i < tmp_buf_size; i++) { - tmp_uc_buf[i] = p.readInt32(); - } - ret = KeyData_SaveBarCode(tmp_uc_buf); - r->writeInt32(ret); - break; - } - case SSM_READ_BAR_CODE: { - int i = 0, tmp_buf_size = 0, ret = 0; - ret = KeyData_ReadBarCode(tmp_uc_buf); - tmp_buf_size = KeyData_GetBarCodeDataLen(); - r->writeInt32(tmp_buf_size); - for (i = 0; i < tmp_buf_size; i++) { - r->writeInt32(tmp_uc_buf[i]); - } - r->writeInt32(ret); - break; - } - case SSM_SAVE_PROJECT_ID: { - int tmpVal = p.readInt32(); - int tmpRet; - tmpRet = KeyData_SaveProjectID(tmpVal); - r->writeInt32(tmpRet); - break; - } - case SSM_READ_PROJECT_ID: { - int tmpRet = 0; - tmpRet = KeyData_ReadProjectID(); - r->writeInt32(tmpRet); - break; - } - case SSM_SAVE_HDCPKEY: { - int i = 0, tmp_buf_size = 0, ret = 0; - tmp_buf_size = p.readInt32(); - for (i = 0; i < tmp_buf_size; i++) { - tmp_uc_buf[i] = p.readInt32(); - } - ret = SSMSaveHDCPKey(tmp_uc_buf); - r->writeInt32(ret); - break; - } - case SSM_READ_HDCPKEY: { - int i = 0, tmp_buf_size = 0, ret = 0; - ret = SSMReadHDCPKey(tmp_uc_buf); - tmp_buf_size = SSMGetHDCPKeyDataLen(); - r->writeInt32(tmp_buf_size); - for (i = 0; i < tmp_buf_size; i++) { - r->writeInt32(tmp_uc_buf[i]); - } - r->writeInt32(ret); - break; - } - case SSM_SAVE_POWER_ON_MUSIC_SWITCH: { - int tmpVal = p.readInt32(); - int tmpRet; - tmpRet = SSMSavePowerOnMusicSwitch(tmpVal); - r->writeInt32(tmpRet); - break; - } - case SSM_READ_POWER_ON_MUSIC_SWITCH: { - int tmpRet = 0; - tmpRet = SSMReadPowerOnMusicSwitch(); - r->writeInt32(tmpRet); - break; - } - case SSM_SAVE_POWER_ON_MUSIC_VOL: { - int tmpVal = p.readInt32(); - int tmpRet; - tmpRet = SSMSavePowerOnMusicVolume(tmpVal); - r->writeInt32(tmpRet); - break; - } - case SSM_READ_POWER_ON_MUSIC_VOL: { - int tmpRet = 0; - tmpRet = SSMReadPowerOnMusicVolume(); - r->writeInt32(tmpRet); - break; - } - case SSM_SAVE_SYS_SLEEP_TIMER: { - int tmpVal = p.readInt32(); - int tmpRet; - tmpRet = SSMSaveSystemSleepTimer(tmpVal); - r->writeInt32(tmpRet); - break; - } - case SSM_READ_SYS_SLEEP_TIMER: { - int tmpRet = 0; - tmpRet = SSMReadSystemSleepTimer(); - r->writeInt32(tmpRet); - break; - } - case SSM_SET_BUS_STATUS: { - int tmpVal = p.readInt32(); - int tmpRet = 0; - //showboz - //tmpRet = SSMSetBusStatus(tmpVal); - r->writeInt32(tmpRet); - break; - } - case SSM_GET_BUS_STATUS: { - int tmpRet = 0; - //showboz - //tmpRet = SSMGetBusStatus(); - r->writeInt32(tmpRet); - break; - } - case SSM_SAVE_INPUT_SRC_PARENTAL_CTL: { - int tmpSourceIndex = p.readInt32(); - int tmpCtlFlag = p.readInt32(); - int tmpRet; - tmpRet = SSMSaveInputSourceParentalControl(tmpSourceIndex, tmpCtlFlag); - r->writeInt32(tmpRet); - break; - } - case SSM_READ_INPUT_SRC_PARENTAL_CTL: { - int tmpSourceIndex = p.readInt32(); - int tmpRet = 0; - tmpRet = SSMReadInputSourceParentalControl(tmpSourceIndex); - r->writeInt32(tmpRet); - break; - } - case SSM_SAVE_PARENTAL_CTL_SWITCH: { - int tmpSwitchFlag = p.readInt32(); - int tmpRet; - tmpRet = SSMSaveParentalControlSwitch(tmpSwitchFlag); - r->writeInt32(tmpRet); - break; - } - case SSM_READ_PARENTAL_CTL_SWITCH: { - int tmpRet = 0; - tmpRet = SSMReadParentalControlSwitch(); - r->writeInt32(tmpRet); - break; - } - case SSM_SAVE_PARENTAL_CTL_PASS_WORD: { - String16 pass_wd_str = p.readString16(); - int tmpRet; - tmpRet = SSMSaveParentalControlPassWord((unsigned char *)pass_wd_str.string(), pass_wd_str.size() * sizeof(unsigned short)); - r->writeInt32(tmpRet); - break; - } - case SSM_READ_PARENTAL_CTL_PASS_WORD: { - int tmpChanID = p.readInt32(); - unsigned short tmp_buf [SSM_RW_PARENTAL_CTL_PASSWORD_LEN + 1]; - String16 pass_wd_str; - SSMReadParentalControlPassWord(tmp_buf); - tmp_buf[SSM_RW_PARENTAL_CTL_PASSWORD_LEN / sizeof(unsigned short)] = 0; - //pass_wd_str.setTo((const unsigned short *) tmp_buf); - //r->writeString16(pass_wd_str); - break; - } - case SSM_SAVE_USING_DEF_HDCP_KEY_FLAG: { - break; - } - case SSM_READ_USING_DEF_HDCP_KEY_FLAG: { - break; - } - case SSM_GET_CUSTOMER_DATA_START: { - int tmpRet = 0; - tmpRet = SSMGetCustomerDataStart(); - r->writeInt32(tmpRet); - break; - } - case SSM_GET_CUSTOMER_DATA_LEN: { - int tmpRet = 0; - tmpRet = SSMGetCustomerDataLen(); - r->writeInt32(tmpRet); - break; - } - case SSM_SAVE_STANDBY_MODE: { - int tmp_val = p.readInt32(); - int tmpRet; - tmpRet = SSMSaveStandbyMode(tmp_val); - r->writeInt32(tmpRet); - break; - } - case SSM_READ_STANDBY_MODE: { - int tmpRet = 0; - tmpRet = SSMReadStandbyMode(); - r->writeInt32(tmpRet); - break; - } - case SSM_SAVE_LOGO_ON_OFF_FLAG: { - int tmpSwitchFlag = p.readInt32(); - int tmpRet; - tmpRet = SSMSaveLogoOnOffFlag(tmpSwitchFlag); - r->writeInt32(tmpRet); - break; - } - case SSM_READ_LOGO_ON_OFF_FLAG: { - int tmpRet = 0; - tmpRet = SSMReadLogoOnOffFlag(); - r->writeInt32(tmpRet); - break; - } - case SSM_SAVE_HDMIEQ_MODE: { - int tmpSwitchFlag = p.readInt32(); - int tmpRet; - tmpRet = SSMSaveHDMIEQMode(tmpSwitchFlag); - r->writeInt32(tmpRet); - break; - } - case SSM_READ_HDMIEQ_MODE: { - int tmpRet = 0; - tmpRet = SSMReadHDMIEQMode(); - r->writeInt32(tmpRet); - break; - } - case SSM_SAVE_HDMIINTERNAL_MODE: { - int tmp_val = p.readInt32(); - int tmpRet; - tmpRet = SSMSaveHDMIInternalMode(tmp_val); - r->writeInt32(tmpRet); - break; - } - case SSM_READ_HDMIINTERNAL_MODE: { - int tmpRet = 0; - tmpRet = SSMReadHDMIInternalMode(); - r->writeInt32(tmpRet); - break; - } - case SSM_SAVE_DISABLE_3D: { - int tmp_val = p.readInt32(); - int tmpRet; - tmpRet = SSMSaveDisable3D(tmp_val); - r->writeInt32(tmpRet); - break; - } - case SSM_READ_DISABLE_3D: { - int tmpRet = 0; - tmpRet = SSMReadDisable3D(); - r->writeInt32(tmpRet); - break; - } - case SSM_SAVE_GLOBAL_OGOENABLE: { - int tmp_val = p.readInt32(); - int tmpRet; - tmpRet = SSMSaveGlobalOgoEnable(tmp_val); - r->writeInt32(tmpRet); - break; - } - case SSM_READ_GLOBAL_OGOENABLE: { - int tmpRet = 0; - tmpRet = SSMReadGlobalOgoEnable(); - r->writeInt32(tmpRet); - break; - } - case SSM_SAVE_NON_STANDARD_STATUS: { - int tmp_val = p.readInt32(); - int tmpRet; - tmpRet = SSMSaveNonStandardValue(tmp_val); - r->writeInt32(tmpRet); - break; - } - case SSM_READ_NON_STANDARD_STATUS: { - int tmpRet = 0; - tmpRet = SSMReadNonStandardValue(); - r->writeInt32(tmpRet); - break; - } - case SSM_SAVE_ADB_SWITCH_STATUS: { - int tmp_val = p.readInt32(); - int tmpRet; - tmpRet = SSMSaveAdbSwitchValue(tmp_val); - r->writeInt32(tmpRet); - break; - } - case SSM_READ_ADB_SWITCH_STATUS: { - int tmpRet = 0; - tmpRet = SSMReadAdbSwitchValue(); - r->writeInt32(tmpRet); - break; - } - case SSM_SAVE_SERIAL_CMD_SWITCH_STATUS: { - int tmp_val = p.readInt32(); - int tmpRet; - tmpRet = SSMSaveSerialCMDSwitchValue(tmp_val); - tmpRet |= mpTv->SetSerialSwitch(SERIAL_A, tmp_val); - r->writeInt32(tmpRet); - break; - } - case SSM_READ_SERIAL_CMD_SWITCH_STATUS: { - int tmpRet = 0; - tmpRet = SSMReadSerialCMDSwitchValue(); - r->writeInt32(tmpRet); - break; - } - case SSM_SET_HDCP_KEY: { - int tmpRet = 0; - tmpRet = SSMSetHDCPKey(); - r->writeInt32(tmpRet); - break; - } - case SSM_REFRESH_HDCPKEY: { - int tmpRet = 0; - tmpRet = SSMRefreshHDCPKey(); - r->writeInt32(tmpRet); - break; - } - case SSM_SAVE_CHROMA_STATUS: { - int tmp_val = p.readInt32(); - int tmpRet; - tmpRet = SSMSaveChromaStatus(tmp_val); - r->writeInt32(tmpRet); - break; - } - case SSM_SAVE_CA_BUFFER_SIZE: { - int tmp_val = p.readInt32(); - int tmpRet; - tmpRet = SSMSaveCABufferSizeValue(tmp_val); - r->writeInt32(tmpRet); - break; - } - case SSM_READ_CA_BUFFER_SIZE: { - int tmpRet = 0; - tmpRet = SSMReadCABufferSizeValue(); - r->writeInt32(tmpRet); - break; - } - case SSM_GET_ATV_DATA_START: { - int tmpRet = 0; - tmpRet = SSMGetATVDataStart(); - r->writeInt32(tmpRet); - break; - } - case SSM_GET_ATV_DATA_LEN: { - int tmpRet = 0; - tmpRet = SSMGetATVDataLen(); - r->writeInt32(tmpRet); - break; - } - case SSM_GET_VPP_DATA_START: { - int tmpRet = 0; - tmpRet = SSMGetVPPDataStart(); - r->writeInt32(tmpRet); - break; - } - case SSM_GET_VPP_DATA_LEN: { - int tmpRet = 0; - tmpRet = SSMGetVPPDataLen(); - r->writeInt32(tmpRet); - break; - } - case SSM_SAVE_NOISE_GATE_THRESHOLD_STATUS: { - int tmp_val = p.readInt32(); - int tmpRet; - tmpRet = SSMSaveNoiseGateThresholdValue(tmp_val); - r->writeInt32(tmpRet); - break; - } - case SSM_READ_NOISE_GATE_THRESHOLD_STATUS: { - int tmpRet = 0; - tmpRet = SSMReadNoiseGateThresholdValue(); - r->writeInt32(tmpRet); - break; - } - case SSM_EEPROM_SAVE_ONE_BYTE_N310_N311: { - int tmpOffset = p.readInt32(); - int tmpVal = p.readInt32(); - int tmpRet; - tmpRet = SSMSaveEEP_One_N310_N311(tmpOffset, tmpVal); - r->writeInt32(tmpRet); - break; - } - case SSM_EEPROM_READ_ONE_BYTE_N310_N311: { - int tmpOffset = p.readInt32(); - int tmpRet = 0; - tmpRet = SSMReadEEP_One_N310_N311(tmpOffset); - r->writeInt32(tmpRet); - break; - } - case SSM_EEPROM_SAVE_N_BYTES_N310_N311: { - int i = 0, tmp_offset = 0, tmp_data_len = 0, ret = -1; - - tmp_offset = p.readInt32(); - tmp_data_len = p.readInt32(); - - if (tmp_data_len > 0) { - data_ptr = new int[tmp_data_len]; - - if (data_ptr != NULL) { - for (i = 0; i < tmp_data_len; i++) { - data_ptr[i] = p.readInt32(); - } - - ret = SSMSaveEEP_N_N310_N311(tmp_offset, tmp_data_len, data_ptr); - - delete data_ptr; - data_ptr = NULL; - } - } - - r->writeInt32(ret); - break; - } - case SSM_EEPROM_READ_N_BYTES_N310_N311: { - int i = 0, tmp_offset = 0, tmp_data_len = 0, ret = -1; - tmp_offset = p.readInt32(); - tmp_data_len = p.readInt32(); - - if (tmp_data_len > 0) { - data_ptr = new int[tmp_data_len]; - if (data_ptr != NULL) { - ret = SSMReadEEP_N_N310_N311(tmp_offset, tmp_data_len, data_ptr); - if (ret < 0) { - tmp_data_len = 0; - } - r->writeInt32(tmp_data_len); - for (i = 0; i < tmp_data_len; i++) { - r->writeInt32(data_ptr[i]); - } - delete data_ptr; - data_ptr = NULL; - } - } - r->writeInt32(ret); - break; - } - case SSM_FLASH_SAVE_ONE_BYTE_N310_N311: { - int tmpOffset = p.readInt32(); - int tmpVal = p.readInt32(); - int tmpRet; - tmpRet = SSMSaveFlash_One_N310_N311(tmpOffset, tmpVal); - r->writeInt32(tmpRet); - break; - } - case SSM_FLASH_READ_ONE_BYTE_N310_N311: { - int tmpOffset = p.readInt32(); - int tmpRet = 0; - tmpRet = SSMReadFlash_One_N310_N311(tmpOffset); - r->writeInt32(tmpRet); - break; - } - case SSM_FLASH_SAVE_N_BYTES_N310_N311: { - int i = 0, tmp_offset = 0, tmp_data_len = 0, ret = -1; - - tmp_offset = p.readInt32(); - tmp_data_len = p.readInt32(); - - if (tmp_data_len > 0) { - data_ptr = new int[tmp_data_len]; - - if (data_ptr != NULL) { - for (i = 0; i < tmp_data_len; i++) { - data_ptr[i] = p.readInt32(); - } - - ret = SSMSaveFlash_N_N310_N311(tmp_offset, tmp_data_len, data_ptr); - - delete data_ptr; - data_ptr = NULL; - } - } - - r->writeInt32(ret); - break; - } - case SSM_FLASH_READ_N_BYTES_N310_N311: { - int i = 0, tmp_offset = 0, tmp_data_len = 0, ret = -1; - tmp_offset = p.readInt32(); - tmp_data_len = p.readInt32(); - - if (tmp_data_len > 0) { - data_ptr = new int[tmp_data_len]; - if (data_ptr != NULL) { - ret = SSMReadFlash_N_N310_N311(tmp_offset, tmp_data_len, data_ptr); - if (ret < 0) { - tmp_data_len = 0; - } - r->writeInt32(tmp_data_len); - for (i = 0; i < tmp_data_len; i++) { - r->writeInt32(data_ptr[i]); - } - delete data_ptr; - data_ptr = NULL; - } - } - r->writeInt32(ret); - break; - } - // SSM END - - //MISC - case MISC_PROP_SET: { - int tmpRet; - String16 tmp_str16; - String8 key_str, value_str; - - tmp_str16 = p.readString16(); - key_str = String8(tmp_str16); - tmp_str16 = p.readString16(); - value_str = String8(tmp_str16); - - tmpRet = property_set(key_str.string(), value_str.string()); - r->writeInt32(tmpRet); - break; - } - case MISC_PROP_GET: { - char prop_value[PROPERTY_VALUE_MAX]; - String16 tmp_str16; - String8 key_str, def_str; - - tmp_str16 = p.readString16(); - key_str = String8(tmp_str16); - tmp_str16 = p.readString16(); - def_str = String8(tmp_str16); - - memset(prop_value, '\0', PROPERTY_VALUE_MAX); - property_get(key_str.string(), prop_value, def_str.string()); - tmp_str16 = String16(prop_value); - - r->writeString16(tmp_str16); - break; - } - case MISC_CFG_SET: { - int tmpRet; - String16 tmp_str16; - String8 key_str, value_str; - - tmp_str16 = p.readString16(); - key_str = String8(tmp_str16); - tmp_str16 = p.readString16(); - value_str = String8(tmp_str16); - - tmpRet = config_set_str(CFG_SECTION_TV, key_str.string(), value_str.string()); - r->writeInt32(tmpRet); - break; - } - case MISC_CFG_GET: { - const char *prop_value; - String16 tmp_str16; - String8 key_str, def_str; - - tmp_str16 = p.readString16(); - key_str = String8(tmp_str16); - tmp_str16 = p.readString16(); - def_str = String8(tmp_str16); - - prop_value = config_get_str(CFG_SECTION_TV, key_str.string(), def_str.string()); - tmp_str16 = String16(prop_value); - - r->writeString16(tmp_str16); - break; - } - case MISC_READ_ADC_VAL: { - int tmpChanNum = p.readInt32(); - int tmpRet = 0; - tmpRet = ReadADCSpecialChannelValue(tmpChanNum); - r->writeInt32(tmpRet); - break; - } - case MISC_SET_WDT_USER_PET: { - int counter = p.readInt32(); - int ret = TvMisc_SetUserCounter(counter); - r->writeInt32(ret); - break; - } - case MISC_SET_WDT_USER_COUNTER: { - int counter_time_out = p.readInt32(); - int ret = TvMisc_SetUserCounterTimeOut(counter_time_out); - r->writeInt32(ret); - break; - } - case MISC_SET_WDT_USER_PET_RESET_ENABLE: { - int enable = p.readInt32(); - int ret = TvMisc_SetUserPetResetEnable(enable); - r->writeInt32(ret); - break; - } - case MISC_GET_TV_API_VERSION: { - const char *tmp_str8; - String16 tmp_str16; - - // write tvapi version info - tmp_str8 = tvservice_get_git_branch_info(); - tmp_str16 = String16(tmp_str8); - r->writeString16(tmp_str16); - - tmp_str8 = tvservice_get_git_version_info(); - tmp_str16 = String16(tmp_str8); - r->writeString16(tmp_str16); - - tmp_str8 = tvservice_get_last_chaned_time_info(); - tmp_str16 = String16(tmp_str8); - r->writeString16(tmp_str16); - - tmp_str8 = tvservice_get_build_time_info(); - tmp_str16 = String16(tmp_str8); - r->writeString16(tmp_str16); - - tmp_str8 = tvservice_get_build_name_info(); - tmp_str16 = String16(tmp_str8); - r->writeString16(tmp_str16); - break; - } - case MISC_GET_DVB_API_VERSION: { - const char *tmp_str8; - String16 tmp_str16; - - // write dvb version info - tmp_str8 = dvb_get_git_branch_info(); - tmp_str16 = String16(tmp_str8); - r->writeString16(tmp_str16); - - tmp_str8 = dvb_get_git_version_info(); - tmp_str16 = String16(tmp_str8); - r->writeString16(tmp_str16); - - tmp_str8 = dvb_get_last_chaned_time_info(); - tmp_str16 = String16(tmp_str8); - r->writeString16(tmp_str16); - - tmp_str8 = dvb_get_build_time_info(); - tmp_str16 = String16(tmp_str8); - r->writeString16(tmp_str16); - - tmp_str8 = dvb_get_build_name_info(); - tmp_str16 = String16(tmp_str8); - r->writeString16(tmp_str16); - - break; - } - case MISC_SERIAL_SWITCH: { - int dev_id = p.readInt32(); - int switch_val = p.readInt32(); - int ret = mpTv->SetSerialSwitch(dev_id, switch_val); - r->writeInt32(ret); - break; - } - case MISC_SERIAL_SEND_DATA: { - int i = 0, bufSize = 0, ret = 0; - - int dev_id = p.readInt32(); - - bufSize = p.readInt32(); - if (bufSize > (int)sizeof(tmp_uc_buf)) { - bufSize = sizeof(tmp_uc_buf); - } - - for (i = 0; i < bufSize; i++) { - tmp_uc_buf[i] = p.readInt32() & 0xFF; - } - - ret = mpTv->SendSerialData(dev_id, bufSize, tmp_uc_buf); - r->writeInt32(ret); - break; - } - case MISC_CHANNEL_EXPORT: { - LOGD("MISC_CHANNEL_EXPORT"); - int ret = 0; - String16 tmp_str16; - String8 tmp_str; - - tmp_str16 = p.readString16(); - tmp_str = String8(tmp_str16); - - ret = mpTv->ChannelExport(tmp_str.string()); - r->writeInt32(ret); - break; - } - case MISC_CHANNEL_IMPORT: { - LOGD("MISC_CHANNEL_IMPORT"); - String16 tmp_str16; - String8 tmp_str; - - tmp_str16 = p.readString16(); - tmp_str = String8(tmp_str16); - int ret = 0; - ret = mpTv->ChannelImport(tmp_str.string()); - r->writeInt32(ret); - break; - } - case MISC_GET_PROJECT_INFO: { - String16 tmp_str16; - project_info_t tmpInfo; - - if (mpTv->Tv_GetProjectInfo(&tmpInfo) < 0) { - strcpy(tmpInfo.version, "UNKOWN"); - strcpy(tmpInfo.panel_type, "UNKOWN"); - strcpy(tmpInfo.panel_outputmode, "UNKOWN"); - strcpy(tmpInfo.panel_rev, "UNKOWN"); - strcpy(tmpInfo.panel_name, "UNKOWN"); - strcpy(tmpInfo.amp_curve_name, "UNKOWN"); - } - - r->writeString16(String16(tmpInfo.version)); - r->writeString16(String16(tmpInfo.panel_type)); - r->writeString16(String16(tmpInfo.panel_outputmode)); - r->writeString16(String16(tmpInfo.panel_rev)); - r->writeString16(String16(tmpInfo.panel_name)); - r->writeString16(String16(tmpInfo.amp_curve_name)); - break; - } - case MISC_GET_PLATFORM_TYPE: { - int ret = mpTv->Tv_GetPlatformType(); - r->writeInt32(ret); - break; - } - //MISC END - - // EXTAR - case SET_DEBUG_SERIAL_PORT_ONOFF: { - int on_off = p.readInt32(); - int ret = mpTv->SetDebugSerialOnOff(on_off); - r->writeInt32(ret); - break; - } - - case GET_DEBUG_SERIAL_PORT_ONOFF: { - int ret = mpTv->GetDebugSerialOnOff(); - r->writeInt32(ret); - break; - } - case DELETE_DIR_FILES: { - String16 strPath = p.readString16(); - if (strPath.size() <= 0) { - r->writeInt32(-1); - break; - } - String8 strP8 = String8(strPath); - int tmp_flag = p.readInt32(); - int ret = TvMisc_DeleteDirFiles(strP8.string(), tmp_flag); - r->writeInt32(ret); - break; - } - case DTV_SUBTITLE_INIT: { - int bitmapWidth = p.readInt32(); - int bitmapHeight = p.readInt32(); - r->writeInt32(mpTv->initSubtitle(bitmapWidth, bitmapHeight)); - break; - } - case DTV_SUBTITLE_LOCK: { - r->writeInt32(mpTv->lockSubtitle()); - break; - } - case DTV_SUBTITLE_UNLOCK: { - r->writeInt32(mpTv->unlockSubtitle()); - break; - } - case DTV_GET_SUBTITLE_SWITCH: { - r->writeInt32(mpTv->getSubSwitchStatus()); - break; - } - case DTV_START_SUBTITLE: { - int dmx_id = p.readInt32(); - int pid = p.readInt32(); - int page_id = p.readInt32(); - int anc_page_id = p.readInt32(); - r->writeInt32(mpTv->startSubtitle(dmx_id, pid, page_id, anc_page_id)); - break; - } - case DTV_STOP_SUBTITLE: { - r->writeInt32(mpTv->stopSubtitle()); - break; - } - case DTV_GET_SUBTITLE_INDEX: { - int progId = p.readInt32(); - CTvProgram prog; - CTvProgram::selectByID(progId, prog); - r->writeInt32(prog.getSubtitleIndex(progId)); - break; - } - case DTV_SET_SUBTITLE_INDEX: { - int progId = p.readInt32(); - int index = p.readInt32(); - CTvProgram prog; - CTvProgram::selectByID(progId, prog); - r->writeInt32(prog.setSubtitleIndex(progId, index)); - break; - } - case ATV_GET_CURRENT_PROGRAM_ID: { - int atvLastProgramId = mpTv->getATVProgramID(); - r->writeInt32(atvLastProgramId); - break; - } - case DTV_GET_CURRENT_PROGRAM_ID: { - int dtvLastProgramId = mpTv->getDTVProgramID(); - r->writeInt32(dtvLastProgramId); - break; - } - case ATV_SAVE_PROGRAM_ID: { - int progID = p.readInt32(); - int retCnt = 0; - mpTv->saveATVProgramID(progID); - r->writeInt32(retCnt); - 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; - int tmpRet = 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(tmpRet); - break; - } - case DTV_GET_CHANNEL_INFO: { - int dbID = p.readInt32(); - channel_info_t chan_info; - int 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); - r->writeInt32(ret); - break; - } - case ATV_GET_CHANNEL_INFO: { - int dbID = p.readInt32(); - channel_info_t chan_info; - int 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); - r->writeInt32(ret); - break; - } - case ATV_SCAN_MANUAL: { - int tmpRet = 0; - int startFreq = p.readInt32(); - int endFreq = p.readInt32(); - int videoStd = p.readInt32(); - int audioStd = p.readInt32(); - tmpRet = mpTv->atvMunualScan(startFreq, endFreq, videoStd, audioStd); - mTvService->mpScannerClient = this; - r->writeInt32(tmpRet); - break; - } - - - case ATV_SCAN_AUTO: { - int tmpRet = 0; - LOGD("%s, atv auto scan!!!\n", "TV"); - int videoStd = p.readInt32(); - int audioStd = p.readInt32(); - int searchType = p.readInt32(); - tmpRet = mpTv->atvAutoScan(videoStd, audioStd, searchType); - mTvService->mpScannerClient = this; - r->writeInt32(tmpRet); - break; - } - case DTV_SCAN_MANUAL: { - int tmpRet = 0; - int freq = p.readInt32(); - tmpRet = mpTv->dtvManualScan(freq, freq); - mTvService->mpScannerClient = this; - r->writeInt32(tmpRet); - break; - } - case DTV_SCAN_MANUAL_BETWEEN_FREQ: { - int tmpRet = 0; - int beginFreq = p.readInt32(); - int endFreq = p.readInt32(); - int modulation = p.readInt32(); - tmpRet = mpTv->dtvManualScan(beginFreq, endFreq, modulation); - mTvService->mpScannerClient = this; - r->writeInt32(tmpRet); - break; - } - case DTV_SCAN_AUTO: { - int tmpRet = 0; - tmpRet = mpTv->dtvAutoScan(); - mTvService->mpScannerClient = this; - r->writeInt32(tmpRet); - break; - } - case DTV_SCAN_AUTO_ATSC: { - int tmpRet = 0; - int attenna = p.readInt32(); - int vstd = p.readInt32(); - int astd = p.readInt32(); - tmpRet = mpTv->dtvAutoScanAtscLock(attenna, vstd, astd); - mTvService->mpScannerClient = this; - r->writeInt32(tmpRet); - break; - } - case TV_SUBTITLE_DRAW_END: { - int tmpRet = 0; - //if(pSub)pSub->lock.unlock(); - r->writeInt32(tmpRet); - break; - } - case STOP_PROGRAM_PLAY: { - int tmpRet = -1; - tmpRet = mpTv->stopPlayingLock(); - r->writeInt32(tmpRet); - break; - } - case DTV_TEST_1: { - // int progid = p.readInt32(); - //CTvProgram prog; - // int ret = CTvProgram::selectByID(progid, prog); - //CTvEvent ev; - //ret = ev.getProgPresentEvent(prog.getSrc(), prog.getID(), mpTv->getTvTime(), ev); - //r->writeString16(String16(ev.getName())); - break; - } - case DTV_TEST_2: { - //int cmd = p.readInt32(); - //CTvDatabase::GetTvDb()->importXmlToDB("/etc/tv_default.xml"); - //r->writeString16(String16("xml")); - break; - } - - case TV_CLEAR_ALL_PROGRAM: { - int tmpRet = 0; - int arg0 = p.readInt32(); - - tmpRet = mpTv->clearAllProgram(arg0); - mTvService->mpScannerClient = this; - r->writeInt32(tmpRet); - break; - } - - case GET_DISPLAY_RESOLUTION_CONFIG: { - int tmpRet = 0; - tmpRet = mpTv->GetDisplayResolutionConfig(); - r->writeInt32(tmpRet); - break; - } - - case GET_DISPLAY_RESOLUTION_INFO: { - int tmpRet = 0; - tmpRet = mpTv->GetDisplayResolutionInfo(); - r->writeInt32(tmpRet); - break; - } - - case HDMIRX_CEC_SEND_CUSTOM_MESSAGE: { - int i = 0, tmp_buf_size = 0, ret = 0; - tmp_buf_size = p.readInt32(); - for (i = 0; i < tmp_buf_size; i++) { - tmp_uc_buf[i] = p.readInt32(); - } - - int tmpRet = 0; - tmpRet = mpTv->SendHDMIRxCECCustomMessage(tmp_uc_buf); - r->writeInt32(tmpRet); - break; - } - - case HDMIRX_CEC_SEND_CUSTOM_WAIT_REPLY_MESSAGE: { - int i = 0, tmp_buf_size = 0, ret = 0; - int WaitCmd = 0, timeout = 0; - tmp_buf_size = p.readInt32(); - for (i = 0; i < tmp_buf_size; i++) { - tmp_uc_buf[i] = p.readInt32(); - } - - WaitCmd = p.readInt32(); - timeout = p.readInt32(); - - int tmpRet = 0; - tmpRet = mpTv->SendHDMIRxCECCustomMessageAndWaitReply(tmp_uc_buf, tmp_uc_buf2, WaitCmd, timeout); - - r->writeInt32(tmpRet); - if (tmpRet > 0) { - for (i = 0; i < tmpRet; i++) { - r->writeInt32(tmp_uc_buf2[i]); - } - } - - r->writeInt32(tmpRet); - break; - } - - case HDMIRX_CEC_SEND_BROADCAST_STANDBY_MESSAGE: { - int tmpRet = 0; - tmpRet = mpTv->SendHDMIRxCECBoradcastStandbyMessage(); - r->writeInt32(tmpRet); - break; - } - - case HDMIRX_CEC_SEND_GIVE_CEC_VERSION_MESSAGE: { - int i = 0, tmp_buf_size = 0, ret = 0; - int sourceinput = p.readInt32(); - LOGD("HDMIRX_CEC_SEND_GIVE_CEC_VERSION_MESSAGE: sourceinput = %x", sourceinput); - tmp_buf_size = mpTv->SendHDMIRxCECGiveCECVersionMessage((tv_source_input_t)sourceinput, tmp_uc_buf); - r->writeInt32(tmp_buf_size); - for (i = 0; i < tmp_buf_size; i++) { - r->writeInt32(tmp_uc_buf[i]); - } - r->writeInt32(tmp_buf_size); - break; - } - - case HDMIRX_CEC_SEND_GIVE_DEV_VENDOR_ID_MESSAGE: { - int i = 0, tmp_buf_size = 0, ret = 0; - int sourceinput = p.readInt32(); - LOGD("HDMIRX_CEC_SEND_GIVE_DEV_VENDOR_ID_MESSAGE: sourceinput = %x", sourceinput); - tmp_buf_size = mpTv->SendHDMIRxCECGiveDeviceVendorIDMessage((tv_source_input_t)sourceinput, tmp_uc_buf); - r->writeInt32(tmp_buf_size); - for (i = 0; i < tmp_buf_size; i++) { - r->writeInt32(tmp_uc_buf[i]); - } - r->writeInt32(tmp_buf_size); - break; - } - - case HDMIRX_CEC_SEND_GIVE_OSD_NAME_MESSAGE: { - int i = 0, tmp_buf_size = 0, ret = 0; - int sourceinput = p.readInt32(); - LOGD("HDMIRX_CEC_SEND_GIVE_OSD_NAME_MESSAGE: sourceinput = %x", sourceinput); - tmp_buf_size = mpTv->SendHDMIRxCECGiveOSDNameMessage((tv_source_input_t)sourceinput, tmp_uc_buf); - r->writeInt32(tmp_buf_size); - for (i = 0; i < tmp_buf_size; i++) { - r->writeInt32(tmp_uc_buf[i]); - } - r->writeInt32(tmp_buf_size); - break; - } - - case GET_HDMI_KSV_INFO: { - int tmpRet = 0; - int ksv_data[2] = {0, 0}; - tmpRet = mpTv->GetHdmiHdcpKeyKsvInfo(ksv_data); - r->writeInt32(tmpRet); - r->writeInt32(ksv_data[0]); - r->writeInt32(ksv_data[1]); - break; - } - - case HDMI_OUT_TOWHAT: { - r->writeInt32(mpTv->hdmiOutWithFbc() ? 1 : 0); - break; - } - case FACTORY_FBC_UPGRADE: { - String16 tmpName = p.readString16(); - String8 strName = String8(tmpName); - sprintf((char *)tmp_uc_buf, "%s", strName.string()); - int mode = p.readInt32(); - int upgrade_blk_size = p.readInt32(); - int ret = mpTv->StartUpgradeFBC((char *)tmp_uc_buf, mode, upgrade_blk_size); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_SET_BRIGHTNESS: { - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySet_FBC_Brightness(value); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_GET_BRIGHTNESS: { - int ret = mpTv->Tv_FactoryGet_FBC_Brightness(); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_SET_CONTRAST: { - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySet_FBC_Contrast(value); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_GET_CONTRAST: { - int ret = mpTv->Tv_FactoryGet_FBC_Contrast(); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_SET_SATURATION: { - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySet_FBC_Saturation(value); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_GET_SATURATION: { - int ret = mpTv->Tv_FactoryGet_FBC_Saturation(); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_SET_HUE: { - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySet_FBC_HueColorTint(value); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_GET_HUE: { - int ret = mpTv->Tv_FactoryGet_FBC_HueColorTint(); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_SET_BACKLIGHT: { - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySet_FBC_Backlight(value); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_GET_BACKLIGHT: { - int ret = mpTv->Tv_FactoryGet_FBC_Backlight(); - r->writeInt32(ret); - break; - } - case FACTROY_FBC_SET_LIGHT_SENSOR_STATUS_N310: { - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySet_FBC_LightSensor_Status_N310(value); - r->writeInt32(ret); - break; - } - - case FACTROY_FBC_GET_LIGHT_SENSOR_STATUS_N310: { - int ret = mpTv->Tv_FactoryGet_FBC_LightSensor_Status_N310(); - r->writeInt32(ret); - break; - } - case FACTROY_FBC_SET_DREAM_PANEL_STATUS_N310: { - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySet_FBC_Dream_Panel_Status_N310(value); - r->writeInt32(ret); - break; - } - - case FACTROY_FBC_GET_DREAM_PANEL_STATUS_N310: { - int ret = mpTv->Tv_FactoryGet_FBC_Dream_Panel_Status_N310(); - r->writeInt32(ret); - break; - } - case FACTROY_FBC_SET_MULT_PQ_STATUS_N310: { - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySet_FBC_MULT_PQ_Status_N310(value); - r->writeInt32(ret); - break; - } - - case FACTROY_FBC_GET_MULT_PQ_STATUS_N310: { - int ret = mpTv->Tv_FactoryGet_FBC_MULT_PQ_Status_N310(); - r->writeInt32(ret); - break; - } - case FACTROY_FBC_SET_MEMC_STATUS_N310: { - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySet_FBC_MEMC_Status_N310(value); - r->writeInt32(ret); - break; - } - - case FACTROY_FBC_GET_MEMC_STATUS_N310: { - int ret = mpTv->Tv_FactoryGet_FBC_MEMC_Status_N310(); - r->writeInt32(ret); - break; - } - - case MISC_SET_2K_TO_4K_SCALE_UP_MODE : { - int value = p.readInt32(); - int ret = mpTv->Tv_Set2k4k_ScalerUp_Mode(value); - r->writeInt32(ret); - break; - } - - case MISC_GET_2K_TO_4K_SCALE_UP_MODE: { - int ret = mpTv->Tv_Get2k4k_ScalerUp_Mode(); - r->writeInt32(ret); - break; - } - case FACTORY_FBC_SET_BACKLIGHT_EN : { - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySet_FBC_backlight_onoff(value); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_GET_BACKLIGHT_EN: { - int ret = mpTv->Tv_FactoryGet_FBC_backlight_onoff(); - r->writeInt32(ret); - break; - } - case FACTORY_FBC_TEST_PATTERN: { - int value = p.readInt32(); - int ret = mpTv->Tv_SetTestPattern(value); - r->writeInt32(ret); - break; - } - case FACTORY_FBC_SET_LVDS_SSG: { - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySet_FBC_LVDS_SSG_Set(value); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_SET_ELEC_MODE: { - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySet_FBC_ELEC_MODE(value); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_GET_ELEC_MODE: { - int ret = mpTv->Tv_FactoryGet_FBC_ELEC_MODE(); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_SET_BACKLIGHT_N360: { - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySet_FBC_BACKLIGHT_N360(value); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_GET_BACKLIGHT_N360: { - int ret = mpTv->Tv_FactoryGet_FBC_BACKLIGHT_N360(); - r->writeInt32(ret); - break; - } - - - case FACTORY_FBC_SET_PIC_MODE: { - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySet_FBC_Picture_Mode(value); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_GET_PIC_MODE: { - int ret = mpTv->Tv_FactoryGet_FBC_Picture_Mode(); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_SET_TEST_PATTERN: { - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySet_FBC_Set_Test_Pattern(value); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_GET_TEST_PATTERN: { - int ret = mpTv->Tv_FactoryGet_FBC_Get_Test_Pattern(); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_SET_GAIN_RED: { - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySet_FBC_Gain_Red(value); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_GET_GAIN_RED: { - int ret = mpTv->Tv_FactoryGet_FBC_Gain_Red(); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_SET_GAIN_GREEN: { - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySet_FBC_Gain_Green(value); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_GET_GAIN_GREEN: { - int ret = mpTv->Tv_FactoryGet_FBC_Gain_Green(); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_SET_GAIN_BLUE: { - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySet_FBC_Gain_Blue(value); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_GET_GAIN_BLUE: { - int ret = mpTv->Tv_FactoryGet_FBC_Gain_Blue(); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_SET_OFFSET_RED: { - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySet_FBC_Offset_Red(value); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_GET_OFFSET_RED: { - int ret = mpTv->Tv_FactoryGet_FBC_Offset_Red(); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_SET_OFFSET_GREEN: { - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySet_FBC_Offset_Green(value); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_GET_OFFSET_GREEN: { - int ret = mpTv->Tv_FactoryGet_FBC_Offset_Green(); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_SET_OFFSET_BLUE: { - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySet_FBC_Offset_Blue(value); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_GET_OFFSET_BLUE: { - int ret = mpTv->Tv_FactoryGet_FBC_Offset_Blue(); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_SET_COLORTEMP_MODE: { - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySet_FBC_ColorTemp_Mode(value); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_GET_COLORTEMP_MODE: { - int ret = mpTv->Tv_FactoryGet_FBC_ColorTemp_Mode(); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_SET_COLORTEMP_MODE_N360: { - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySet_FBC_ColorTemp_Mode_N360(value); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_GET_COLORTEMP_MODE_N360: { - int ret = mpTv->Tv_FactoryGet_FBC_ColorTemp_Mode_N360(); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_SET_WB_INIT: { - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySet_FBC_WB_Initial(value); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_GET_WB_INIT: { - int ret = mpTv->Tv_FactoryGet_FBC_WB_Initial(); - r->writeInt32(ret); - break; - } - - case FACTORY_FBC_GET_MAINCODE_VERSION: { - char sw_version[64]; - char build_time[64]; - char git_version[64]; - char git_branch[64]; - char build_name[64]; - CFbcCommunication *fbcIns = GetSingletonFBC(); - if (fbcIns != NULL) { - fbcIns->cfbc_Get_FBC_MAINCODE_Version(COMM_DEV_SERIAL, sw_version, build_time, git_version, git_branch, build_name); - r->writeString16(String16(sw_version)); - r->writeString16(String16(build_time)); - r->writeString16(String16(git_version)); - r->writeString16(String16(git_branch)); - r->writeString16(String16(build_name)); - } else { - r->writeString16(String16("No FBC")); - r->writeString16(String16("No FBC")); - r->writeString16(String16("No FBC")); - r->writeString16(String16("No FBC")); - r->writeString16(String16("No FBC")); - } - break; - } - case FACTORY_SET_SN: { - char StrFactSN[256] = {0}; - String16 strTemFactorySn = p.readString16(); - String8 strFactorySn = String8(strTemFactorySn); - sprintf((char *)StrFactSN, "%s", strFactorySn.string()); - CFbcCommunication *fbcIns = GetSingletonFBC(); - if (fbcIns != NULL) { - int iRet = fbcIns->cfbc_Set_FBC_Factory_SN(COMM_DEV_SERIAL, (const char *)StrFactSN); - r->writeInt32(iRet); - } else { - r->writeInt32(-1); - } - break; - } - case FACTORY_GET_SN: { - char factorySerialNumber[256] = {0}; - memset((void *)factorySerialNumber, 0, 256); - CFbcCommunication *fbcIns = GetSingletonFBC(); - if (fbcIns != NULL) { - fbcIns->cfbc_Get_FBC_Factory_SN(COMM_DEV_SERIAL, factorySerialNumber); - r->writeString16(String16(factorySerialNumber)); - } else { - r->writeString16(String16("No FBC")); - } - break; - } - case FACTORY_FBC_PANEL_GET_INFO: { - char panel_model[64]; - CFbcCommunication *fbcIns = GetSingletonFBC(); - if (fbcIns != NULL) { - fbcIns->cfbc_Get_FBC_Get_PANel_INFO(COMM_DEV_SERIAL, panel_model); - r->writeString16(String16(panel_model)); - } else { - r->writeString16(String16("")); - } - break; - } - case FACTORY_FBC_PANEL_POWER_SWITCH: { - int value = p.readInt32(); - CFbcCommunication *fbcIns = GetSingletonFBC(); - if (fbcIns != NULL) { - int ret = fbcIns->cfbc_Set_FBC_panel_power_switch(COMM_DEV_SERIAL, value); - r->writeInt32(ret); - } else { - r->writeInt32(-1); - } - break; - } - case FACTORY_FBC_PANEL_SUSPEND: { - int value = p.readInt32(); - CFbcCommunication *fbcIns = GetSingletonFBC(); - if (fbcIns != NULL) { - int ret = fbcIns->cfbc_Set_FBC_suspend(COMM_DEV_SERIAL, value); - r->writeInt32(ret); - } else { - r->writeInt32(-1); - } - break; - } - case FACTORY_FBC_PANEL_USER_SETTING_DEFAULT: { - int value = p.readInt32(); - CFbcCommunication *fbcIns = GetSingletonFBC(); - if (fbcIns != NULL) { - int ret = fbcIns->cfbc_Set_FBC_User_Setting_Default(COMM_DEV_SERIAL, value); - r->writeInt32(ret); - } else { - r->writeInt32(-1); - } - break; - } - case FACTORY_FBC_VIDEO_MUTE: { - CFbcCommunication *fbcIns = GetSingletonFBC(); - if (fbcIns != NULL) { - int ret = fbcIns->cfbc_Set_VMute(COMM_DEV_SERIAL, 1); - r->writeInt32(ret); - } else { - r->writeInt32(-1); - } - break; - } - case FACTORY_FBC_POWER_REBOOT: { - int value = p.readInt32(); - CFbcCommunication *fbcIns = GetSingletonFBC(); - if (fbcIns != NULL) { - int ret = fbcIns->cfbc_SendRebootToUpgradeCmd(COMM_DEV_SERIAL, value); - r->writeInt32(ret); - } else { - r->writeInt32(-1); - } - break; - } - case FACTORY_FBC_SEND_KEY_TO_FBC: { - int keyCode = p.readInt32(); - int param = p.readInt32(); - CFbcCommunication *fbcIns = GetSingletonFBC(); - if (fbcIns != NULL) { - int ret = fbcIns->cfbc_FBC_Send_Key_To_Fbc(COMM_DEV_SERIAL, keyCode, param); - r->writeInt32(ret); - } else { - r->writeInt32(-1); - } - break; - } - case FACTORY_WHITE_BALANCE_SET_GAIN_RED: { - int source_type = p.readInt32(); - int colortemp_mode = p.readInt32(); - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySetWhiteBalanceRedGain(source_type, colortemp_mode, value); - r->writeInt32(ret); - break; - } - case FACTORY_WHITE_BALANCE_GET_GAIN_RED: { - int source_type = p.readInt32(); - int colortemp_mode = p.readInt32(); - int ret = mpTv->Tv_FactoryGetWhiteBalanceRedGain(source_type, colortemp_mode); - r->writeInt32(ret); - break; - } - case FACTORY_WHITE_BALANCE_SET_GAIN_GREEN: { - int source_type = p.readInt32(); - int colortemp_mode = p.readInt32(); - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySetWhiteBalanceGreenGain(source_type, colortemp_mode, value); - r->writeInt32(ret); - break; - } - case FACTORY_WHITE_BALANCE_GET_GAIN_GREEN: { - int source_type = p.readInt32(); - int colortemp_mode = p.readInt32(); - int ret = mpTv->Tv_FactoryGetWhiteBalanceGreenGain(source_type, colortemp_mode); - r->writeInt32(ret); - break; - } - case FACTORY_WHITE_BALANCE_SET_GAIN_BLUE: { - int source_type = p.readInt32(); - int colortemp_mode = p.readInt32(); - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySetWhiteBalanceBlueGain(source_type, colortemp_mode, value); - r->writeInt32(ret); - break; - } - case FACTORY_WHITE_BALANCE_GET_GAIN_BLUE: { - int source_type = p.readInt32(); - int colortemp_mode = p.readInt32(); - int ret = mpTv->Tv_FactoryGetWhiteBalanceBlueGain(source_type, colortemp_mode); - r->writeInt32(ret); - break; - } - case FACTORY_WHITE_BALANCE_SET_OFFSET_RED: { - int source_type = p.readInt32(); - int colortemp_mode = p.readInt32(); - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySetWhiteBalanceRedOffset(source_type, colortemp_mode, value); - r->writeInt32(ret); - break; - } - case FACTORY_WHITE_BALANCE_GET_OFFSET_RED: { - int source_type = p.readInt32(); - int colortemp_mode = p.readInt32(); - int ret = mpTv->Tv_FactoryGetWhiteBalanceRedOffset(source_type, colortemp_mode); - r->writeInt32(ret); - break; - } - case FACTORY_WHITE_BALANCE_SET_OFFSET_GREEN: { - int source_type = p.readInt32(); - int colortemp_mode = p.readInt32(); - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySetWhiteBalanceGreenOffset(source_type, colortemp_mode, value); - r->writeInt32(ret); - break; - } - case FACTORY_WHITE_BALANCE_GET_OFFSET_GREEN: { - int source_type = p.readInt32(); - int colortemp_mode = p.readInt32(); - int ret = mpTv->Tv_FactoryGetWhiteBalanceGreenOffset(source_type, colortemp_mode); - r->writeInt32(ret); - break; - } - case FACTORY_WHITE_BALANCE_SET_OFFSET_BLUE: { - int source_type = p.readInt32(); - int colortemp_mode = p.readInt32(); - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySetWhiteBalanceBlueOffset(source_type, colortemp_mode, value); - r->writeInt32(ret); - break; - } - case FACTORY_WHITE_BALANCE_GET_OFFSET_BLUE: { - int source_type = p.readInt32(); - int colortemp_mode = p.readInt32(); - int ret = mpTv->Tv_FactoryGetWhiteBalanceBlueOffset(source_type, colortemp_mode); - r->writeInt32(ret); - break; - } - case FACTORY_WHITE_BALANCE_GET_COLOR_TMP: { - int source_type = p.readInt32(); - int ret = mpTv->Tv_FactoryGetWhiteBalanceColorTempMode(source_type); - r->writeInt32(ret); - break; - } - case FACTORY_WHITE_BALANCE_SET_COLOR_TMP: { - int source_type = p.readInt32(); - int Tempmode = p.readInt32(); - int is_save = p.readInt32(); - int ret = mpTv->Tv_FactorySetWhiteBalanceColorTempMode(source_type, Tempmode, is_save); - r->writeInt32(ret); - break; - } - case FACTORY_WHITE_BALANCE_SAVE_PRAMAS: { - int source_type = p.readInt32(); - int mode = p.readInt32(); - int r_gain = p.readInt32(); - int g_gain = p.readInt32(); - int b_gain = p.readInt32(); - int r_offset = p.readInt32(); - int g_offset = p.readInt32(); - int b_offset = p.readInt32(); - int ret = mpTv->Tv_FactorySaveWhiteBalancePramas(source_type, mode, r_gain, g_gain, b_gain, r_offset, g_offset, b_offset); - r->writeInt32(ret); - break; - } - case FACTORY_WHITE_BALANCE_OPEN_GRAY_PATTERN: { - int ret = mpTv->Tv_FactoryOpenWhiteBalanceGrayPattern(); - r->writeInt32(ret); - break; - } - case FACTORY_WHITE_BALANCE_CLOSE_GRAY_PATTERN: { - int ret = mpTv->Tv_FactoryCloseWhiteBalanceGrayPattern(); - r->writeInt32(ret); - break; - } - case FACTORY_WHITE_BALANCE_SET_GRAY_PATTERN: { - int value = p.readInt32(); - int ret = mpTv->Tv_FactorySetWhiteBalanceGrayPattern(value); - r->writeInt32(ret); - break; - } - case FACTORY_WHITE_BALANCE_GET_GRAY_PATTERN: { - int ret = mpTv->Tv_FactoryGetWhiteBalanceGrayPattern(); - r->writeInt32(ret); - break; - } - case FACTORY_WHITE_BALANCE_GET_ALL_PRAMAS: { - int Tempmode = p.readInt32(); - tcon_rgb_ogo_t params; - int ret = mpTv->GetColorTemperatureParams((vpp_color_temperature_mode_t)Tempmode, ¶ms); - r->writeInt32(ret); - r->writeInt32(params.r_gain); - r->writeInt32(params.g_gain); - r->writeInt32(params.b_gain); - r->writeInt32(params.r_post_offset); - r->writeInt32(params.g_post_offset); - r->writeInt32(params.b_post_offset); - } - case STOP_SCAN: { - mpTv->stopScanLock(); - break; - } - case DTV_GET_SNR: { - int tmpRet = 0; - tmpRet = mpTv->getFrontendSNR(); - r->writeInt32(tmpRet); - break; - } - case DTV_GET_BER: { - int tmpRet = 0; - tmpRet = mpTv->getFrontendBER(); - r->writeInt32(tmpRet); - break; - } - case DTV_GET_STRENGTH: { - int tmpRet = 0; - tmpRet = mpTv->getFrontendSignalStrength(); - r->writeInt32(tmpRet); - break; - } - case DTV_GET_AUDIO_TRACK_NUM: { - int programId = p.readInt32(); - int retCnt = 0; - retCnt = mpTv->getAudioTrackNum(programId); - r->writeInt32(retCnt); - break; - } - case DTV_GET_AUDIO_TRACK_INFO: { - int progId = p.readInt32(); - int aIdx = p.readInt32(); - int aFmt = -1; - int iRet = -1; - String8 lang; - iRet = 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(); - int ret = -1; - ret = mpTv->switchAudioTrack(aPid, aFmt, aParam); - r->writeInt32(ret); - 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; - currChannelMod = mpTv->getAudioChannel(); - r->writeInt32(currChannelMod); - break; - } - case DTV_GET_CUR_FREQ: { - int progId = p.readInt32(); - int freq = 0; - int iRet = -1; - CTvProgram prog; - CTvChannel channel; - - iRet = CTvProgram::selectByID(progId, prog); - if (0 != iRet) return -1; - prog.getChannel(channel); - freq = channel.getFrequency(); - r->writeInt32(freq); - break; - } - case DTV_GET_EPG_UTC_TIME: { - int iRet = -1; - int utcTime = 0; - - 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: { - int iRet = -1; - int iObOutSize = 0; - Vector<sp<CTvEvent> > epgOut; - int progid = p.readInt32(); - int iUtcStartTime = p.readInt32(); - int iDurationTime = p.readInt32(); - CTvProgram prog; - CTvEvent ev; - iRet = CTvProgram::selectByID(progid, prog); - if (0 != iRet) { - break; - } - iRet = ev.getProgScheduleEvents(prog.getSrc(), prog.getID(), iUtcStartTime, iDurationTime, epgOut); - if (0 != iRet) { - break; - } - 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->startAutoBackLight(); - break; - } - case STOP_AUTO_BACKLIGHT: { - mpTv->stopAutoBackLight(); - break; - } - case IS_AUTO_BACKLIGHTING: { - int on = mpTv->getAutoBackLight_on_off(); - r->writeInt32(on); - break; - } - case GET_AVERAGE_LUMA: { - int ret = mpTv->getAverageLuma(); - r->writeInt32(ret); - break; - } - case GET_AUTO_BACKLIGHT_DATA: { - int i; - int size = mpTv->getAutoBacklightData(tmp_i_buf); - r->writeInt32(size); - for (i = 0; i < size; i++) { - r->writeInt32(tmp_i_buf[i]); - } - break; - } - case SET_AUTO_BACKLIGHT_DATA: { - String16 tmp_str16; - String8 value_str; - - tmp_str16 = p.readString16(); - value_str = String8(tmp_str16); - - int ret = mpTv->setAutobacklightData(value_str); - r->writeInt32(ret); - 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_SET_BOOKING_FLAG: { - CTvEvent ev; - int iEvtId = p.readInt32(); - bool iBookFlag = (bool)p.readInt32(); - ev.bookEvent(iEvtId, iBookFlag); - break; - } - case DTV_GET_FREQ_BY_PROG_ID: { - int freq = 0; - int progid = p.readInt32(); - CTvProgram prog; - int ret = CTvProgram::selectByID(progid, prog); - if (ret != 0) return -1; - CTvChannel channel; - prog.getChannel(channel); - freq = channel.getFrequency(); - r->writeInt32(freq); - 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: { - int ret = -1; - 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); - r->writeInt32(ret); - 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_START_RECORD: { - char buf[256]; - String16 tmpName = p.readString16(); - String8 strName = String8(tmpName); - sprintf(buf, "%s", strName.string()); - mpTv->SetRecordFileName(buf); - mpTv->StartToRecord(); - } - break; - case DTV_STOP_RECORD: - mpTv->StopRecording(); - break; - case DTV_SET_RECORD_ALL_TS: { - int sel = p.readInt32(); - mpTv->SetRecCurTsOrCurProgram(sel); - } - break; - case TV_PRINT_DEBUG_INFO: - mpTv->printDebugInfo(); - break; - case HDMIAV_HOTPLUGDETECT_ONOFF: { - int flag = mpTv->GetHdmiAvHotplugDetectOnoff(); - r->writeInt32(flag); - } - break; - - // 2.4G headset - case START_OPEN_HEADSET_DETECT: { - int flag = mpTv->StartHeadSetDetect(); - r->writeInt32(flag); - } - break; - - // EXTAR END - default: - LOGD("default"); - break; - } - - LOGD("exit client=%d cmd=%d", getCallingPid(), cmd); - return 0; -} - -sp<TvService::Client> TvService::Client::getClientFromCookie(void *user) -{ - sp<Client> client = 0; - /* - TvService *service = static_cast<TvService*> (user); - if (service != NULL) { - Mutex::Autolock ourLock(service->mServiceLock); - if (service->mClient != 0) { - client = service->mClient.promote(); - if (client == 0) { - LOGE("getClientFromCookie: client appears to have died"); - service->mClient.clear(); - } - } else { - LOGE("getClientFromCookie: got callback but client was NULL"); - } - }*/ - - user = user;//for warning - return client; -} - -void TvService::Client::notifyCallback(int32_t msgType, int32_t ext1, int32_t ext2, void *user) -{ - LOGD("notifyCallback(%d)", msgType); - - sp<Client> client = getClientFromCookie(user); - if (client == 0) { - return; - } - - switch (msgType) { - //case TV_MSG_SHUTTER: - // ext1 is the dimension of the yuv picture. - // client->handleShutter((image_rect_type *)ext1); - // break; - default: - sp<ITvClient> c = client->mTvClient; - if (c != NULL) { - //c->notifyCallback(msgType, ext1, ext2); - } - break; - } - - //for warning - ext1 = ext1; - ext2 = ext2; - -#if DEBUG_CLIENT_REFERENCES - if (client->getStrongCount() == 1) { - LOGE("++++++++++++++++ (NOTIFY CALLBACK) THIS WILL CAUSE A LOCKUP!"); - client->printRefs(); - } -#endif -} - -int TvService::Client::notifyCallback(const int &msgtype, const Parcel &p) -{ - mTvClient->notifyCallback(msgtype, p); - return 0; -} - -status_t TvService::onTransact(uint32_t code, const Parcel &data, Parcel *reply, uint32_t flags) -{ - // permission checks... - switch (code) { - case BnTvService::CONNECT: - IPCThreadState *ipc = IPCThreadState::self(); - const int pid = ipc->getCallingPid(); - const int self_pid = getpid(); - if (pid != self_pid) { - // we're called from a different process, do the real check - /*if (!checkCallingPermission( - String16("android.permission.TV"))) - { - const int uid = ipc->getCallingUid(); - LOGE("Permission Denial: " - "can't use the tv pid=%d, uid=%d", pid, uid); - return PERMISSION_DENIED; - }*/ - } - break; - } - - status_t err = BnTvService::onTransact(code, data, reply, flags); - -#if DEBUG_HEAP_LEAKS - LOGE("+++ onTransact err %d code %d", err, code); - - if (err == UNKNOWN_TRANSACTION || err == PERMISSION_DENIED) { - LOGE("+++ onTransact code %d", code); - - CHECK_INTERFACE(ITvService, data, reply); - - switch (code) { - case 1000: { - if (gWeakHeap != 0) { - sp<IMemoryHeap> h = gWeakHeap.promote(); - IMemoryHeap *p = gWeakHeap.unsafe_get(); - LOGE("CHECKING WEAK REFERENCE %p (%p)", h.get(), p); - if (h != 0) - h->printRefs(); - bool attempt_to_delete = data.readInt32() == 1; - if (attempt_to_delete) { - // NOT SAFE! - LOGE("DELETING WEAK REFERENCE %p (%p)", h.get(), p); - if (p) delete p; - } - return NO_ERROR; - } - } - break; - default: - break; - } - } -#endif // DEBUG_HEAP_LEAKS - return err; -} - diff --git a/tvapi/android/tvserver/TvService.h b/tvapi/android/tvserver/TvService.h deleted file mode 100644 index a6b4e9f..0000000 --- a/tvapi/android/tvserver/TvService.h +++ b/dev/null @@ -1,90 +0,0 @@ -#ifndef ANDROID_SERVERS_TV_TVSERVICE_H -#define ANDROID_SERVERS_TV_TVSERVICE_H - -#include <include/ITvService.h> -//#include <include/Tv.h> -#include <utils/threads.h> -#include <utils/Vector.h> -#include <stdint.h> -#include <tv/CTv.h> -#include "tv/CTvScreenCapture.h" - -using namespace android; - -#define DEBUG_HEAP_LEAKS 0 -#define RESOURCE_NUMS 5 - -class TvService: public BnTvService , public CTv::TvIObserver, public CTvScreenCapture::TvIObserver { -public: - class Client: public BnTv { - public: - Client(const sp<TvService> &tvService, const sp<ITvClient> &tvClient, pid_t clientPid, CTv *pTv); - Client(); - virtual ~Client(); - virtual void disconnect(); - virtual status_t connect(const sp<ITvClient> &client); - virtual status_t lock(); - virtual status_t unlock(); - virtual status_t processCmd(const Parcel &p, Parcel *r); - virtual status_t createSubtitle(const sp<IMemory> &share_mem); - virtual status_t createVideoFrame(const sp<IMemory> &share_mem, int iSourceMode, int iCapVideoLayerOnly); - - // our client... - const sp<ITvClient> &getTvClient() const - { - return mTvClient; - } - - int notifyCallback(const int &msgtype, const Parcel &p); - String16 mStrName; - static void notifyCallback(int32_t msgType, int32_t ext1, int32_t ext2, void *user); - private: - friend class CTv; - friend class TvService; - status_t checkPid(); - static sp<Client> getClientFromCookie(void *user); - - mutable Mutex mLock; - mutable Condition mReady; - sp<TvService> mTvService; - sp<ITvClient> mTvClient; - pid_t mClientPid; - int mGetNotifyFlag; - int mCurProgIndex; - CTv *mpTv; - bool mIsStartTv; - sp<IMemory> mSubBmpBuf; - };//end client - - static void instantiate(); - static TvService *mTvService; - static TvService *getIntance() - { - if (mTvService == NULL) - mTvService = new TvService(); - return mTvService; - } - virtual sp<ITv> connect(const sp<ITvClient> &tvClient); - - virtual void onTvEvent(const CTvEv &ev); - void removeClient(const sp<ITvClient> &tvClient); - - Client *mpStartTvClient; - wp<Client> mpScannerClient; - wp<Client> mpSubClient; - Vector< wp<Client> > m_v_Clients; - -private: - TvService(); - virtual ~TvService(); - virtual status_t onTransact(uint32_t code, const Parcel &data, Parcel *reply, uint32_t flags); - volatile int32_t mUsers; - virtual void incUsers(); - virtual void decUsers(); - mutable Mutex mServiceLock; - static CTv *mpTv; - CTvScreenCapture mCapVidFrame; - -}; - -#endif diff --git a/tvapi/android/tvserver/main.cpp b/tvapi/android/tvserver/main.cpp deleted file mode 100644 index f26b7cb..0000000 --- a/tvapi/android/tvserver/main.cpp +++ b/dev/null @@ -1,23 +0,0 @@ -#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/tvapi/android/tvserver/tv_callback.h b/tvapi/android/tvserver/tv_callback.h deleted file mode 100644 index 511bbba..0000000 --- a/tvapi/android/tvserver/tv_callback.h +++ b/dev/null @@ -1,17 +0,0 @@ -#ifndef TV_CALLBACK -#define TV_CALLBACK -#include "tvapi/android/tv/CTv.h" -class TvCallback : public CTv::TvIObserver { -public: - TvCallback(void *data) - { - mPri = data; - } - ~TvCallback() - { - } - void onTvEvent (int32_t msgType, const Parcel &p); -private: - void *mPri; -}; -#endif diff --git a/tvapi/build/include/.gitignore b/tvapi/build/include/.gitignore deleted file mode 100644 index e69de29..0000000 --- a/tvapi/build/include/.gitignore +++ b/dev/null diff --git a/tvapi/docs/TVMiddleware初期.wps b/tvapi/docs/TVMiddleware初期.wps deleted file mode 100644 index 2a842e7..0000000 --- a/tvapi/docs/TVMiddleware初期.wps +++ b/dev/null @@ -1,252 +0,0 @@ -ࡱ -NB\vj -NB\S(u, -NB\. -NNNN, -NN(u^\NT -NSNTekYt}Y, - - - - - - - - - - - - -& -& -& -& -& -& -& -& -& -& - - -& -& -& -& -& -& -& -& -& -& -& - -& -& -& -& -& -& -& -& -& -& -& -& -& -& -& -& -& -& -& -& -& - -& -& -& -& -& -& -& -& -& -& -& -& -& -& -& -& -& -& -& -& -& -& -& -& -& -& -& -& -& -& -& -& -& -& -& -& -& -& -& - -& -0 -0 - - -6mҍ~>N{Tr -<@-J~bDien-lؠ3XPj*U
RXftlVu,|[2[ƠXMŲ/́bx
gd
L -H$< \_CQ>87!\L/@CW
@mD -"X3 -ih -9d`,]pZN -UϼNL6k&gDg
5u^=l@!9 -i64nJ iQmq;-k;>(P.H|Ǯz{N -`YB`nH"k6W6sRX)PПa,Kٜd_ߵY79iRݻl,$<7eDe/4KA_!r6ڰ 6fAoCh4(*CWZxpu084ٕkWBhwjX/[E0N(2u6 -Yō}SSx9N.9-9rQZ+C;dʼn-~ΘYu$;hǶ&q$~p~gc)f;͚,coi߆8F_LnHrMqajIVC証OðwxK -,6Kߺ:xrc'H^ZDӾqYj_q㑋K4n$0}{D@%*/$װOyReY ?ȂLYR_늲@-?k5x= -9G3βԩ0ȓa]x@)bʸqt
ʢCˠbT1lvݵ/ - - - - - -000000;[ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tvapi/docs/tv.uml b/tvapi/docs/tv.uml deleted file mode 100644 index 15238f7..0000000 --- a/tvapi/docs/tv.uml +++ b/dev/null @@ -1,6093 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<XPD:PROJECT xmlns:XPD="http://www.staruml.com" version="1"> -<XPD:HEADER> -<XPD:SUBUNITS> -</XPD:SUBUNITS> -<XPD:PROFILES> -<XPD:PROFILE>UMLStandard</XPD:PROFILE> -<XPD:PROFILE>Java</XPD:PROFILE> -<XPD:PROFILE>Cpp</XPD:PROFILE> -</XPD:PROFILES> -</XPD:HEADER> -<XPD:BODY> -<XPD:OBJ name="DocumentElement" type="UMLProject" guid="CoZuu0bDp0eooW1pQg6aQwAA"> -<XPD:ATTR name="Title" type="string">tv</XPD:ATTR> -<XPD:ATTR name="#OwnedElements" type="integer">5</XPD:ATTR> -<XPD:OBJ name="OwnedElements[0]" type="UMLModel" guid="6Ncym1qqME6Qmj4IRHZMIQAA"> -<XPD:ATTR name="Name" type="string">Use Case Model</XPD:ATTR> -<XPD:ATTR name="StereotypeProfile" type="string">UMLStandard</XPD:ATTR> -<XPD:ATTR name="StereotypeName" type="string">useCaseModel</XPD:ATTR> -<XPD:REF name="Namespace">CoZuu0bDp0eooW1pQg6aQwAA</XPD:REF> -<XPD:ATTR name="#OwnedDiagrams" type="integer">1</XPD:ATTR> -<XPD:OBJ name="OwnedDiagrams[0]" type="UMLUseCaseDiagram" guid="nzFiqgF5PEKC+zYpaFKlCQAA"> -<XPD:ATTR name="Name" type="string">tv功</XPD:ATTR> -<XPD:REF name="DiagramOwner">6Ncym1qqME6Qmj4IRHZMIQAA</XPD:REF> -<XPD:OBJ name="DiagramView" type="UMLUseCaseDiagramView" guid="nx0lwQzrskWozLI1S3LzQgAA"> -<XPD:REF name="Diagram">nzFiqgF5PEKC+zYpaFKlCQAA</XPD:REF> -<XPD:ATTR name="#OwnedViews" type="integer">17</XPD:ATTR> -<XPD:OBJ name="OwnedViews[0]" type="UMLActorView" guid="gvI3mIExBEmaszVtF0V6bwAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">116</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">40</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">86</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">78</XPD:ATTR> -<XPD:REF name="Model">jE6Hh4xWzk+ss1P1I88QbQAA</XPD:REF> -<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="FSYMWbRzs0mJbYfl9CkXfAAA"> -<XPD:OBJ name="NameLabel" type="LabelView" guid="+Fy828Qip0uc61sSAd0UwQAA"> -<XPD:ATTR name="FontStyle" type="integer">1</XPD:ATTR> -<XPD:ATTR name="Text" type="string">user</XPD:ATTR> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="TbdT9IJSLU+fl/JTxDnxxQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="LabelView" guid="aTiAvGpnHUGxIA1FbazntAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="AttributeCompartment" type="UMLAttributeCompartmentView" guid="UA5dbT7GVU2OqjVX9PXuWAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:REF name="Model">jE6Hh4xWzk+ss1P1I88QbQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="OperationCompartment" type="UMLOperationCompartmentView" guid="9c90i0MrUkKipskFCo8wlgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:REF name="Model">jE6Hh4xWzk+ss1P1I88QbQAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedViews[1]" type="UMLUseCaseView" guid="gjXEJSzeBk24cBss5DrAhAAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">396</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">125</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">45</XPD:ATTR> -<XPD:REF name="Model">nAsf5tia702zzSQAu6L6VwAA</XPD:REF> -<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="WQwWYMpQtUCP6CaPlCcltQAA"> -<XPD:OBJ name="NameLabel" type="LabelView" guid="Nbu2DNQyW0K3OkEns8o8FgAA"> -<XPD:ATTR name="FontStyle" type="integer">1</XPD:ATTR> -<XPD:ATTR name="Text" type="string">搜台</XPD:ATTR> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="k8VZH0rfeUaxBRl8mSLwDAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="LabelView" guid="EL3VwTjdHkCZndTAtu6x0QAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="AttributeCompartment" type="UMLAttributeCompartmentView" guid="FCs4dSUL6ES18h1zCz8l6AAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:REF name="Model">nAsf5tia702zzSQAu6L6VwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="OperationCompartment" type="UMLOperationCompartmentView" guid="sTCdfdSS0UiUUNZ/B2e/FAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:REF name="Model">nAsf5tia702zzSQAu6L6VwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="ExtensionPointCompartment" type="UMLExtensionPointCompartmentView" guid="GczyMXZXJEmnDD4a7NAunwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:REF name="Model">nAsf5tia702zzSQAu6L6VwAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedViews[2]" type="UMLUseCaseView" guid="Frl6rGi4ekOSrHn6gJ5XLQAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">452</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">64</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">124</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">45</XPD:ATTR> -<XPD:REF name="Model">yCRgNkRB+EGAwzfBjdJbqwAA</XPD:REF> -<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="k0GCedKioUeNGvdENFUs4AAA"> -<XPD:OBJ name="NameLabel" type="LabelView" guid="GZ0SKDfylkCAWEwMblBG9gAA"> -<XPD:ATTR name="FontStyle" type="integer">1</XPD:ATTR> -<XPD:ATTR name="Text" type="string">换台</XPD:ATTR> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="zw9u23HITU+F7D/MPgZyoQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="LabelView" guid="ZaIixThNIkGc744Tm3CsugAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="AttributeCompartment" type="UMLAttributeCompartmentView" guid="aH6LRR4We0O3VrbkDZF2cwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:REF name="Model">yCRgNkRB+EGAwzfBjdJbqwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="OperationCompartment" type="UMLOperationCompartmentView" guid="HAEKTxJSV0uP4v52ffOFQwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:REF name="Model">yCRgNkRB+EGAwzfBjdJbqwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="ExtensionPointCompartment" type="UMLExtensionPointCompartmentView" guid="bSOUAy1Buk+obB82eUrFSQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:REF name="Model">yCRgNkRB+EGAwzfBjdJbqwAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedViews[3]" type="UMLUseCaseView" guid="Hyu7+1e/cES0Ae1OqV75fwAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">428</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">124</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">237</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">45</XPD:ATTR> -<XPD:REF name="Model">W59J2q05J0K29agobcVJpwAA</XPD:REF> -<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="3d2gFNlI6EK+jsWimDIS+QAA"> -<XPD:OBJ name="NameLabel" type="LabelView" guid="SVBydeRF006GMrAfC3ETqwAA"> -<XPD:ATTR name="FontStyle" type="integer">1</XPD:ATTR> -<XPD:ATTR name="Text" type="string">得到当前台的信息/屏显</XPD:ATTR> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="SU3HDI+ru0WNDK77syR/GQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="LabelView" guid="CS3PuOwuBkW7+xAe2clbBAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="AttributeCompartment" type="UMLAttributeCompartmentView" guid="6VTL4WFMHEigYGfaMrdGYwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:REF name="Model">W59J2q05J0K29agobcVJpwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="OperationCompartment" type="UMLOperationCompartmentView" guid="7rrGYYen40CFqpViVSVmAQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:REF name="Model">W59J2q05J0K29agobcVJpwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="ExtensionPointCompartment" type="UMLExtensionPointCompartmentView" guid="18I+62RrWEOFbvJ7hjlg4AAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:REF name="Model">W59J2q05J0K29agobcVJpwAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedViews[4]" type="UMLUseCaseView" guid="JsuyLQhZc0Sm5Tx7vxV+jAAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">416</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">212</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">178</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">45</XPD:ATTR> -<XPD:REF name="Model">ExhZCRayVUq9VZBeXyOzSgAA</XPD:REF> -<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="kfnOa+AQV0Kj4BKPF56htAAA"> -<XPD:OBJ name="NameLabel" type="LabelView" guid="6bLEGGIsiU6zFFc9j4F49wAA"> -<XPD:ATTR name="FontStyle" type="integer">1</XPD:ATTR> -<XPD:ATTR name="Text" type="string">得到全部台的列表</XPD:ATTR> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="ADRdb9imSEChWP9jDiJFWgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="LabelView" guid="Gp396ZK3MUyBaxd1WCTOIQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="AttributeCompartment" type="UMLAttributeCompartmentView" guid="c8pFLtSKjE+idXYMkFpEQAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:REF name="Model">ExhZCRayVUq9VZBeXyOzSgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="OperationCompartment" type="UMLOperationCompartmentView" guid="8s4aZ7v9JkWne3xJfZ0IqgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:REF name="Model">ExhZCRayVUq9VZBeXyOzSgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="ExtensionPointCompartment" type="UMLExtensionPointCompartmentView" guid="qTH2RWpVvkyOG5CaahXI1AAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:REF name="Model">ExhZCRayVUq9VZBeXyOzSgAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedViews[5]" type="UMLAssociationView" guid="VKBbewCQmUyNjzWZhk3pLQAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Points" type="Points">201,70;396,34</XPD:ATTR> -<XPD:REF name="Model">hXa1Ze5PcEWvFq3WssbumAAA</XPD:REF> -<XPD:REF name="Head">gjXEJSzeBk24cBss5DrAhAAA</XPD:REF> -<XPD:REF name="Tail">gvI3mIExBEmaszVtF0V6bwAA</XPD:REF> -<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="dgQAXdF4ZESvmtHR7mV1eAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">hXa1Ze5PcEWvFq3WssbumAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="nl0ivvTPhk6+ZWGNY3Z7QQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:REF name="Model">hXa1Ze5PcEWvFq3WssbumAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="21Re8Yow20OMsCn0YuNvyQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">hXa1Ze5PcEWvFq3WssbumAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadRoleNameLabel" type="EdgeLabelView" guid="g4iIuaL510KG496BLjSxFAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">1h+kSCXpe0eWYNVJ4SXvTQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailRoleNameLabel" type="EdgeLabelView" guid="gJVKivaSkUOMWN8rIdDn4gAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">2RBODiwfOUCUVzGJ/32wAAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadMultiplicityLabel" type="EdgeLabelView" guid="TwLEoTMD10ehV8UPEkC8GAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">1h+kSCXpe0eWYNVJ4SXvTQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailMultiplicityLabel" type="EdgeLabelView" guid="xB9CaPtaBEGmmoo1GYSHmAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">2RBODiwfOUCUVzGJ/32wAAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadPropertyLabel" type="EdgeLabelView" guid="9JL65E1Ll0K/gBYTvW27ggAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">1h+kSCXpe0eWYNVJ4SXvTQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailPropertyLabel" type="EdgeLabelView" guid="bGKgfsVj9UqvRKTQT54jnwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">2RBODiwfOUCUVzGJ/32wAAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadQualifierCompartment" type="UMLQualifierCompartmentView" guid="W8FWavR8aUaHm9U8dXz4VgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-1000</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-1000</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">1h+kSCXpe0eWYNVJ4SXvTQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailQualifierCompartment" type="UMLQualifierCompartmentView" guid="hx6u1xKLF028b6Yykl/JVwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-1000</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-1000</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">2RBODiwfOUCUVzGJ/32wAAAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedViews[6]" type="UMLAssociationView" guid="T2Ct5boioEq1zBkQPfP1uAAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Points" type="Points">201,79;452,85</XPD:ATTR> -<XPD:REF name="Model">GWeTbEaAQUO+r17c6TtqcAAA</XPD:REF> -<XPD:REF name="Head">Frl6rGi4ekOSrHn6gJ5XLQAA</XPD:REF> -<XPD:REF name="Tail">gvI3mIExBEmaszVtF0V6bwAA</XPD:REF> -<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="itC6+9KIkUOoqvWzhIL9eAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">GWeTbEaAQUO+r17c6TtqcAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="yn7EMIRfMUivZuavba1QKgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:REF name="Model">GWeTbEaAQUO+r17c6TtqcAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="qp8dQ4Cl50OUly+002LHkwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">GWeTbEaAQUO+r17c6TtqcAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadRoleNameLabel" type="EdgeLabelView" guid="K/CL0noaSEeVxfiH/AYdPQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">7KhVXW2jsUGTY2YhCHULSAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailRoleNameLabel" type="EdgeLabelView" guid="Cko4gh6CNESvzEaGX7xrTwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">LAvKrCSTOk+Idehr21cMIwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadMultiplicityLabel" type="EdgeLabelView" guid="gJsX46E8OEivWSn9FKGyIgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">7KhVXW2jsUGTY2YhCHULSAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailMultiplicityLabel" type="EdgeLabelView" guid="YXCHfhVdWUSEN2ZT/RAgUwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">LAvKrCSTOk+Idehr21cMIwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadPropertyLabel" type="EdgeLabelView" guid="+sQ4dyQOwEyKXN3Siy8SeAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">7KhVXW2jsUGTY2YhCHULSAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailPropertyLabel" type="EdgeLabelView" guid="3/az9bmrj0OrABD1RgT7zgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">LAvKrCSTOk+Idehr21cMIwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadQualifierCompartment" type="UMLQualifierCompartmentView" guid="g0gSj9MvXEy5XaeQkbjoOwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-1000</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-1000</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">7KhVXW2jsUGTY2YhCHULSAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailQualifierCompartment" type="UMLQualifierCompartmentView" guid="QhKdEmGlb021SYaW2m8l2AAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-1000</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-1000</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">LAvKrCSTOk+Idehr21cMIwAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedViews[7]" type="UMLAssociationView" guid="AyvrWm4rVU2nEQ3SaHF+pwAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Points" type="Points">201,86;428,125</XPD:ATTR> -<XPD:REF name="Model">R+Mv7uh5kEuKr/Bia3KOhAAA</XPD:REF> -<XPD:REF name="Head">Hyu7+1e/cES0Ae1OqV75fwAA</XPD:REF> -<XPD:REF name="Tail">gvI3mIExBEmaszVtF0V6bwAA</XPD:REF> -<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="Ic1rMSlGuEiOmC74Gs5VPgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">R+Mv7uh5kEuKr/Bia3KOhAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="LmeDzwQ4WE+N9ctpkvJC2QAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:REF name="Model">R+Mv7uh5kEuKr/Bia3KOhAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="/4mMqWe3yUWrZLbs6l2tZwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">R+Mv7uh5kEuKr/Bia3KOhAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadRoleNameLabel" type="EdgeLabelView" guid="/DGBSl3cJ0S8W6nJJJGcfwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">X1+FYBSOWkaYgLu2FjOTXwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailRoleNameLabel" type="EdgeLabelView" guid="m94XoFukck+27/0mViZU2gAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">BPqYWvTNKEOfCOeMpPA44AAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadMultiplicityLabel" type="EdgeLabelView" guid="QQK2e0FGJkigWh9ObCBDRgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">X1+FYBSOWkaYgLu2FjOTXwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailMultiplicityLabel" type="EdgeLabelView" guid="rl15HxW7wUGsb4vRn7Al9wAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">BPqYWvTNKEOfCOeMpPA44AAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadPropertyLabel" type="EdgeLabelView" guid="WxqNKB0NhUqZpADhZw+P3QAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">X1+FYBSOWkaYgLu2FjOTXwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailPropertyLabel" type="EdgeLabelView" guid="A1ODeRbq4kaOK4HMvaTeRQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">BPqYWvTNKEOfCOeMpPA44AAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadQualifierCompartment" type="UMLQualifierCompartmentView" guid="Tj9w6ngJfUqetSitERQ8NQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-1000</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-1000</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">X1+FYBSOWkaYgLu2FjOTXwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailQualifierCompartment" type="UMLQualifierCompartmentView" guid="LFchLERMEE2qPO6m3DpPuQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-1000</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-1000</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">BPqYWvTNKEOfCOeMpPA44AAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedViews[8]" type="UMLAssociationView" guid="QIXdxKII/kqOJOJMY5AcogAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Points" type="Points">201,97;455,212</XPD:ATTR> -<XPD:REF name="Model">WrC8vAeUYkO3tLCoOTTa7gAA</XPD:REF> -<XPD:REF name="Head">JsuyLQhZc0Sm5Tx7vxV+jAAA</XPD:REF> -<XPD:REF name="Tail">gvI3mIExBEmaszVtF0V6bwAA</XPD:REF> -<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="Xq0mZflYI0KV42hvumdugQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">WrC8vAeUYkO3tLCoOTTa7gAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="vwdwId1yNkaUtmkTI1YWuQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:REF name="Model">WrC8vAeUYkO3tLCoOTTa7gAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="1uoVEwi+dkyCZb5M7Pve2wAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">WrC8vAeUYkO3tLCoOTTa7gAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadRoleNameLabel" type="EdgeLabelView" guid="4paVVhhoOU2GUrsd9Xm/FwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">pVT44Y4IlkCvW0rXC+dzRgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailRoleNameLabel" type="EdgeLabelView" guid="kbnyVybMKEKdAdKhGeseZgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">uJNUdzUQLUu2aPlejTqjNwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadMultiplicityLabel" type="EdgeLabelView" guid="66pNRRmKjku3rnBmhfUBCgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">pVT44Y4IlkCvW0rXC+dzRgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailMultiplicityLabel" type="EdgeLabelView" guid="g5PdiNFseUGXOynpmdruGwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">uJNUdzUQLUu2aPlejTqjNwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadPropertyLabel" type="EdgeLabelView" guid="i3/GDxY4DU6ZMPvt2/tUdgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">pVT44Y4IlkCvW0rXC+dzRgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailPropertyLabel" type="EdgeLabelView" guid="71PEDgUjsU+2i57rKSIWiQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">uJNUdzUQLUu2aPlejTqjNwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadQualifierCompartment" type="UMLQualifierCompartmentView" guid="Bn3vSuvCAEGkNyVyOiDjtAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-1000</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-1000</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">pVT44Y4IlkCvW0rXC+dzRgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailQualifierCompartment" type="UMLQualifierCompartmentView" guid="WnuHsx6mVUGcSN3xCQss6QAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-1000</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-1000</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">uJNUdzUQLUu2aPlejTqjNwAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedViews[9]" type="UMLUseCaseView" guid="B39+MGxIAUu2bla4M15wGQAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">428</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">344</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">182</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">45</XPD:ATTR> -<XPD:REF name="Model">5KAC2LjvX0qQF9lBa5DyCwAA</XPD:REF> -<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="G5wIehwq+0eIoXt5370UvgAA"> -<XPD:OBJ name="NameLabel" type="LabelView" guid="+OT5iGpyX0mfkpXaUy+lWgAA"> -<XPD:ATTR name="FontStyle" type="integer">1</XPD:ATTR> -<XPD:ATTR name="Text" type="string">设置各种参数信息</XPD:ATTR> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="liywRdQGmEmxnhyRBal4rAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="LabelView" guid="7R4zEmy7t0WDv/dHHBAF0AAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="AttributeCompartment" type="UMLAttributeCompartmentView" guid="kRxUjogV4k2YkluNvawsMAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:REF name="Model">5KAC2LjvX0qQF9lBa5DyCwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="OperationCompartment" type="UMLOperationCompartmentView" guid="u8URrWr/hkiwdkqgLJdW+wAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:REF name="Model">5KAC2LjvX0qQF9lBa5DyCwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="ExtensionPointCompartment" type="UMLExtensionPointCompartmentView" guid="KOSNG5KSM0CFIOZucCSmlwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:REF name="Model">5KAC2LjvX0qQF9lBa5DyCwAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedViews[10]" type="UMLAssociationView" guid="xD4JWSKF3EOTqNmsPzbc5QAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Points" type="Points">201,112;491,344</XPD:ATTR> -<XPD:REF name="Model">y+qwgLasMEm0UKrVQN8iJQAA</XPD:REF> -<XPD:REF name="Head">B39+MGxIAUu2bla4M15wGQAA</XPD:REF> -<XPD:REF name="Tail">gvI3mIExBEmaszVtF0V6bwAA</XPD:REF> -<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="Aug+XiD/L0C98F0lb8QKAgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">y+qwgLasMEm0UKrVQN8iJQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="+HDBsjEDKEqWUJZ9hnAU4QAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:REF name="Model">y+qwgLasMEm0UKrVQN8iJQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="8N0unm4hwUy3Q/ipJnkyXAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">y+qwgLasMEm0UKrVQN8iJQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadRoleNameLabel" type="EdgeLabelView" guid="0NmimauDo0yxCgPn4bFExgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">iK2QfBiThkWwoji6bSWtswAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailRoleNameLabel" type="EdgeLabelView" guid="evKHrFVG9kazUYsWGKYoRQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">jJgG/r4rjE2qAhy/U/lg2wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadMultiplicityLabel" type="EdgeLabelView" guid="YPI7wcCBTUybTm1Spbgg8QAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">iK2QfBiThkWwoji6bSWtswAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailMultiplicityLabel" type="EdgeLabelView" guid="JgCUSElncUaW/Ryki1kRMQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">jJgG/r4rjE2qAhy/U/lg2wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadPropertyLabel" type="EdgeLabelView" guid="ntmWchFV+UqAdPT3cz9/JQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">iK2QfBiThkWwoji6bSWtswAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailPropertyLabel" type="EdgeLabelView" guid="vquz6rX3pkKrylGBjx30IAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">jJgG/r4rjE2qAhy/U/lg2wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadQualifierCompartment" type="UMLQualifierCompartmentView" guid="edAtn71weU2/fvAr2uihoQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-1000</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-1000</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">iK2QfBiThkWwoji6bSWtswAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailQualifierCompartment" type="UMLQualifierCompartmentView" guid="CXIajd5ee06Zf7q4GbpG1QAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-1000</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-1000</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">jJgG/r4rjE2qAhy/U/lg2wAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedViews[11]" type="UMLUseCaseView" guid="grqGSNiheUuwFijgmxch+gAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">236</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">280</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">130</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">45</XPD:ATTR> -<XPD:REF name="Model">eLOxpsSp0EC08r5lL9rsZAAA</XPD:REF> -<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="yd3L6GZKLkeQZ1rwi7QUdwAA"> -<XPD:OBJ name="NameLabel" type="LabelView" guid="kTZxfY7VPkO7bRwo+0E/QgAA"> -<XPD:ATTR name="FontStyle" type="integer">1</XPD:ATTR> -<XPD:ATTR name="Text" type="string">预约</XPD:ATTR> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="bjVlyswu/kSF04Iq8TwUcwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="LabelView" guid="xcQ9Vgj+k0eBpJoVYqjU+QAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="AttributeCompartment" type="UMLAttributeCompartmentView" guid="54HAvDvDa06v58oCDBCKXwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:REF name="Model">eLOxpsSp0EC08r5lL9rsZAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="OperationCompartment" type="UMLOperationCompartmentView" guid="H5TD/VVzokWAABxo66dDiwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:REF name="Model">eLOxpsSp0EC08r5lL9rsZAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="ExtensionPointCompartment" type="UMLExtensionPointCompartmentView" guid="qqfU97a8nUqfLL2CFuWnjQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:REF name="Model">eLOxpsSp0EC08r5lL9rsZAAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedViews[12]" type="UMLAssociationView" guid="kVRyhJmyWEyyp5wuc+OXngAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Points" type="Points">183,117;286,280</XPD:ATTR> -<XPD:REF name="Model">0s9c8w+QxUaASZ+fMtRSqQAA</XPD:REF> -<XPD:REF name="Head">grqGSNiheUuwFijgmxch+gAA</XPD:REF> -<XPD:REF name="Tail">gvI3mIExBEmaszVtF0V6bwAA</XPD:REF> -<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="FypCN9NIE0C9ShWHmH/yxQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">0s9c8w+QxUaASZ+fMtRSqQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="UYBImTsT3kmMLO4UVo7iDgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:REF name="Model">0s9c8w+QxUaASZ+fMtRSqQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="Dv0knjRPxEiA3FR76MzcQgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">0s9c8w+QxUaASZ+fMtRSqQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadRoleNameLabel" type="EdgeLabelView" guid="qZ6wG2yUdUCrkCtj+ADq5gAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">rXVVaNhetUi+zkmUpV2EJAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailRoleNameLabel" type="EdgeLabelView" guid="oRaZRwRR1E+ugfvMU7Mx7AAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">HQZk+9nVI02CjFsZTEmJFgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadMultiplicityLabel" type="EdgeLabelView" guid="5xmhglHNPkebUvE0zYQ+1QAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">rXVVaNhetUi+zkmUpV2EJAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailMultiplicityLabel" type="EdgeLabelView" guid="Rf4Y2d2tx0eAEgaVNgix1gAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">HQZk+9nVI02CjFsZTEmJFgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadPropertyLabel" type="EdgeLabelView" guid="TJu7E2BYn0e7KDkLvMy6zQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">rXVVaNhetUi+zkmUpV2EJAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailPropertyLabel" type="EdgeLabelView" guid="e0J/wN1wUUGY7r7RQqgfrQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">HQZk+9nVI02CjFsZTEmJFgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadQualifierCompartment" type="UMLQualifierCompartmentView" guid="HuuHMInFx0awxMfN0WO7nAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-1000</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-1000</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">rXVVaNhetUi+zkmUpV2EJAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailQualifierCompartment" type="UMLQualifierCompartmentView" guid="LK/960VLGUqFEI3dQB55GgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-1000</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-1000</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">HQZk+9nVI02CjFsZTEmJFgAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedViews[13]" type="UMLUseCaseView" guid="1rgOrFraekaSjgPeaxo6VQAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">44</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">276</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">121</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">45</XPD:ATTR> -<XPD:REF name="Model">DfNIoYa4GU+CP71/W8SrWwAA</XPD:REF> -<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="gO3lj/0VEkmcGBM22vSVygAA"> -<XPD:OBJ name="NameLabel" type="LabelView" guid="5VgGyt6LmU26Ugzte0ke+QAA"> -<XPD:ATTR name="FontStyle" type="integer">1</XPD:ATTR> -<XPD:ATTR name="Text" type="string">回放</XPD:ATTR> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="OYamm5Q5wEmGKhCOoHHMVQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="LabelView" guid="SG00AIBfJE6CGLnrfQ6vHAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="AttributeCompartment" type="UMLAttributeCompartmentView" guid="rgrH2S52KUirNQUR897hjAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:REF name="Model">DfNIoYa4GU+CP71/W8SrWwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="OperationCompartment" type="UMLOperationCompartmentView" guid="/Uw/TQZhfEa2XXCMAwNycQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:REF name="Model">DfNIoYa4GU+CP71/W8SrWwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="ExtensionPointCompartment" type="UMLExtensionPointCompartmentView" guid="c8C4qOOrcUa+n6I+x3qsmwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:REF name="Model">DfNIoYa4GU+CP71/W8SrWwAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedViews[14]" type="UMLAssociationView" guid="FyWt2ux4n0C/jIWXlvGepAAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Points" type="Points">148,117;109,276</XPD:ATTR> -<XPD:REF name="Model">oYdSRRagC0OKiYHxCgS7CAAA</XPD:REF> -<XPD:REF name="Head">1rgOrFraekaSjgPeaxo6VQAA</XPD:REF> -<XPD:REF name="Tail">gvI3mIExBEmaszVtF0V6bwAA</XPD:REF> -<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="tzUYyPqymkyQTrpQ3ESfLQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">oYdSRRagC0OKiYHxCgS7CAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="WsC4wpiLwESJvBADsJOD0QAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:REF name="Model">oYdSRRagC0OKiYHxCgS7CAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="240EHYi+MUSGtsZ2MH9vbAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">oYdSRRagC0OKiYHxCgS7CAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadRoleNameLabel" type="EdgeLabelView" guid="HGprZSDtFUGe58XLDa/llAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">AeXEiqTUjkaieSlGxTKX+QAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailRoleNameLabel" type="EdgeLabelView" guid="jriPICawik+i/5uQ1tPPJQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">teHN23xRpE6lugxstCxsawAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadMultiplicityLabel" type="EdgeLabelView" guid="sgsEShSJaUa0m4iY/pH+kgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">AeXEiqTUjkaieSlGxTKX+QAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailMultiplicityLabel" type="EdgeLabelView" guid="oHna4JnixU6x5HHrqy8Y0gAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">teHN23xRpE6lugxstCxsawAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadPropertyLabel" type="EdgeLabelView" guid="zD5xP/cAIkyWZDkkr5ToygAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">AeXEiqTUjkaieSlGxTKX+QAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailPropertyLabel" type="EdgeLabelView" guid="CcjzfOb/A06oYHNBWwMyYAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">teHN23xRpE6lugxstCxsawAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadQualifierCompartment" type="UMLQualifierCompartmentView" guid="k/ixsOc3uECBJHIoPEzSCQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-1000</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-1000</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">AeXEiqTUjkaieSlGxTKX+QAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailQualifierCompartment" type="UMLQualifierCompartmentView" guid="eJcfvTsAsUKZSOjduilFwAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-1000</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-1000</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">teHN23xRpE6lugxstCxsawAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedViews[15]" type="UMLUseCaseView" guid="mlqnICP04kuE2DQduAxCnAAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">676</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">208</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">121</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">45</XPD:ATTR> -<XPD:REF name="Model">eVrNXR8NqEC5uMEFgGKQ1gAA</XPD:REF> -<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="SRnkj+mMmkOMwzyxJwTibAAA"> -<XPD:OBJ name="NameLabel" type="LabelView" guid="2afuLG9SqEymSxMJuyHxJgAA"> -<XPD:ATTR name="FontStyle" type="integer">1</XPD:ATTR> -<XPD:ATTR name="Text" type="string">保存数据</XPD:ATTR> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="wUkUa3V6VU6SXo+560ZANAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="LabelView" guid="eeGzvESJskW2qRwldE4o8gAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="AttributeCompartment" type="UMLAttributeCompartmentView" guid="ZBT2RXZyKE2KgZdND0TQCwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:REF name="Model">eVrNXR8NqEC5uMEFgGKQ1gAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="OperationCompartment" type="UMLOperationCompartmentView" guid="ayKElX0k9EWwlzIjQHBReAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:REF name="Model">eVrNXR8NqEC5uMEFgGKQ1gAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="ExtensionPointCompartment" type="UMLExtensionPointCompartmentView" guid="TjYDD4DDi06is7FTfdSgGgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:REF name="Model">eVrNXR8NqEC5uMEFgGKQ1gAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedViews[16]" type="UMLActorView" guid="8+OH6W5lhU2orgFp9fejxAAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">896</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">36</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">72</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">78</XPD:ATTR> -<XPD:REF name="Model">EIFC2d0E6EScGB1xXji93AAA</XPD:REF> -<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="n/aO4ZyhvEOJuT58CBcC5gAA"> -<XPD:OBJ name="NameLabel" type="LabelView" guid="2ZhkQxFuGk2UQcb3DISJAQAA"> -<XPD:ATTR name="FontStyle" type="integer">1</XPD:ATTR> -<XPD:ATTR name="Text" type="string">开发人员</XPD:ATTR> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="y1MqUzbc4UeDdpEsqrK3GwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="LabelView" guid="0Oeejnt4GEuk0csGmClAQAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="AttributeCompartment" type="UMLAttributeCompartmentView" guid="55svG5LVmEayI1yOLF/hYgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:REF name="Model">EIFC2d0E6EScGB1xXji93AAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="OperationCompartment" type="UMLOperationCompartmentView" guid="qt7RVSofskyCOe4IXevE3gAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:REF name="Model">EIFC2d0E6EScGB1xXji93AAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -</XPD:OBJ> -</XPD:OBJ> -<XPD:ATTR name="#OwnedElements" type="integer">17</XPD:ATTR> -<XPD:OBJ name="OwnedElements[0]" type="UMLActor" guid="jE6Hh4xWzk+ss1P1I88QbQAA"> -<XPD:ATTR name="Name" type="string">user</XPD:ATTR> -<XPD:REF name="Namespace">6Ncym1qqME6Qmj4IRHZMIQAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">3</XPD:ATTR> -<XPD:REF name="Views[0]">gvI3mIExBEmaszVtF0V6bwAA</XPD:REF> -<XPD:REF name="Views[1]">UA5dbT7GVU2OqjVX9PXuWAAA</XPD:REF> -<XPD:REF name="Views[2]">9c90i0MrUkKipskFCo8wlgAA</XPD:REF> -<XPD:ATTR name="#Associations" type="integer">7</XPD:ATTR> -<XPD:REF name="Associations[0]">2RBODiwfOUCUVzGJ/32wAAAA</XPD:REF> -<XPD:REF name="Associations[1]">LAvKrCSTOk+Idehr21cMIwAA</XPD:REF> -<XPD:REF name="Associations[2]">BPqYWvTNKEOfCOeMpPA44AAA</XPD:REF> -<XPD:REF name="Associations[3]">uJNUdzUQLUu2aPlejTqjNwAA</XPD:REF> -<XPD:REF name="Associations[4]">jJgG/r4rjE2qAhy/U/lg2wAA</XPD:REF> -<XPD:REF name="Associations[5]">HQZk+9nVI02CjFsZTEmJFgAA</XPD:REF> -<XPD:REF name="Associations[6]">teHN23xRpE6lugxstCxsawAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[1]" type="UMLUseCase" guid="nAsf5tia702zzSQAu6L6VwAA"> -<XPD:ATTR name="Name" type="string">搜台</XPD:ATTR> -<XPD:REF name="Namespace">6Ncym1qqME6Qmj4IRHZMIQAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">gjXEJSzeBk24cBss5DrAhAAA</XPD:REF> -<XPD:REF name="Views[1]">FCs4dSUL6ES18h1zCz8l6AAA</XPD:REF> -<XPD:REF name="Views[2]">sTCdfdSS0UiUUNZ/B2e/FAAA</XPD:REF> -<XPD:REF name="Views[3]">GczyMXZXJEmnDD4a7NAunwAA</XPD:REF> -<XPD:ATTR name="#Associations" type="integer">1</XPD:ATTR> -<XPD:REF name="Associations[0]">1h+kSCXpe0eWYNVJ4SXvTQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[2]" type="UMLUseCase" guid="yCRgNkRB+EGAwzfBjdJbqwAA"> -<XPD:ATTR name="Name" type="string">换台</XPD:ATTR> -<XPD:REF name="Namespace">6Ncym1qqME6Qmj4IRHZMIQAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">Frl6rGi4ekOSrHn6gJ5XLQAA</XPD:REF> -<XPD:REF name="Views[1]">aH6LRR4We0O3VrbkDZF2cwAA</XPD:REF> -<XPD:REF name="Views[2]">HAEKTxJSV0uP4v52ffOFQwAA</XPD:REF> -<XPD:REF name="Views[3]">bSOUAy1Buk+obB82eUrFSQAA</XPD:REF> -<XPD:ATTR name="#Associations" type="integer">1</XPD:ATTR> -<XPD:REF name="Associations[0]">7KhVXW2jsUGTY2YhCHULSAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[3]" type="UMLUseCase" guid="W59J2q05J0K29agobcVJpwAA"> -<XPD:ATTR name="Name" type="string">得到当前台的信息/屏显</XPD:ATTR> -<XPD:REF name="Namespace">6Ncym1qqME6Qmj4IRHZMIQAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">Hyu7+1e/cES0Ae1OqV75fwAA</XPD:REF> -<XPD:REF name="Views[1]">6VTL4WFMHEigYGfaMrdGYwAA</XPD:REF> -<XPD:REF name="Views[2]">7rrGYYen40CFqpViVSVmAQAA</XPD:REF> -<XPD:REF name="Views[3]">18I+62RrWEOFbvJ7hjlg4AAA</XPD:REF> -<XPD:ATTR name="#Associations" type="integer">1</XPD:ATTR> -<XPD:REF name="Associations[0]">X1+FYBSOWkaYgLu2FjOTXwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[4]" type="UMLUseCase" guid="ExhZCRayVUq9VZBeXyOzSgAA"> -<XPD:ATTR name="Name" type="string">得到全部台的列表</XPD:ATTR> -<XPD:REF name="Namespace">6Ncym1qqME6Qmj4IRHZMIQAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">JsuyLQhZc0Sm5Tx7vxV+jAAA</XPD:REF> -<XPD:REF name="Views[1]">c8pFLtSKjE+idXYMkFpEQAAA</XPD:REF> -<XPD:REF name="Views[2]">8s4aZ7v9JkWne3xJfZ0IqgAA</XPD:REF> -<XPD:REF name="Views[3]">qTH2RWpVvkyOG5CaahXI1AAA</XPD:REF> -<XPD:ATTR name="#Associations" type="integer">1</XPD:ATTR> -<XPD:REF name="Associations[0]">pVT44Y4IlkCvW0rXC+dzRgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[5]" type="UMLAssociation" guid="hXa1Ze5PcEWvFq3WssbumAAA"> -<XPD:REF name="Namespace">6Ncym1qqME6Qmj4IRHZMIQAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">VKBbewCQmUyNjzWZhk3pLQAA</XPD:REF> -<XPD:REF name="Views[1]">dgQAXdF4ZESvmtHR7mV1eAAA</XPD:REF> -<XPD:REF name="Views[2]">nl0ivvTPhk6+ZWGNY3Z7QQAA</XPD:REF> -<XPD:REF name="Views[3]">21Re8Yow20OMsCn0YuNvyQAA</XPD:REF> -<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR> -<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="2RBODiwfOUCUVzGJ/32wAAAA"> -<XPD:REF name="Association">hXa1Ze5PcEWvFq3WssbumAAA</XPD:REF> -<XPD:REF name="Participant">jE6Hh4xWzk+ss1P1I88QbQAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">gJVKivaSkUOMWN8rIdDn4gAA</XPD:REF> -<XPD:REF name="Views[1]">xB9CaPtaBEGmmoo1GYSHmAAA</XPD:REF> -<XPD:REF name="Views[2]">bGKgfsVj9UqvRKTQT54jnwAA</XPD:REF> -<XPD:REF name="Views[3]">hx6u1xKLF028b6Yykl/JVwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="1h+kSCXpe0eWYNVJ4SXvTQAA"> -<XPD:REF name="Association">hXa1Ze5PcEWvFq3WssbumAAA</XPD:REF> -<XPD:REF name="Participant">nAsf5tia702zzSQAu6L6VwAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">g4iIuaL510KG496BLjSxFAAA</XPD:REF> -<XPD:REF name="Views[1]">TwLEoTMD10ehV8UPEkC8GAAA</XPD:REF> -<XPD:REF name="Views[2]">9JL65E1Ll0K/gBYTvW27ggAA</XPD:REF> -<XPD:REF name="Views[3]">W8FWavR8aUaHm9U8dXz4VgAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[6]" type="UMLAssociation" guid="GWeTbEaAQUO+r17c6TtqcAAA"> -<XPD:REF name="Namespace">6Ncym1qqME6Qmj4IRHZMIQAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">T2Ct5boioEq1zBkQPfP1uAAA</XPD:REF> -<XPD:REF name="Views[1]">itC6+9KIkUOoqvWzhIL9eAAA</XPD:REF> -<XPD:REF name="Views[2]">yn7EMIRfMUivZuavba1QKgAA</XPD:REF> -<XPD:REF name="Views[3]">qp8dQ4Cl50OUly+002LHkwAA</XPD:REF> -<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR> -<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="LAvKrCSTOk+Idehr21cMIwAA"> -<XPD:REF name="Association">GWeTbEaAQUO+r17c6TtqcAAA</XPD:REF> -<XPD:REF name="Participant">jE6Hh4xWzk+ss1P1I88QbQAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">Cko4gh6CNESvzEaGX7xrTwAA</XPD:REF> -<XPD:REF name="Views[1]">YXCHfhVdWUSEN2ZT/RAgUwAA</XPD:REF> -<XPD:REF name="Views[2]">3/az9bmrj0OrABD1RgT7zgAA</XPD:REF> -<XPD:REF name="Views[3]">QhKdEmGlb021SYaW2m8l2AAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="7KhVXW2jsUGTY2YhCHULSAAA"> -<XPD:REF name="Association">GWeTbEaAQUO+r17c6TtqcAAA</XPD:REF> -<XPD:REF name="Participant">yCRgNkRB+EGAwzfBjdJbqwAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">K/CL0noaSEeVxfiH/AYdPQAA</XPD:REF> -<XPD:REF name="Views[1]">gJsX46E8OEivWSn9FKGyIgAA</XPD:REF> -<XPD:REF name="Views[2]">+sQ4dyQOwEyKXN3Siy8SeAAA</XPD:REF> -<XPD:REF name="Views[3]">g0gSj9MvXEy5XaeQkbjoOwAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[7]" type="UMLAssociation" guid="R+Mv7uh5kEuKr/Bia3KOhAAA"> -<XPD:REF name="Namespace">6Ncym1qqME6Qmj4IRHZMIQAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">AyvrWm4rVU2nEQ3SaHF+pwAA</XPD:REF> -<XPD:REF name="Views[1]">Ic1rMSlGuEiOmC74Gs5VPgAA</XPD:REF> -<XPD:REF name="Views[2]">LmeDzwQ4WE+N9ctpkvJC2QAA</XPD:REF> -<XPD:REF name="Views[3]">/4mMqWe3yUWrZLbs6l2tZwAA</XPD:REF> -<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR> -<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="BPqYWvTNKEOfCOeMpPA44AAA"> -<XPD:REF name="Association">R+Mv7uh5kEuKr/Bia3KOhAAA</XPD:REF> -<XPD:REF name="Participant">jE6Hh4xWzk+ss1P1I88QbQAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">m94XoFukck+27/0mViZU2gAA</XPD:REF> -<XPD:REF name="Views[1]">rl15HxW7wUGsb4vRn7Al9wAA</XPD:REF> -<XPD:REF name="Views[2]">A1ODeRbq4kaOK4HMvaTeRQAA</XPD:REF> -<XPD:REF name="Views[3]">LFchLERMEE2qPO6m3DpPuQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="X1+FYBSOWkaYgLu2FjOTXwAA"> -<XPD:REF name="Association">R+Mv7uh5kEuKr/Bia3KOhAAA</XPD:REF> -<XPD:REF name="Participant">W59J2q05J0K29agobcVJpwAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">/DGBSl3cJ0S8W6nJJJGcfwAA</XPD:REF> -<XPD:REF name="Views[1]">QQK2e0FGJkigWh9ObCBDRgAA</XPD:REF> -<XPD:REF name="Views[2]">WxqNKB0NhUqZpADhZw+P3QAA</XPD:REF> -<XPD:REF name="Views[3]">Tj9w6ngJfUqetSitERQ8NQAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[8]" type="UMLAssociation" guid="WrC8vAeUYkO3tLCoOTTa7gAA"> -<XPD:REF name="Namespace">6Ncym1qqME6Qmj4IRHZMIQAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">QIXdxKII/kqOJOJMY5AcogAA</XPD:REF> -<XPD:REF name="Views[1]">Xq0mZflYI0KV42hvumdugQAA</XPD:REF> -<XPD:REF name="Views[2]">vwdwId1yNkaUtmkTI1YWuQAA</XPD:REF> -<XPD:REF name="Views[3]">1uoVEwi+dkyCZb5M7Pve2wAA</XPD:REF> -<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR> -<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="uJNUdzUQLUu2aPlejTqjNwAA"> -<XPD:REF name="Association">WrC8vAeUYkO3tLCoOTTa7gAA</XPD:REF> -<XPD:REF name="Participant">jE6Hh4xWzk+ss1P1I88QbQAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">kbnyVybMKEKdAdKhGeseZgAA</XPD:REF> -<XPD:REF name="Views[1]">g5PdiNFseUGXOynpmdruGwAA</XPD:REF> -<XPD:REF name="Views[2]">71PEDgUjsU+2i57rKSIWiQAA</XPD:REF> -<XPD:REF name="Views[3]">WnuHsx6mVUGcSN3xCQss6QAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="pVT44Y4IlkCvW0rXC+dzRgAA"> -<XPD:REF name="Association">WrC8vAeUYkO3tLCoOTTa7gAA</XPD:REF> -<XPD:REF name="Participant">ExhZCRayVUq9VZBeXyOzSgAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">4paVVhhoOU2GUrsd9Xm/FwAA</XPD:REF> -<XPD:REF name="Views[1]">66pNRRmKjku3rnBmhfUBCgAA</XPD:REF> -<XPD:REF name="Views[2]">i3/GDxY4DU6ZMPvt2/tUdgAA</XPD:REF> -<XPD:REF name="Views[3]">Bn3vSuvCAEGkNyVyOiDjtAAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[9]" type="UMLUseCase" guid="5KAC2LjvX0qQF9lBa5DyCwAA"> -<XPD:ATTR name="Name" type="string">设置各种参数信息</XPD:ATTR> -<XPD:REF name="Namespace">6Ncym1qqME6Qmj4IRHZMIQAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">B39+MGxIAUu2bla4M15wGQAA</XPD:REF> -<XPD:REF name="Views[1]">kRxUjogV4k2YkluNvawsMAAA</XPD:REF> -<XPD:REF name="Views[2]">u8URrWr/hkiwdkqgLJdW+wAA</XPD:REF> -<XPD:REF name="Views[3]">KOSNG5KSM0CFIOZucCSmlwAA</XPD:REF> -<XPD:ATTR name="#Associations" type="integer">1</XPD:ATTR> -<XPD:REF name="Associations[0]">iK2QfBiThkWwoji6bSWtswAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[10]" type="UMLAssociation" guid="y+qwgLasMEm0UKrVQN8iJQAA"> -<XPD:REF name="Namespace">6Ncym1qqME6Qmj4IRHZMIQAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">xD4JWSKF3EOTqNmsPzbc5QAA</XPD:REF> -<XPD:REF name="Views[1]">Aug+XiD/L0C98F0lb8QKAgAA</XPD:REF> -<XPD:REF name="Views[2]">+HDBsjEDKEqWUJZ9hnAU4QAA</XPD:REF> -<XPD:REF name="Views[3]">8N0unm4hwUy3Q/ipJnkyXAAA</XPD:REF> -<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR> -<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="jJgG/r4rjE2qAhy/U/lg2wAA"> -<XPD:REF name="Association">y+qwgLasMEm0UKrVQN8iJQAA</XPD:REF> -<XPD:REF name="Participant">jE6Hh4xWzk+ss1P1I88QbQAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">evKHrFVG9kazUYsWGKYoRQAA</XPD:REF> -<XPD:REF name="Views[1]">JgCUSElncUaW/Ryki1kRMQAA</XPD:REF> -<XPD:REF name="Views[2]">vquz6rX3pkKrylGBjx30IAAA</XPD:REF> -<XPD:REF name="Views[3]">CXIajd5ee06Zf7q4GbpG1QAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="iK2QfBiThkWwoji6bSWtswAA"> -<XPD:REF name="Association">y+qwgLasMEm0UKrVQN8iJQAA</XPD:REF> -<XPD:REF name="Participant">5KAC2LjvX0qQF9lBa5DyCwAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">0NmimauDo0yxCgPn4bFExgAA</XPD:REF> -<XPD:REF name="Views[1]">YPI7wcCBTUybTm1Spbgg8QAA</XPD:REF> -<XPD:REF name="Views[2]">ntmWchFV+UqAdPT3cz9/JQAA</XPD:REF> -<XPD:REF name="Views[3]">edAtn71weU2/fvAr2uihoQAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[11]" type="UMLUseCase" guid="eLOxpsSp0EC08r5lL9rsZAAA"> -<XPD:ATTR name="Name" type="string">预约</XPD:ATTR> -<XPD:REF name="Namespace">6Ncym1qqME6Qmj4IRHZMIQAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">grqGSNiheUuwFijgmxch+gAA</XPD:REF> -<XPD:REF name="Views[1]">54HAvDvDa06v58oCDBCKXwAA</XPD:REF> -<XPD:REF name="Views[2]">H5TD/VVzokWAABxo66dDiwAA</XPD:REF> -<XPD:REF name="Views[3]">qqfU97a8nUqfLL2CFuWnjQAA</XPD:REF> -<XPD:ATTR name="#Associations" type="integer">1</XPD:ATTR> -<XPD:REF name="Associations[0]">rXVVaNhetUi+zkmUpV2EJAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[12]" type="UMLAssociation" guid="0s9c8w+QxUaASZ+fMtRSqQAA"> -<XPD:REF name="Namespace">6Ncym1qqME6Qmj4IRHZMIQAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">kVRyhJmyWEyyp5wuc+OXngAA</XPD:REF> -<XPD:REF name="Views[1]">FypCN9NIE0C9ShWHmH/yxQAA</XPD:REF> -<XPD:REF name="Views[2]">UYBImTsT3kmMLO4UVo7iDgAA</XPD:REF> -<XPD:REF name="Views[3]">Dv0knjRPxEiA3FR76MzcQgAA</XPD:REF> -<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR> -<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="HQZk+9nVI02CjFsZTEmJFgAA"> -<XPD:REF name="Association">0s9c8w+QxUaASZ+fMtRSqQAA</XPD:REF> -<XPD:REF name="Participant">jE6Hh4xWzk+ss1P1I88QbQAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">oRaZRwRR1E+ugfvMU7Mx7AAA</XPD:REF> -<XPD:REF name="Views[1]">Rf4Y2d2tx0eAEgaVNgix1gAA</XPD:REF> -<XPD:REF name="Views[2]">e0J/wN1wUUGY7r7RQqgfrQAA</XPD:REF> -<XPD:REF name="Views[3]">LK/960VLGUqFEI3dQB55GgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="rXVVaNhetUi+zkmUpV2EJAAA"> -<XPD:REF name="Association">0s9c8w+QxUaASZ+fMtRSqQAA</XPD:REF> -<XPD:REF name="Participant">eLOxpsSp0EC08r5lL9rsZAAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">qZ6wG2yUdUCrkCtj+ADq5gAA</XPD:REF> -<XPD:REF name="Views[1]">5xmhglHNPkebUvE0zYQ+1QAA</XPD:REF> -<XPD:REF name="Views[2]">TJu7E2BYn0e7KDkLvMy6zQAA</XPD:REF> -<XPD:REF name="Views[3]">HuuHMInFx0awxMfN0WO7nAAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[13]" type="UMLUseCase" guid="DfNIoYa4GU+CP71/W8SrWwAA"> -<XPD:ATTR name="Name" type="string">回放</XPD:ATTR> -<XPD:REF name="Namespace">6Ncym1qqME6Qmj4IRHZMIQAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">1rgOrFraekaSjgPeaxo6VQAA</XPD:REF> -<XPD:REF name="Views[1]">rgrH2S52KUirNQUR897hjAAA</XPD:REF> -<XPD:REF name="Views[2]">/Uw/TQZhfEa2XXCMAwNycQAA</XPD:REF> -<XPD:REF name="Views[3]">c8C4qOOrcUa+n6I+x3qsmwAA</XPD:REF> -<XPD:ATTR name="#Associations" type="integer">1</XPD:ATTR> -<XPD:REF name="Associations[0]">AeXEiqTUjkaieSlGxTKX+QAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[14]" type="UMLAssociation" guid="oYdSRRagC0OKiYHxCgS7CAAA"> -<XPD:REF name="Namespace">6Ncym1qqME6Qmj4IRHZMIQAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">FyWt2ux4n0C/jIWXlvGepAAA</XPD:REF> -<XPD:REF name="Views[1]">tzUYyPqymkyQTrpQ3ESfLQAA</XPD:REF> -<XPD:REF name="Views[2]">WsC4wpiLwESJvBADsJOD0QAA</XPD:REF> -<XPD:REF name="Views[3]">240EHYi+MUSGtsZ2MH9vbAAA</XPD:REF> -<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR> -<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="teHN23xRpE6lugxstCxsawAA"> -<XPD:REF name="Association">oYdSRRagC0OKiYHxCgS7CAAA</XPD:REF> -<XPD:REF name="Participant">jE6Hh4xWzk+ss1P1I88QbQAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">jriPICawik+i/5uQ1tPPJQAA</XPD:REF> -<XPD:REF name="Views[1]">oHna4JnixU6x5HHrqy8Y0gAA</XPD:REF> -<XPD:REF name="Views[2]">CcjzfOb/A06oYHNBWwMyYAAA</XPD:REF> -<XPD:REF name="Views[3]">eJcfvTsAsUKZSOjduilFwAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="AeXEiqTUjkaieSlGxTKX+QAA"> -<XPD:REF name="Association">oYdSRRagC0OKiYHxCgS7CAAA</XPD:REF> -<XPD:REF name="Participant">DfNIoYa4GU+CP71/W8SrWwAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">HGprZSDtFUGe58XLDa/llAAA</XPD:REF> -<XPD:REF name="Views[1]">sgsEShSJaUa0m4iY/pH+kgAA</XPD:REF> -<XPD:REF name="Views[2]">zD5xP/cAIkyWZDkkr5ToygAA</XPD:REF> -<XPD:REF name="Views[3]">k/ixsOc3uECBJHIoPEzSCQAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[15]" type="UMLUseCase" guid="eVrNXR8NqEC5uMEFgGKQ1gAA"> -<XPD:ATTR name="Name" type="string">保存数据</XPD:ATTR> -<XPD:REF name="Namespace">6Ncym1qqME6Qmj4IRHZMIQAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">mlqnICP04kuE2DQduAxCnAAA</XPD:REF> -<XPD:REF name="Views[1]">ZBT2RXZyKE2KgZdND0TQCwAA</XPD:REF> -<XPD:REF name="Views[2]">ayKElX0k9EWwlzIjQHBReAAA</XPD:REF> -<XPD:REF name="Views[3]">TjYDD4DDi06is7FTfdSgGgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[16]" type="UMLActor" guid="EIFC2d0E6EScGB1xXji93AAA"> -<XPD:ATTR name="Name" type="string">开发人员</XPD:ATTR> -<XPD:REF name="Namespace">6Ncym1qqME6Qmj4IRHZMIQAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">3</XPD:ATTR> -<XPD:REF name="Views[0]">8+OH6W5lhU2orgFp9fejxAAA</XPD:REF> -<XPD:REF name="Views[1]">55svG5LVmEayI1yOLF/hYgAA</XPD:REF> -<XPD:REF name="Views[2]">qt7RVSofskyCOe4IXevE3gAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[1]" type="UMLModel" guid="GSh70Nz8XUWNmgnjTARh/gAA"> -<XPD:ATTR name="Name" type="string">Analysis Model</XPD:ATTR> -<XPD:ATTR name="StereotypeProfile" type="string">UMLStandard</XPD:ATTR> -<XPD:ATTR name="StereotypeName" type="string">analysisModel</XPD:ATTR> -<XPD:REF name="Namespace">CoZuu0bDp0eooW1pQg6aQwAA</XPD:REF> -<XPD:ATTR name="#OwnedElements" type="integer">2</XPD:ATTR> -<XPD:OBJ name="OwnedElements[0]" type="UMLAssociation" guid="rIQWVfPr7E24Tt4ljeTZ4wAA"> -<XPD:REF name="Namespace">GSh70Nz8XUWNmgnjTARh/gAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">G0kUvklDf0uhBeIUoV+srgAA</XPD:REF> -<XPD:REF name="Views[1]">6o6l7Ax4b0uvR1w70cdJiAAA</XPD:REF> -<XPD:REF name="Views[2]">3ZsGQfCQIk+ZPFC1FyyVeQAA</XPD:REF> -<XPD:REF name="Views[3]">BCGhRmtL7kmoY1iXaapJOwAA</XPD:REF> -<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR> -<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="jLzV7XdHP0Ogmb7/6IPCtgAA"> -<XPD:REF name="Association">rIQWVfPr7E24Tt4ljeTZ4wAA</XPD:REF> -<XPD:REF name="Participant">7dRihysn8kefkb+6mJlwzgAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">zqmFgnNCJ0mU+9gnrH18SwAA</XPD:REF> -<XPD:REF name="Views[1]">QE0xM9HZIUK4iQSOifSKDQAA</XPD:REF> -<XPD:REF name="Views[2]">yt3drhX0N0aispBa+C83TAAA</XPD:REF> -<XPD:REF name="Views[3]">L3X2M2UWvECpCLZj42krJAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="XKFQZaAIH0SxD7YBXgkK0wAA"> -<XPD:REF name="Association">rIQWVfPr7E24Tt4ljeTZ4wAA</XPD:REF> -<XPD:REF name="Participant">ZRumjrTwgUamBDOstkagPgAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">SuRONY2jREyvBHGP7nheBQAA</XPD:REF> -<XPD:REF name="Views[1]">8rSGjmyTy0iar869slrlPgAA</XPD:REF> -<XPD:REF name="Views[2]">l9UCuL7VoEm7vFLWkobdoAAA</XPD:REF> -<XPD:REF name="Views[3]">NYMZ1wuIcUy7G5VODIYIDQAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[1]" type="UMLAssociation" guid="0hCZfIhV4EOpKXcVPwcUnAAA"> -<XPD:REF name="Namespace">GSh70Nz8XUWNmgnjTARh/gAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">+dr3aeLg8k2RQ8khsHmmqAAA</XPD:REF> -<XPD:REF name="Views[1]">eiIT0uNCpUywEWk7FrhutgAA</XPD:REF> -<XPD:REF name="Views[2]">m5vcHblPLUe9VZHiD1lPzgAA</XPD:REF> -<XPD:REF name="Views[3]">dHGIMYC9dUeyteDUvxEuNgAA</XPD:REF> -<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR> -<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="DGWju3i/80ObxLedRPIIEwAA"> -<XPD:REF name="Association">0hCZfIhV4EOpKXcVPwcUnAAA</XPD:REF> -<XPD:REF name="Participant">7dRihysn8kefkb+6mJlwzgAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">DGGWcQw7xESguDo8y8c9JwAA</XPD:REF> -<XPD:REF name="Views[1]">RjfRt8utjEiWYhIQFBxLqgAA</XPD:REF> -<XPD:REF name="Views[2]">YyNOaiAWMU6urAt6uMo51wAA</XPD:REF> -<XPD:REF name="Views[3]">HRQ1wVKzDUe1hazbUuDnVwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="TolxJOTDCkO5nyLC6ipkAwAA"> -<XPD:REF name="Association">0hCZfIhV4EOpKXcVPwcUnAAA</XPD:REF> -<XPD:REF name="Participant">T1P4Xv7L+UuEzFqU+iyS5wAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">bVRmxC4LeEivBU8rO/l1IwAA</XPD:REF> -<XPD:REF name="Views[1]">/6WmiwEpmUGnLzBRc6lCzwAA</XPD:REF> -<XPD:REF name="Views[2]">Brf+/LZbFEamowtJ6zGOAgAA</XPD:REF> -<XPD:REF name="Views[3]">eme8PTCUYkiREXPCAN1ACgAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[2]" type="UMLModel" guid="dZ4UyetzSE+rDT9vQthF9wAA"> -<XPD:ATTR name="Name" type="string">Design Model</XPD:ATTR> -<XPD:ATTR name="StereotypeProfile" type="string">UMLStandard</XPD:ATTR> -<XPD:ATTR name="StereotypeName" type="string">designModel</XPD:ATTR> -<XPD:REF name="Namespace">CoZuu0bDp0eooW1pQg6aQwAA</XPD:REF> -<XPD:ATTR name="#OwnedDiagrams" type="integer">2</XPD:ATTR> -<XPD:OBJ name="OwnedDiagrams[0]" type="UMLClassDiagram" guid="qjYhNoiY1kqmGvfSf6HTOAAA"> -<XPD:ATTR name="Name" type="string">dtvclass</XPD:ATTR> -<XPD:ATTR name="DefaultDiagram" type="boolean">True</XPD:ATTR> -<XPD:REF name="DiagramOwner">dZ4UyetzSE+rDT9vQthF9wAA</XPD:REF> -<XPD:OBJ name="DiagramView" type="UMLClassDiagramView" guid="P51EDp27mEuFUgKS4BG9TgAA"> -<XPD:REF name="Diagram">qjYhNoiY1kqmGvfSf6HTOAAA</XPD:REF> -<XPD:ATTR name="#OwnedViews" type="integer">33</XPD:ATTR> -<XPD:OBJ name="OwnedViews[0]" type="UMLClassView" guid="a8FG7H9SzUelkRx52q1d5AAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">312</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">568</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">86</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">53</XPD:ATTR> -<XPD:REF name="Model">SX+aNGg0j0WtdR26+LZ7OgAA</XPD:REF> -<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="JQh3Wiuct0GpOwtZi9ZTpgAA"> -<XPD:OBJ name="NameLabel" type="LabelView" guid="uNhK2xLegUaBu+NFKaBbSwAA"> -<XPD:ATTR name="FontStyle" type="integer">1</XPD:ATTR> -<XPD:ATTR name="Text" type="string">CTvDatabase</XPD:ATTR> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="hhHle2OI4Uu0405GJDfGVwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="LabelView" guid="jkWfDES3TkmlCIFIs5xizAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="AttributeCompartment" type="UMLAttributeCompartmentView" guid="k1LHywt4TEe6bHJwUzft/QAA"> -<XPD:REF name="Model">SX+aNGg0j0WtdR26+LZ7OgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="OperationCompartment" type="UMLOperationCompartmentView" guid="hc7Nc/x4iE+k/Ee76MBxMgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:REF name="Model">SX+aNGg0j0WtdR26+LZ7OgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TemplateParameterCompartment" type="UMLTemplateParameterCompartmentView" guid="Pwafosd7ik6mD1kxdwntngAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:REF name="Model">SX+aNGg0j0WtdR26+LZ7OgAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedViews[1]" type="UMLClassView" guid="Y9zMsiXlQEuyiSGOmpswRwAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">780</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">528</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">102</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">43</XPD:ATTR> -<XPD:REF name="Model">5BXVsgqK1kanN/l0hNx/IQAA</XPD:REF> -<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="/mSRKoE2+U2BADYjjBN3tQAA"> -<XPD:OBJ name="NameLabel" type="LabelView" guid="IXnfaLgTKEGGdpX37KpTHgAA"> -<XPD:ATTR name="FontStyle" type="integer">1</XPD:ATTR> -<XPD:ATTR name="Text" type="string">CTvSubtitle</XPD:ATTR> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="+DeDbUnm+02usH1UojzZyQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="LabelView" guid="TObRQcYR6UWZmkjnkVEugwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="AttributeCompartment" type="UMLAttributeCompartmentView" guid="3kCRXwUbYEOaB2YVqs3CMQAA"> -<XPD:REF name="Model">5BXVsgqK1kanN/l0hNx/IQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="OperationCompartment" type="UMLOperationCompartmentView" guid="2pFBVEb3NUu3IhdJeNfBWAAA"> -<XPD:REF name="Model">5BXVsgqK1kanN/l0hNx/IQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TemplateParameterCompartment" type="UMLTemplateParameterCompartmentView" guid="xx5BbdZ+6Eehp04cM6fnfwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:REF name="Model">5BXVsgqK1kanN/l0hNx/IQAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedViews[2]" type="UMLClassView" guid="9Ld1pTeBF0CZmoVdEfEBMQAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">324</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">228</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">83</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">45</XPD:ATTR> -<XPD:REF name="Model">xAj1pchzIEeSaRcR2+aFTwAA</XPD:REF> -<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="KKCqrHWJXUyPtjvhGK6nTAAA"> -<XPD:OBJ name="NameLabel" type="LabelView" guid="VODhD4+mz0yMbBwwjb3fXAAA"> -<XPD:ATTR name="FontStyle" type="integer">1</XPD:ATTR> -<XPD:ATTR name="Text" type="string">CDtv</XPD:ATTR> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="0OuB7ZzwGEqA8drjlJeNBgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="LabelView" guid="Zc9FQRwP2Uuj8JJg74Jt3QAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="AttributeCompartment" type="UMLAttributeCompartmentView" guid="mxcpZDUEI0aTfXvfNUP8/QAA"> -<XPD:REF name="Model">xAj1pchzIEeSaRcR2+aFTwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="OperationCompartment" type="UMLOperationCompartmentView" guid="0p/pTktl+kimPcmFJ4/wywAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:REF name="Model">xAj1pchzIEeSaRcR2+aFTwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TemplateParameterCompartment" type="UMLTemplateParameterCompartmentView" guid="kWtX8dZWikSHi3kCydMHCAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:REF name="Model">xAj1pchzIEeSaRcR2+aFTwAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedViews[3]" type="UMLClassView" guid="BVNqLhbhP06y98++NgmxAwAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">284</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">388</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">147</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">33</XPD:ATTR> -<XPD:REF name="Model">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="juDswX7uL0W7bBJuRk06AgAA"> -<XPD:OBJ name="NameLabel" type="LabelView" guid="ICbKIhrn50Gwq1GIFxbJYAAA"> -<XPD:ATTR name="FontStyle" type="integer">1</XPD:ATTR> -<XPD:ATTR name="Text" type="string">CTvProgram</XPD:ATTR> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="YHcJ0obYSEWbDvvepjISuwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="LabelView" guid="27Jf3klYvE2MAvnGgH8YqAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="AttributeCompartment" type="UMLAttributeCompartmentView" guid="muUyRePjd0qlQqM/tvfrmQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:REF name="Model">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="OperationCompartment" type="UMLOperationCompartmentView" guid="3aWGjpGXTkqRn+NbEzYu5QAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:REF name="Model">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TemplateParameterCompartment" type="UMLTemplateParameterCompartmentView" guid="ylciM87U9keZe9hSnVequAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:REF name="Model">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedViews[4]" type="UMLClassView" guid="iEgH+6H6kkG++neKuToTSgAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">100</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">420</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">97</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">46</XPD:ATTR> -<XPD:REF name="Model">JCgv4vk16U6BbVcoQFmlVwAA</XPD:REF> -<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="lnKxD1DyGEOj9cd46nB84QAA"> -<XPD:OBJ name="NameLabel" type="LabelView" guid="FHfQpxZydUGiBASqFcX2dAAA"> -<XPD:ATTR name="FontStyle" type="integer">1</XPD:ATTR> -<XPD:ATTR name="Text" type="string">CTvChannel</XPD:ATTR> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="fd0gByAKXkisiM6J7MwdtAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="LabelView" guid="9r4OqNYuVUegwaUPTkv1pgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="AttributeCompartment" type="UMLAttributeCompartmentView" guid="Yo0KShxzIk2FSTydUse5OQAA"> -<XPD:REF name="Model">JCgv4vk16U6BbVcoQFmlVwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="OperationCompartment" type="UMLOperationCompartmentView" guid="rmKV7ZtcVEudbDw02LTB/wAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:REF name="Model">JCgv4vk16U6BbVcoQFmlVwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TemplateParameterCompartment" type="UMLTemplateParameterCompartmentView" guid="+jiKzSIz/UuhSFnnJkuIEgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:REF name="Model">JCgv4vk16U6BbVcoQFmlVwAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedViews[5]" type="UMLClassView" guid="vYDCfUgYq0KaBSDnxbpYVgAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">704</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">244</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">80</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">43</XPD:ATTR> -<XPD:REF name="Model">UiYOh8D78E22qQeFeDZpLAAA</XPD:REF> -<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="+QL9bkNaPUyTOdUO4yAR6AAA"> -<XPD:OBJ name="NameLabel" type="LabelView" guid="eT33Wt7M8kiSrhmhuXGtCgAA"> -<XPD:ATTR name="FontStyle" type="integer">1</XPD:ATTR> -<XPD:ATTR name="Text" type="string">CTvConfig</XPD:ATTR> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="iBlTL0B9OEevQofD0ibRjwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="LabelView" guid="cFIMtDWroUOFGL0NgRigMAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="AttributeCompartment" type="UMLAttributeCompartmentView" guid="KTNQfnqIy0q3wV+ARVtV9gAA"> -<XPD:REF name="Model">UiYOh8D78E22qQeFeDZpLAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="OperationCompartment" type="UMLOperationCompartmentView" guid="7Pq+TJVLy06gA8T6r5wMawAA"> -<XPD:REF name="Model">UiYOh8D78E22qQeFeDZpLAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TemplateParameterCompartment" type="UMLTemplateParameterCompartmentView" guid="Fn0oKpD7lUyNbDw59UyRygAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:REF name="Model">UiYOh8D78E22qQeFeDZpLAAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedViews[6]" type="UMLAssociationView" guid="12BWSnVhhUOUuox7tdL41gAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Points" type="Points">284,417;196,433</XPD:ATTR> -<XPD:REF name="Model">av0s6EXaYUKyooee2y6sdgAA</XPD:REF> -<XPD:REF name="Head">iEgH+6H6kkG++neKuToTSgAA</XPD:REF> -<XPD:REF name="Tail">BVNqLhbhP06y98++NgmxAwAA</XPD:REF> -<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="4F+C2zwwrEOjx/qCnLXWPAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">av0s6EXaYUKyooee2y6sdgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="lXf6uq0JtkK3YNXTxTyP7wAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:REF name="Model">av0s6EXaYUKyooee2y6sdgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="8jym3kotyE2sBWD5KjhUiQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">av0s6EXaYUKyooee2y6sdgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadRoleNameLabel" type="EdgeLabelView" guid="ioK1huVib0u6ILv3kHAeeQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">GZcPUasbnkG3pyGKV6NFnAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailRoleNameLabel" type="EdgeLabelView" guid="awNg1wfSGU22on1C+XpBlgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">IEnUwW74QkSkdRZGqdKvaAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadMultiplicityLabel" type="EdgeLabelView" guid="cwfxPIXUd06ShM9BEivzxQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">GZcPUasbnkG3pyGKV6NFnAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailMultiplicityLabel" type="EdgeLabelView" guid="cGTSA3bQb0S81NQzsTj+QQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">IEnUwW74QkSkdRZGqdKvaAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadPropertyLabel" type="EdgeLabelView" guid="DBsnRjqoj0W9eAN/Flu+jwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">GZcPUasbnkG3pyGKV6NFnAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailPropertyLabel" type="EdgeLabelView" guid="LWsKT6dOQUKXma9Eoh+sUwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">IEnUwW74QkSkdRZGqdKvaAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadQualifierCompartment" type="UMLQualifierCompartmentView" guid="DUu549wQM0qPn9dAjjrLZgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-848</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-720</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">GZcPUasbnkG3pyGKV6NFnAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailQualifierCompartment" type="UMLQualifierCompartmentView" guid="l9TSA+eftkCY2p6qZDMGKAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-848</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-720</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">IEnUwW74QkSkdRZGqdKvaAAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedViews[7]" type="UMLAssociationView" guid="Qa1PhzSwWkyS1rm6eapfLwAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Points" type="Points">354,568;357,420</XPD:ATTR> -<XPD:REF name="Model">cNCsWS2hgkeaGhYJv9oONgAA</XPD:REF> -<XPD:REF name="Head">BVNqLhbhP06y98++NgmxAwAA</XPD:REF> -<XPD:REF name="Tail">a8FG7H9SzUelkRx52q1d5AAA</XPD:REF> -<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="QAoFSXFK+0S+5kDYAQ0LsgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">cNCsWS2hgkeaGhYJv9oONgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="rsOqshNVOkut6r+wW0Sp/wAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:REF name="Model">cNCsWS2hgkeaGhYJv9oONgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="0wZW9IH3y0OEPMfN5FyHQAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">cNCsWS2hgkeaGhYJv9oONgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadRoleNameLabel" type="EdgeLabelView" guid="ySD9HMBWmEWoJg+/6boBZgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">2JZlFpDZPkGgaoWrrPAGXAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailRoleNameLabel" type="EdgeLabelView" guid="TM3RNruxzEezNhF8XO/FmwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">PFZlUbzZu02nTTLsYZBoDgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadMultiplicityLabel" type="EdgeLabelView" guid="LXz8D2AdoE6ojzgkYCO0qAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">2JZlFpDZPkGgaoWrrPAGXAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailMultiplicityLabel" type="EdgeLabelView" guid="NpASusGGKU+/KwcKkTAMogAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">PFZlUbzZu02nTTLsYZBoDgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadPropertyLabel" type="EdgeLabelView" guid="ia8j06EduUmxgB5smbA9hQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">2JZlFpDZPkGgaoWrrPAGXAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailPropertyLabel" type="EdgeLabelView" guid="3dtXpNLbXka7wekzvAWsXQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">PFZlUbzZu02nTTLsYZBoDgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadQualifierCompartment" type="UMLQualifierCompartmentView" guid="/JYlnmhzTk66TicK0RjYaQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-848</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-720</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">2JZlFpDZPkGgaoWrrPAGXAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailQualifierCompartment" type="UMLQualifierCompartmentView" guid="Mvk2196ldk+5GLgct+OKuwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-848</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-720</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">PFZlUbzZu02nTTLsYZBoDgAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedViews[8]" type="UMLAssociationView" guid="UmHHYiIr3k+gNNomjLpgwwAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Points" type="Points">319,568;179,465</XPD:ATTR> -<XPD:REF name="Model">CVx7QaOEd0iJQ6USdSCilwAA</XPD:REF> -<XPD:REF name="Head">iEgH+6H6kkG++neKuToTSgAA</XPD:REF> -<XPD:REF name="Tail">a8FG7H9SzUelkRx52q1d5AAA</XPD:REF> -<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="ZBlvBeIE2UGGPTML4sQ7SgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">CVx7QaOEd0iJQ6USdSCilwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="UDn5R84weEayOYl6QVFj1wAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:REF name="Model">CVx7QaOEd0iJQ6USdSCilwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="OApAa7HXz0aTiMZGZ/g2tAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">CVx7QaOEd0iJQ6USdSCilwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadRoleNameLabel" type="EdgeLabelView" guid="W1YT5dqwMUSUI29zCC2LZQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">XvxorIQvl0aKnzyznjd1uwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailRoleNameLabel" type="EdgeLabelView" guid="24RGLobteEil7cUdAcyUcAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">q5Ko0bXKcE6uj05NJPSddwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadMultiplicityLabel" type="EdgeLabelView" guid="X96IIfOZSE2FAliwKkCNYgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">XvxorIQvl0aKnzyznjd1uwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailMultiplicityLabel" type="EdgeLabelView" guid="6Uw1pdad6kC8N8S0Rf1HxwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">q5Ko0bXKcE6uj05NJPSddwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadPropertyLabel" type="EdgeLabelView" guid="tr7uiHRKz0e//ValH5GU+AAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">XvxorIQvl0aKnzyznjd1uwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailPropertyLabel" type="EdgeLabelView" guid="CuUsJAcsAUWwVZJzegOegAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">q5Ko0bXKcE6uj05NJPSddwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadQualifierCompartment" type="UMLQualifierCompartmentView" guid="zdcHIs6dNEmxQNtCK5uHIQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-848</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-720</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">XvxorIQvl0aKnzyznjd1uwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailQualifierCompartment" type="UMLQualifierCompartmentView" guid="AST9GWgDTEWR07o7yUcgIQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-848</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-720</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">q5Ko0bXKcE6uj05NJPSddwAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedViews[9]" type="UMLAssociationView" guid="oYsj3yhzJkCKmOBcWIHNDwAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Points" type="Points">357,420;354,568</XPD:ATTR> -<XPD:REF name="Model">hBOTE33GDUO/X8s5oHlAmQAA</XPD:REF> -<XPD:REF name="Head">a8FG7H9SzUelkRx52q1d5AAA</XPD:REF> -<XPD:REF name="Tail">BVNqLhbhP06y98++NgmxAwAA</XPD:REF> -<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="GT6R2h3HkU6LThPKaghC1QAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">hBOTE33GDUO/X8s5oHlAmQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="eWMr3v5Qb0y/nXu2s/EP5wAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:REF name="Model">hBOTE33GDUO/X8s5oHlAmQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="GR9gxzUjNkKmujWHFobLtAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">hBOTE33GDUO/X8s5oHlAmQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadRoleNameLabel" type="EdgeLabelView" guid="+SSR3TM1z0m5UkTLiuMrGwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">Yo1IoB0X3ka1C+a/6xk1/gAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailRoleNameLabel" type="EdgeLabelView" guid="UuRRAQf+y0OdXTOvWu7nUAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">qOlPMeLYpUC4lTEl3Hsc8QAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadMultiplicityLabel" type="EdgeLabelView" guid="Uvo2ryiBg0Oa5GJF4TRyhQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">Yo1IoB0X3ka1C+a/6xk1/gAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailMultiplicityLabel" type="EdgeLabelView" guid="vI5c+acLSk6IfCcdqlaBggAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">qOlPMeLYpUC4lTEl3Hsc8QAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadPropertyLabel" type="EdgeLabelView" guid="QBI1NHwjWU2dkj+SLUFZ+AAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">Yo1IoB0X3ka1C+a/6xk1/gAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailPropertyLabel" type="EdgeLabelView" guid="w3rpxhxEsEu0y7myhFrrkQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">qOlPMeLYpUC4lTEl3Hsc8QAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadQualifierCompartment" type="UMLQualifierCompartmentView" guid="IYVJT/RjPUqjv8rl6ZIQiwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-848</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-720</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">Yo1IoB0X3ka1C+a/6xk1/gAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailQualifierCompartment" type="UMLQualifierCompartmentView" guid="8Ip2rQJRaEaPAOW0cJSd/wAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-848</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-720</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">qOlPMeLYpUC4lTEl3Hsc8QAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedViews[10]" type="UMLAssociationView" guid="Vcgjd9eKakOjuUAjwzzhJgAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Points" type="Points">179,465;319,568</XPD:ATTR> -<XPD:REF name="Model">/X1BIuClXkywNV1vNa/LWwAA</XPD:REF> -<XPD:REF name="Head">a8FG7H9SzUelkRx52q1d5AAA</XPD:REF> -<XPD:REF name="Tail">iEgH+6H6kkG++neKuToTSgAA</XPD:REF> -<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="+iIIR1mEnUynEPEjuGAd7AAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">/X1BIuClXkywNV1vNa/LWwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="bZn71kXJQUOP3yAyCa5RvgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:REF name="Model">/X1BIuClXkywNV1vNa/LWwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="O36co7nFz0elpJnbKtsYMwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">/X1BIuClXkywNV1vNa/LWwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadRoleNameLabel" type="EdgeLabelView" guid="yjjLYCXJjUqX0IHnpKwHwQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">RoKhf4Bw3kmRk2O2D4GlxQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailRoleNameLabel" type="EdgeLabelView" guid="Hv4K+XlgIkqDgqEz3aQWNQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">BVpPYPY4V0KsTBJTRoLjyAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadMultiplicityLabel" type="EdgeLabelView" guid="k1XiyO9mlke/IAq5UuYI9gAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">RoKhf4Bw3kmRk2O2D4GlxQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailMultiplicityLabel" type="EdgeLabelView" guid="4o7M8jakfkixRwVgESrUnwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">BVpPYPY4V0KsTBJTRoLjyAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadPropertyLabel" type="EdgeLabelView" guid="Xtc7Jqe6N0+JAzLg1RxYLwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">RoKhf4Bw3kmRk2O2D4GlxQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailPropertyLabel" type="EdgeLabelView" guid="rCPaxzL0LEuk9Jjbqi+D2gAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">BVpPYPY4V0KsTBJTRoLjyAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadQualifierCompartment" type="UMLQualifierCompartmentView" guid="W0UPJtBpLU6Y5SjscWTiVAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-848</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-720</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">RoKhf4Bw3kmRk2O2D4GlxQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailQualifierCompartment" type="UMLQualifierCompartmentView" guid="HKXhPda/vUuVwv4sR9ZR9QAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-848</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-720</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">BVpPYPY4V0KsTBJTRoLjyAAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedViews[11]" type="UMLClassView" guid="8HnvkQxPk0OLqQXLeJ5MUgAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">820</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">316</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">86</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">56</XPD:ATTR> -<XPD:REF name="Model">gx40XIC9FkOG3iX3Oyxw8wAA</XPD:REF> -<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="5gKeR33bd0K1R/QeIX+ZgQAA"> -<XPD:OBJ name="NameLabel" type="LabelView" guid="tQ3eg1803UmmapVr5/mMKgAA"> -<XPD:ATTR name="FontStyle" type="integer">1</XPD:ATTR> -<XPD:ATTR name="Text" type="string">CTvGroup</XPD:ATTR> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="qwHtvoH6qk6Aj/xMPfoprQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="LabelView" guid="txC1zWyhHUKgVTvu0N6VDwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="AttributeCompartment" type="UMLAttributeCompartmentView" guid="50xz0k8rgU+WfODoAi8aeQAA"> -<XPD:REF name="Model">gx40XIC9FkOG3iX3Oyxw8wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="OperationCompartment" type="UMLOperationCompartmentView" guid="TR1rTShyhEG7ngh596L0kgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:REF name="Model">gx40XIC9FkOG3iX3Oyxw8wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TemplateParameterCompartment" type="UMLTemplateParameterCompartmentView" guid="GPl78wz82UaLho5xwfMqrQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:REF name="Model">gx40XIC9FkOG3iX3Oyxw8wAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedViews[12]" type="UMLAssociationView" guid="VjZwKWmCoUO5wNRGJGVShAAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Points" type="Points">820,364;397,573</XPD:ATTR> -<XPD:REF name="Model">PudswW77eEShTMEdcK5BCAAA</XPD:REF> -<XPD:REF name="Head">a8FG7H9SzUelkRx52q1d5AAA</XPD:REF> -<XPD:REF name="Tail">8HnvkQxPk0OLqQXLeJ5MUgAA</XPD:REF> -<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="6e9pHkpPaUyLDCYYnUYAOAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">PudswW77eEShTMEdcK5BCAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="QA7tnAAMA0e3tCDRlkB/JwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:REF name="Model">PudswW77eEShTMEdcK5BCAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="gdUdn5u5x0KDsDKM41p2CQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">PudswW77eEShTMEdcK5BCAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadRoleNameLabel" type="EdgeLabelView" guid="rqoTwNlD20Gou9xOLQ2RNgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">vyoQZGl3UECBMhf7+IDQUwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailRoleNameLabel" type="EdgeLabelView" guid="d/3xrtQ+nU69mQYepo7NvQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">Io3cINfhiE23pmiSxpS6swAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadMultiplicityLabel" type="EdgeLabelView" guid="ox9r7npaB0in7/ygfG1ZMwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">vyoQZGl3UECBMhf7+IDQUwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailMultiplicityLabel" type="EdgeLabelView" guid="HcOo4bUmbUqLEjVUm2L2AQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">Io3cINfhiE23pmiSxpS6swAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadPropertyLabel" type="EdgeLabelView" guid="exLwGLRY306J0CEcqxlOrgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">vyoQZGl3UECBMhf7+IDQUwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailPropertyLabel" type="EdgeLabelView" guid="tQj+naSiJ0mB4W89ahH5ygAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">Io3cINfhiE23pmiSxpS6swAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadQualifierCompartment" type="UMLQualifierCompartmentView" guid="qxZgk8R36k2S3vGRfQegfwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-848</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-720</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">vyoQZGl3UECBMhf7+IDQUwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailQualifierCompartment" type="UMLQualifierCompartmentView" guid="LNFybtIVIkOXnQ/9QC5jEwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-848</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-720</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">Io3cINfhiE23pmiSxpS6swAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedViews[13]" type="UMLClassView" guid="7aPHkO59WEubHbpM/Djq/AAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">456</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">396</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">89</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">41</XPD:ATTR> -<XPD:REF name="Model">26RSzf3jmEWkDlRiFhl4OAAA</XPD:REF> -<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="DSv+CNOMnUKyGF5bfoGDowAA"> -<XPD:OBJ name="NameLabel" type="LabelView" guid="Fy6x/w12H0K3LtAtk0/MuwAA"> -<XPD:ATTR name="FontStyle" type="integer">1</XPD:ATTR> -<XPD:ATTR name="Text" type="string">CTvEvent</XPD:ATTR> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="xy2kKdqewEerLbDFtu0jAwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="LabelView" guid="ZxuiiS0/6EiXhRO/StIWPgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="AttributeCompartment" type="UMLAttributeCompartmentView" guid="+EOWTA5PrUyAEwB/ZHVnPAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:REF name="Model">26RSzf3jmEWkDlRiFhl4OAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="OperationCompartment" type="UMLOperationCompartmentView" guid="f0xyghRma028ShVYc8tbfwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:REF name="Model">26RSzf3jmEWkDlRiFhl4OAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TemplateParameterCompartment" type="UMLTemplateParameterCompartmentView" guid="qpXdkd1nJ0ajRru7gzDFJwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:REF name="Model">26RSzf3jmEWkDlRiFhl4OAAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedViews[14]" type="UMLAssociationView" guid="QHk4xsvJRUGhKn0p+sReaAAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Points" type="Points">484,436;375,568</XPD:ATTR> -<XPD:REF name="Model">q5PurOmOUUOX8hzj5CINYQAA</XPD:REF> -<XPD:REF name="Head">a8FG7H9SzUelkRx52q1d5AAA</XPD:REF> -<XPD:REF name="Tail">7aPHkO59WEubHbpM/Djq/AAA</XPD:REF> -<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="ezGCtUA0dUOn10D5pUOtoAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">q5PurOmOUUOX8hzj5CINYQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="QcGPzg741ki4yTGfoKvK9AAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:REF name="Model">q5PurOmOUUOX8hzj5CINYQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="ioZQYN39bEu/gy37UfkhmQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">q5PurOmOUUOX8hzj5CINYQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadRoleNameLabel" type="EdgeLabelView" guid="mZFBakBXmE6Gj5qumz51gwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">iy8GVdK11EmKnmJ6LivVVQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailRoleNameLabel" type="EdgeLabelView" guid="VrmcPyj2oUyEm5i/AG7/KgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">PhlKgbqPt0OClpwk2m9vswAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadMultiplicityLabel" type="EdgeLabelView" guid="KHpH30oHrEew1AGquvXiEQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">iy8GVdK11EmKnmJ6LivVVQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailMultiplicityLabel" type="EdgeLabelView" guid="odMtivppNUOccWtC85AVCQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">PhlKgbqPt0OClpwk2m9vswAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadPropertyLabel" type="EdgeLabelView" guid="W7KAnZMmjEKAxuaUXA4D6AAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">iy8GVdK11EmKnmJ6LivVVQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailPropertyLabel" type="EdgeLabelView" guid="2IiGGrbDkUiobp5CJnME1QAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">PhlKgbqPt0OClpwk2m9vswAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadQualifierCompartment" type="UMLQualifierCompartmentView" guid="jsiact/gpUS21gy1IeSlZQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-848</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-720</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">iy8GVdK11EmKnmJ6LivVVQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailQualifierCompartment" type="UMLQualifierCompartmentView" guid="+70t9Os6zUWhIAhufEQsBAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-848</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-720</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">PhlKgbqPt0OClpwk2m9vswAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedViews[15]" type="UMLAssociationView" guid="l3oAx6sfA0ScCOouvAFKYwAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Points" type="Points">430,410;456,412</XPD:ATTR> -<XPD:REF name="Model">8zCqordbBESBaPJH8SIoOQAA</XPD:REF> -<XPD:REF name="Head">7aPHkO59WEubHbpM/Djq/AAA</XPD:REF> -<XPD:REF name="Tail">BVNqLhbhP06y98++NgmxAwAA</XPD:REF> -<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="pM/XXFo9Ikq+kK5++HoZ0QAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">8zCqordbBESBaPJH8SIoOQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="igklIYxpfka7OH5oAnRbPwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:REF name="Model">8zCqordbBESBaPJH8SIoOQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="RtZQfGM0uUqohb/WlARRpwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">8zCqordbBESBaPJH8SIoOQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadRoleNameLabel" type="EdgeLabelView" guid="lDsB+MeNlUy+OEBCbfs0OAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">zefo1Bu+v0e4gn9nUL+bSQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailRoleNameLabel" type="EdgeLabelView" guid="pr9mkVSNO0KasNMsFvgDuQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">72fG4kbiM0eyczFPq2MtVAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadMultiplicityLabel" type="EdgeLabelView" guid="EeUDIEWsnkO5HzTU6L6kZQAA"> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:ATTR name="Text" type="string">1</XPD:ATTR> -<XPD:REF name="Model">zefo1Bu+v0e4gn9nUL+bSQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailMultiplicityLabel" type="EdgeLabelView" guid="4fUHmnlcd0WplogWZWqPRQAA"> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:ATTR name="Text" type="string">1..*</XPD:ATTR> -<XPD:REF name="Model">72fG4kbiM0eyczFPq2MtVAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadPropertyLabel" type="EdgeLabelView" guid="TuyQdZk0H0+ai9Mg3ZtK3AAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">zefo1Bu+v0e4gn9nUL+bSQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailPropertyLabel" type="EdgeLabelView" guid="kKRq4K1cvEup70Oz2UFd8QAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">72fG4kbiM0eyczFPq2MtVAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadQualifierCompartment" type="UMLQualifierCompartmentView" guid="NKw56kYvx0W0KlwhXPYWMwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-848</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-720</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">zefo1Bu+v0e4gn9nUL+bSQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailQualifierCompartment" type="UMLQualifierCompartmentView" guid="DS2eOvXKXku93Y4x950QPgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-848</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-720</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">72fG4kbiM0eyczFPq2MtVAAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedViews[16]" type="UMLClassView" guid="Th+ZwPCIw0CZjtawrnGPrQAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">756</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">440</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">88</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">41</XPD:ATTR> -<XPD:REF name="Model">b8JuO/0C0Eq0GnJ0Q/tEWQAA</XPD:REF> -<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="sEpK+JymS02lZlpXniSRjAAA"> -<XPD:OBJ name="NameLabel" type="LabelView" guid="Gfl9bfM73kq+EYU5hOwDUQAA"> -<XPD:ATTR name="FontStyle" type="integer">1</XPD:ATTR> -<XPD:ATTR name="Text" type="string">CTvBooking</XPD:ATTR> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="dWzJpyjDIE6y0Sx/YmBzlwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="LabelView" guid="Ak99xRpzJ0+K3Y8Z70NTWQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="AttributeCompartment" type="UMLAttributeCompartmentView" guid="LL3KL7SUuEyu4pY6NT57NAAA"> -<XPD:REF name="Model">b8JuO/0C0Eq0GnJ0Q/tEWQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="OperationCompartment" type="UMLOperationCompartmentView" guid="dCkq+XCQgkaH1Q901KclHQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:REF name="Model">b8JuO/0C0Eq0GnJ0Q/tEWQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TemplateParameterCompartment" type="UMLTemplateParameterCompartmentView" guid="+Bzptjmx3kWzAYT9fN/rxQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:REF name="Model">b8JuO/0C0Eq0GnJ0Q/tEWQAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedViews[17]" type="UMLClassView" guid="ybciiFK3jEO6SdfdRt6uAgAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">68</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">332</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">80</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">41</XPD:ATTR> -<XPD:REF name="Model">3uD8ZK44vEi6X3Yo5n4G3wAA</XPD:REF> -<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="VEgafHzMKkem+RzIfaWBnQAA"> -<XPD:OBJ name="NameLabel" type="LabelView" guid="605ap6gGgUGE85kGWYWaKgAA"> -<XPD:ATTR name="FontStyle" type="integer">1</XPD:ATTR> -<XPD:ATTR name="Text" type="string">CTvRegion</XPD:ATTR> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="6TZwhHYPs0mXP+dvmVvxnwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="LabelView" guid="eHeyWsrCgUeI8XUSaf0Y5QAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="AttributeCompartment" type="UMLAttributeCompartmentView" guid="AL2e0wMT+0K0AC6gZuuhdwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:REF name="Model">3uD8ZK44vEi6X3Yo5n4G3wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="OperationCompartment" type="UMLOperationCompartmentView" guid="zIfIWkZ3Lkiq2O9aOGiU/gAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:REF name="Model">3uD8ZK44vEi6X3Yo5n4G3wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TemplateParameterCompartment" type="UMLTemplateParameterCompartmentView" guid="exyb4FNp+Ue9ROAGwoQFcwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:REF name="Model">3uD8ZK44vEi6X3Yo5n4G3wAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedViews[18]" type="UMLClassView" guid="tzICJ64LmUSx1fvEy4dHZQAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">580</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">396</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">80</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">43</XPD:ATTR> -<XPD:REF name="Model">iUy0YZgyREC+o54lTQptaAAA</XPD:REF> -<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="6w5B2Z+R1kG+mt3vZl3lVQAA"> -<XPD:OBJ name="NameLabel" type="LabelView" guid="Cl9ObgtVFEmfwYkvLw0YHwAA"> -<XPD:ATTR name="FontStyle" type="integer">1</XPD:ATTR> -<XPD:ATTR name="Text" type="string">CTvSatellite</XPD:ATTR> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="GhJezIVJAUO7cg/A/n5EdQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="LabelView" guid="JwksgiMMQ0GQ6xqrv6I4jgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="AttributeCompartment" type="UMLAttributeCompartmentView" guid="yCTnlkoiRkSszYJDHrqQuwAA"> -<XPD:REF name="Model">iUy0YZgyREC+o54lTQptaAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="OperationCompartment" type="UMLOperationCompartmentView" guid="phU5m2tyh0yMlhsYRPe6dwAA"> -<XPD:REF name="Model">iUy0YZgyREC+o54lTQptaAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TemplateParameterCompartment" type="UMLTemplateParameterCompartmentView" guid="S8DZ5jxQq0+WFWPFnQy7iAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:REF name="Model">iUy0YZgyREC+o54lTQptaAAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedViews[19]" type="UMLAssociationView" guid="5vCGUSmlwUWKkjul/i5CoAAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Points" type="Points">588,438;393,568</XPD:ATTR> -<XPD:REF name="Model">3RrM1HB71kyHO0jB4JI4zgAA</XPD:REF> -<XPD:REF name="Head">a8FG7H9SzUelkRx52q1d5AAA</XPD:REF> -<XPD:REF name="Tail">tzICJ64LmUSx1fvEy4dHZQAA</XPD:REF> -<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="ihIaZz5p+0Cte+Zqg1wUKgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">3RrM1HB71kyHO0jB4JI4zgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="XyhhchGH70uYaM5UdGboKQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:REF name="Model">3RrM1HB71kyHO0jB4JI4zgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="+N+OW0LtoEyevYQ++bVO1gAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">3RrM1HB71kyHO0jB4JI4zgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadRoleNameLabel" type="EdgeLabelView" guid="vLsrualWRkO0QI8PcBWGAAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">DkcX/fIec029p5Da5gYToAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailRoleNameLabel" type="EdgeLabelView" guid="blnGfW4UCk6tS0veRc88xAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">ULQw0JNjPE2758pFWlo+MQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadMultiplicityLabel" type="EdgeLabelView" guid="vWndJmxhrkKfipX/zAAt4AAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">DkcX/fIec029p5Da5gYToAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailMultiplicityLabel" type="EdgeLabelView" guid="jGRa3FaTrUWVhYVG834fjwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">ULQw0JNjPE2758pFWlo+MQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadPropertyLabel" type="EdgeLabelView" guid="lKgJhvwP/Eygz7oPLvwsxwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">DkcX/fIec029p5Da5gYToAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailPropertyLabel" type="EdgeLabelView" guid="olvLmzjsfka5YmNEOntQDAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">ULQw0JNjPE2758pFWlo+MQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadQualifierCompartment" type="UMLQualifierCompartmentView" guid="AdMO10glEEWGGHqpzKNvewAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-848</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-720</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">DkcX/fIec029p5Da5gYToAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailQualifierCompartment" type="UMLQualifierCompartmentView" guid="H/do1s5Rh02ETrOyjtaoaAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-848</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-720</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">ULQw0JNjPE2758pFWlo+MQAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedViews[20]" type="UMLClassView" guid="hzoiTuCQqEuArZEejfwdnQAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">684</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">344</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">102</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">43</XPD:ATTR> -<XPD:REF name="Model">/LI4+1GTjEagI/wLEFpVSQAA</XPD:REF> -<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="bGpo24CeZkuczyv74zkRtAAA"> -<XPD:OBJ name="NameLabel" type="LabelView" guid="M/nbdX/wf0SiKKXamCKy2gAA"> -<XPD:ATTR name="FontStyle" type="integer">1</XPD:ATTR> -<XPD:ATTR name="Text" type="string">CTvDimension</XPD:ATTR> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="mW7NW23ux06laiKhpkTD7wAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="LabelView" guid="gVAZHA+LzE+/vXDeqIkJrgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="AttributeCompartment" type="UMLAttributeCompartmentView" guid="PdTrEGRJOEiEJyD2I9IzJgAA"> -<XPD:REF name="Model">/LI4+1GTjEagI/wLEFpVSQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="OperationCompartment" type="UMLOperationCompartmentView" guid="VbdqX2NLOkK2DTLhOA91OwAA"> -<XPD:REF name="Model">/LI4+1GTjEagI/wLEFpVSQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TemplateParameterCompartment" type="UMLTemplateParameterCompartmentView" guid="K00/VzyqZUmltiuaKWLgAQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:REF name="Model">/LI4+1GTjEagI/wLEFpVSQAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedViews[21]" type="UMLAssociationView" guid="EWnB2mjt6ke3pnsnQFRgJwAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Points" type="Points">699,386;397,568</XPD:ATTR> -<XPD:REF name="Model">GjMZbUwaMkGOkbxOXau26AAA</XPD:REF> -<XPD:REF name="Head">a8FG7H9SzUelkRx52q1d5AAA</XPD:REF> -<XPD:REF name="Tail">hzoiTuCQqEuArZEejfwdnQAA</XPD:REF> -<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="dM3yo1oYRUWNB1JawgFnywAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">GjMZbUwaMkGOkbxOXau26AAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="/IP55LSMZUCRoa77gkMh9gAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:REF name="Model">GjMZbUwaMkGOkbxOXau26AAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="Og4FQYOz9kOr8LF43j+ySwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">GjMZbUwaMkGOkbxOXau26AAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadRoleNameLabel" type="EdgeLabelView" guid="zHiCXVqqgE6r2lDdnVDI1gAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">gc0GlJ6ewUOpiyya+XPqjQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailRoleNameLabel" type="EdgeLabelView" guid="Ggu7vb3GMU2vn9mS8bGZpwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">aYL27tYOR02se3g//aEBeAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadMultiplicityLabel" type="EdgeLabelView" guid="19Ii9g15zUmLLURud9e9XAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">gc0GlJ6ewUOpiyya+XPqjQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailMultiplicityLabel" type="EdgeLabelView" guid="wMyvwGpZQUmJ2a2lXlkc/AAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">aYL27tYOR02se3g//aEBeAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadPropertyLabel" type="EdgeLabelView" guid="KLCf1m7tBkGvkM3iOxLhJgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">gc0GlJ6ewUOpiyya+XPqjQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailPropertyLabel" type="EdgeLabelView" guid="rn/sn4ErGkyYnwDUlnpmTAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">aYL27tYOR02se3g//aEBeAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadQualifierCompartment" type="UMLQualifierCompartmentView" guid="1+qZEhcpyk6RHirwjBjalgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-1028</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-1004</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">gc0GlJ6ewUOpiyya+XPqjQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailQualifierCompartment" type="UMLQualifierCompartmentView" guid="wElMDINXY0esqBl7AwoyfQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-1028</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-1004</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">aYL27tYOR02se3g//aEBeAAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedViews[22]" type="UMLAssociationView" guid="DbUG5zy8r0yq6L/I1naVdQAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Points" type="Points">324,266;147,336</XPD:ATTR> -<XPD:REF name="Model">m6lnHtsBL02A4Oup+IzVEAAA</XPD:REF> -<XPD:REF name="Head">ybciiFK3jEO6SdfdRt6uAgAA</XPD:REF> -<XPD:REF name="Tail">9Ld1pTeBF0CZmoVdEfEBMQAA</XPD:REF> -<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="1qY9qbCT1ka5tmfuL9yaJgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">m6lnHtsBL02A4Oup+IzVEAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="bnG59/mNjk+fcthvMQG2VAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:REF name="Model">m6lnHtsBL02A4Oup+IzVEAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="wovrqiKgc0qw9BUyPaGuBQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">m6lnHtsBL02A4Oup+IzVEAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadRoleNameLabel" type="EdgeLabelView" guid="hytVQ6VnmEaHnFV5o9fQ0AAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">l6Lg/NJG5UWu+7ALxaVP3gAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailRoleNameLabel" type="EdgeLabelView" guid="JbJSjKTBikyT++rY1XVCtwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">kdbNMfgoG02cJO0UFJeeLwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadMultiplicityLabel" type="EdgeLabelView" guid="eYodfuyOKEK7WC9dBBlaigAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">l6Lg/NJG5UWu+7ALxaVP3gAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailMultiplicityLabel" type="EdgeLabelView" guid="wUtw7zNylEK+wDvPOsUtGwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">kdbNMfgoG02cJO0UFJeeLwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadPropertyLabel" type="EdgeLabelView" guid="BEEaANsP0UCbPpRjMWyndwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">l6Lg/NJG5UWu+7ALxaVP3gAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailPropertyLabel" type="EdgeLabelView" guid="/cBBOvztgE6Kd7yvemxXPwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">kdbNMfgoG02cJO0UFJeeLwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadQualifierCompartment" type="UMLQualifierCompartmentView" guid="JKx2O2r/H0y9NJ3+4rup1QAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-1028</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-1004</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">l6Lg/NJG5UWu+7ALxaVP3gAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailQualifierCompartment" type="UMLQualifierCompartmentView" guid="uj1vGzCGtkGielBw0Bxi4QAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-1028</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-1004</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">kdbNMfgoG02cJO0UFJeeLwAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedViews[23]" type="UMLAssociationView" guid="l2Yo1ObIG0WVx7IS2a/B3QAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Points" type="Points">340,272;173,420</XPD:ATTR> -<XPD:REF name="Model">gmKjyBaRB0SfVd2p3FDOTwAA</XPD:REF> -<XPD:REF name="Head">iEgH+6H6kkG++neKuToTSgAA</XPD:REF> -<XPD:REF name="Tail">9Ld1pTeBF0CZmoVdEfEBMQAA</XPD:REF> -<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="Bt1whnZV8ke93vkLSyNq6wAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">gmKjyBaRB0SfVd2p3FDOTwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="fqRKs5ARzUGsdlKFgCFhWQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:REF name="Model">gmKjyBaRB0SfVd2p3FDOTwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="5M/QRFEaxUa0SktETbkRSwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">gmKjyBaRB0SfVd2p3FDOTwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadRoleNameLabel" type="EdgeLabelView" guid="oOLw6a4XNk6oN6yvhlsf7QAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">QwwfXlN26EahMaF2XDAvLAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailRoleNameLabel" type="EdgeLabelView" guid="51OtH+Gyy0+XZJVSgV/KuQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">X5VvOi2uGkGYzMMS5nWm2AAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadMultiplicityLabel" type="EdgeLabelView" guid="kMLAHkAn9EKw71vpw3PgHQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">QwwfXlN26EahMaF2XDAvLAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailMultiplicityLabel" type="EdgeLabelView" guid="V2pqj6nPg0SqB+TNOQI5PwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">X5VvOi2uGkGYzMMS5nWm2AAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadPropertyLabel" type="EdgeLabelView" guid="FYDexLT3eUK3X5xdW3Qq/gAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">QwwfXlN26EahMaF2XDAvLAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailPropertyLabel" type="EdgeLabelView" guid="1rWGuTeEqEm+RdcskXCo9gAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">X5VvOi2uGkGYzMMS5nWm2AAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadQualifierCompartment" type="UMLQualifierCompartmentView" guid="VJLq9UMlJE2EqLEbDm23HQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-1028</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-1004</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">QwwfXlN26EahMaF2XDAvLAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailQualifierCompartment" type="UMLQualifierCompartmentView" guid="90vol1uY7U27TcNYwOdZBQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-1028</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-1004</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">X5VvOi2uGkGYzMMS5nWm2AAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedViews[24]" type="UMLAssociationView" guid="dSXCMAUeXkaVaOqAa4KDAQAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Points" type="Points">364,272;358,388</XPD:ATTR> -<XPD:REF name="Model">iBQV0DXX90uUjMTGr6FFjQAA</XPD:REF> -<XPD:REF name="Head">BVNqLhbhP06y98++NgmxAwAA</XPD:REF> -<XPD:REF name="Tail">9Ld1pTeBF0CZmoVdEfEBMQAA</XPD:REF> -<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="AXtWRmQ/j0G8KsAfZc/QeQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">iBQV0DXX90uUjMTGr6FFjQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="pxhqUzjCEkqTLYfXynALEwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:REF name="Model">iBQV0DXX90uUjMTGr6FFjQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="0nagXXOSFk+hHuMBpdFBLwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">iBQV0DXX90uUjMTGr6FFjQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadRoleNameLabel" type="EdgeLabelView" guid="z3Q2FaOZNUa329RgqNTDpgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">IMPiiZPlxkaJkH8N2NGOggAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailRoleNameLabel" type="EdgeLabelView" guid="+0LMOuMUukS68snSkLSsTwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">xf4XKZpxx0iF7C4H+oOABwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadMultiplicityLabel" type="EdgeLabelView" guid="bIZ0y/4MSEGDbNvxAP+XjAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">IMPiiZPlxkaJkH8N2NGOggAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailMultiplicityLabel" type="EdgeLabelView" guid="ow67AFPFhk2P92GHjX8x6gAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">xf4XKZpxx0iF7C4H+oOABwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadPropertyLabel" type="EdgeLabelView" guid="C8AG2Zjc9UCIEaei4/obTgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">IMPiiZPlxkaJkH8N2NGOggAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailPropertyLabel" type="EdgeLabelView" guid="cLLrD3Z3uUyN5TkuZIiYvQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">xf4XKZpxx0iF7C4H+oOABwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadQualifierCompartment" type="UMLQualifierCompartmentView" guid="q1TRTMmCmEuxq3mV3WwE9wAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-1028</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-1004</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">IMPiiZPlxkaJkH8N2NGOggAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailQualifierCompartment" type="UMLQualifierCompartmentView" guid="RpANS2KKQEiX7rWNn+sFQQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-1028</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-1004</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">xf4XKZpxx0iF7C4H+oOABwAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedViews[25]" type="UMLAssociationView" guid="ALV9IpRzikWc38x/4t62CgAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Points" type="Points">383,272;484,396</XPD:ATTR> -<XPD:REF name="Model">9P0hz9Bq2U6gDVowATxiWAAA</XPD:REF> -<XPD:REF name="Head">7aPHkO59WEubHbpM/Djq/AAA</XPD:REF> -<XPD:REF name="Tail">9Ld1pTeBF0CZmoVdEfEBMQAA</XPD:REF> -<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="8t8bSCYvGkO28nJZE2y4nwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">9P0hz9Bq2U6gDVowATxiWAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="3EywKQmkOE2KjbjVh2NmDgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:REF name="Model">9P0hz9Bq2U6gDVowATxiWAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="BbqpqccVf0Wg7tVha614JAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">9P0hz9Bq2U6gDVowATxiWAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadRoleNameLabel" type="EdgeLabelView" guid="YVFZpgGB/0O96quX2udZDwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">BSJLLgAd4kCusm/8BFZQMQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailRoleNameLabel" type="EdgeLabelView" guid="TSgUJz4gCUSqn+dKKulHoAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">yVknRLQq7U2nj3bRfizyAgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadMultiplicityLabel" type="EdgeLabelView" guid="pIexnuTBiUiEhhq44l4rCwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">BSJLLgAd4kCusm/8BFZQMQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailMultiplicityLabel" type="EdgeLabelView" guid="bB0rInPRJES1Fi1mh9FCEAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">yVknRLQq7U2nj3bRfizyAgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadPropertyLabel" type="EdgeLabelView" guid="yT+paMjNpkaG1OKJL+sYCAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">BSJLLgAd4kCusm/8BFZQMQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailPropertyLabel" type="EdgeLabelView" guid="Te1GttqM50mrkMzGYceWLQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">yVknRLQq7U2nj3bRfizyAgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadQualifierCompartment" type="UMLQualifierCompartmentView" guid="znNxDO7m6E6nvS/FYUZ9OAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-1028</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-1004</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">BSJLLgAd4kCusm/8BFZQMQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailQualifierCompartment" type="UMLQualifierCompartmentView" guid="XUHdjv1boEaqvLcg553dbwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-1028</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-1004</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">yVknRLQq7U2nj3bRfizyAgAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedViews[26]" type="UMLAssociationView" guid="hBsdq7HI/EWiSzAGC7VcegAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Points" type="Points">398,272;587,396</XPD:ATTR> -<XPD:REF name="Model">sBsUoQYdEkCsxRTpPtknYAAA</XPD:REF> -<XPD:REF name="Head">tzICJ64LmUSx1fvEy4dHZQAA</XPD:REF> -<XPD:REF name="Tail">9Ld1pTeBF0CZmoVdEfEBMQAA</XPD:REF> -<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="AW09hEar3Einy0/8DRC44wAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">sBsUoQYdEkCsxRTpPtknYAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="GL4o+Jwo9kafQcdPg1ZCtgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:REF name="Model">sBsUoQYdEkCsxRTpPtknYAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="kNZhsHL9skazmf+MM+oIKwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">sBsUoQYdEkCsxRTpPtknYAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadRoleNameLabel" type="EdgeLabelView" guid="5T2cPS5X+UykejaXNX6mSAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">bObyymjPEkeQZSoHCKpP2QAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailRoleNameLabel" type="EdgeLabelView" guid="VipQilP5w0axs39cx9OCsgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">6CsrL0wlVEKI657OoEev1gAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadMultiplicityLabel" type="EdgeLabelView" guid="P16FQXg1DEOld8DfGFfSxQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">bObyymjPEkeQZSoHCKpP2QAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailMultiplicityLabel" type="EdgeLabelView" guid="m6SZNVehm06iGtccsj43wAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">6CsrL0wlVEKI657OoEev1gAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadPropertyLabel" type="EdgeLabelView" guid="FcWiwQTsx02Ku0N5G3bjSgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">bObyymjPEkeQZSoHCKpP2QAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailPropertyLabel" type="EdgeLabelView" guid="x2e4QwAQ50Sn6Io3k6B2tAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">6CsrL0wlVEKI657OoEev1gAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadQualifierCompartment" type="UMLQualifierCompartmentView" guid="d3kqRYSWSUSKKTZ+56sZkwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-1028</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-1004</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">bObyymjPEkeQZSoHCKpP2QAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailQualifierCompartment" type="UMLQualifierCompartmentView" guid="4MO5fs8bNkahA1cEAQY9zAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-1028</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-1004</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">6CsrL0wlVEKI657OoEev1gAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedViews[27]" type="UMLAssociationView" guid="Gfgt2UdXqE2QrN+Jzf+QvQAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Points" type="Points">406,263;684,349</XPD:ATTR> -<XPD:REF name="Model">5JmzC90ylki6klhVRRibGAAA</XPD:REF> -<XPD:REF name="Head">hzoiTuCQqEuArZEejfwdnQAA</XPD:REF> -<XPD:REF name="Tail">9Ld1pTeBF0CZmoVdEfEBMQAA</XPD:REF> -<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="/p9rmIUUo0mUctVF/yhY5AAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">5JmzC90ylki6klhVRRibGAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="P5QKAYFqikOaJu107L2QDwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:REF name="Model">5JmzC90ylki6klhVRRibGAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="y/WNtKBGo0q8OYbjC0evjgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">5JmzC90ylki6klhVRRibGAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadRoleNameLabel" type="EdgeLabelView" guid="cGwksZvEz0aSTFoED5zuJQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">zCPl48BYx0CFRkp8Jj5mogAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailRoleNameLabel" type="EdgeLabelView" guid="lELIUkkOg0a4b0G8373BcAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">be+eScBkV0Cn4n2XjSojvgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadMultiplicityLabel" type="EdgeLabelView" guid="pF9hWJbSZkCUq/C5qcS+7gAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">zCPl48BYx0CFRkp8Jj5mogAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailMultiplicityLabel" type="EdgeLabelView" guid="R1FSACG6EkWd7DK8ihYAQAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">be+eScBkV0Cn4n2XjSojvgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadPropertyLabel" type="EdgeLabelView" guid="/NvtextfvUyZKtMbQ1urHAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">zCPl48BYx0CFRkp8Jj5mogAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailPropertyLabel" type="EdgeLabelView" guid="WXg43X5+gEiu4atePea88gAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">be+eScBkV0Cn4n2XjSojvgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadQualifierCompartment" type="UMLQualifierCompartmentView" guid="4pUvTStSU0yU0BtcF8HyfQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-1028</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-1004</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">zCPl48BYx0CFRkp8Jj5mogAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailQualifierCompartment" type="UMLQualifierCompartmentView" guid="z+QrSf59lkSSqK+c5yKgcwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-1028</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-1004</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">be+eScBkV0Cn4n2XjSojvgAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedViews[28]" type="UMLAssociationView" guid="Z3PDc4i/1UCiaxni9RpD2wAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Points" type="Points">756,473;397,581</XPD:ATTR> -<XPD:REF name="Model">1PikxOdVcU2P6grgcwgRvQAA</XPD:REF> -<XPD:REF name="Head">a8FG7H9SzUelkRx52q1d5AAA</XPD:REF> -<XPD:REF name="Tail">Th+ZwPCIw0CZjtawrnGPrQAA</XPD:REF> -<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="mhm++LaJkk6lJzcTz7hSFgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">1PikxOdVcU2P6grgcwgRvQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="IxT95vhnIEyr12fdRQskKQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:REF name="Model">1PikxOdVcU2P6grgcwgRvQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="d+KXspkLsEa/YezZSZ7YZAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">1PikxOdVcU2P6grgcwgRvQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadRoleNameLabel" type="EdgeLabelView" guid="HxD2Y75aWkSp4d/0R6KiBgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">Fd/cvRV12USE+Vu6oJsMOgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailRoleNameLabel" type="EdgeLabelView" guid="08HUrDXL5EahpEFi9GJ9yQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">AfVgLfyALEyP98guAbYHUAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadMultiplicityLabel" type="EdgeLabelView" guid="K5rMwb6Iyka5HDC+pxIZOwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">Fd/cvRV12USE+Vu6oJsMOgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailMultiplicityLabel" type="EdgeLabelView" guid="QRLcMMAOqES9/c4itcB3vAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">AfVgLfyALEyP98guAbYHUAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadPropertyLabel" type="EdgeLabelView" guid="GfMJbs1/nkShjuqnA/8BBAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">Fd/cvRV12USE+Vu6oJsMOgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailPropertyLabel" type="EdgeLabelView" guid="mQFH13/vQUucR5en5l/dUwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">AfVgLfyALEyP98guAbYHUAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadQualifierCompartment" type="UMLQualifierCompartmentView" guid="jXmYJVpZxkCkrM3yJ0eHmgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-1000</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-1000</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">Fd/cvRV12USE+Vu6oJsMOgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailQualifierCompartment" type="UMLQualifierCompartmentView" guid="m0oKw9kT5k2CSLEOl9tV+gAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-1000</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-1000</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">AfVgLfyALEyP98guAbYHUAAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedViews[29]" type="UMLAssociationView" guid="JFsYjMcrU0GkgX8jFqUVZAAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Points" type="Points">406,252;704,263</XPD:ATTR> -<XPD:REF name="Model">3PUgTTrP3U+LofrDCso/eAAA</XPD:REF> -<XPD:REF name="Head">vYDCfUgYq0KaBSDnxbpYVgAA</XPD:REF> -<XPD:REF name="Tail">9Ld1pTeBF0CZmoVdEfEBMQAA</XPD:REF> -<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="R57gZgKnBkm8aQCFy90fiQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">3PUgTTrP3U+LofrDCso/eAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="GznyP+sffEKB3m9dw8jftQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:REF name="Model">3PUgTTrP3U+LofrDCso/eAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="NM8M6o1EGkWwEmKdXXKpPAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">3PUgTTrP3U+LofrDCso/eAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadRoleNameLabel" type="EdgeLabelView" guid="AoZLFazfK0WqZzhHukFsAwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">usmo/t5V5UGA31IdVHUKyQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailRoleNameLabel" type="EdgeLabelView" guid="vVViwylf/Ei9ld6xTj7WdQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">PP9nsgv4Vkmbk1zEfct4VAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadMultiplicityLabel" type="EdgeLabelView" guid="pDauXlrgH0KfuJt30X8zxgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">usmo/t5V5UGA31IdVHUKyQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailMultiplicityLabel" type="EdgeLabelView" guid="fhSnklGoSEqMAzQOJY57vwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">PP9nsgv4Vkmbk1zEfct4VAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadPropertyLabel" type="EdgeLabelView" guid="QGcntempZkeGNA54l7y1rAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">usmo/t5V5UGA31IdVHUKyQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailPropertyLabel" type="EdgeLabelView" guid="A5rd4V90HkCp3dmD7wYTbwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">PP9nsgv4Vkmbk1zEfct4VAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadQualifierCompartment" type="UMLQualifierCompartmentView" guid="NKRAWeqgBEKgb6cHnYpt9QAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-1000</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-1000</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">usmo/t5V5UGA31IdVHUKyQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailQualifierCompartment" type="UMLQualifierCompartmentView" guid="n4gqVjygvUK59/wDDHYNJgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-1000</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-1000</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">PP9nsgv4Vkmbk1zEfct4VAAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedViews[30]" type="UMLClassView" guid="wu+9+Z2tqE2B3qchWKoWdQAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">20</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">500</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">119</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">63</XPD:ATTR> -<XPD:REF name="Model">K+kTKNnFak+/Lo9L/RD0ugAA</XPD:REF> -<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="zRZpHvisoUiNkQtlLufy/AAA"> -<XPD:OBJ name="NameLabel" type="LabelView" guid="z/By7OpfokuCMZMimH2OSQAA"> -<XPD:ATTR name="FontStyle" type="integer">1</XPD:ATTR> -<XPD:ATTR name="Text" type="string">CTvChannelParams</XPD:ATTR> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="PKd1BAj8BkWUWLwbCv4oegAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="LabelView" guid="zu1bY/47U0eoDJhSjdTYNAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="AttributeCompartment" type="UMLAttributeCompartmentView" guid="KAuxxnmqhkmQ7MLBFq8lRgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:REF name="Model">K+kTKNnFak+/Lo9L/RD0ugAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="OperationCompartment" type="UMLOperationCompartmentView" guid="Ynggyopqt02II9Rzg7q1VQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:REF name="Model">K+kTKNnFak+/Lo9L/RD0ugAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TemplateParameterCompartment" type="UMLTemplateParameterCompartmentView" guid="PmvllpBms0ifaPkwzqXvOAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:REF name="Model">K+kTKNnFak+/Lo9L/RD0ugAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedViews[31]" type="UMLAssociationView" guid="Q/k+TeR21UWA0JPwiSZAnwAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Points" type="Points">130,465;103,500</XPD:ATTR> -<XPD:REF name="Model">7aJQb5j/+kWV9Kb/0dqoJAAA</XPD:REF> -<XPD:REF name="Head">wu+9+Z2tqE2B3qchWKoWdQAA</XPD:REF> -<XPD:REF name="Tail">iEgH+6H6kkG++neKuToTSgAA</XPD:REF> -<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="C2jwipMyN0iMiEays2pVbQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">7aJQb5j/+kWV9Kb/0dqoJAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="MxF6R3nqrk+nOid9gUoepAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:REF name="Model">7aJQb5j/+kWV9Kb/0dqoJAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="5CzND/56UUuAy2C5OXPJGAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">7aJQb5j/+kWV9Kb/0dqoJAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadRoleNameLabel" type="EdgeLabelView" guid="VSR1os7RckKbbg+wZ6UPWwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">Dzfwehs+P0e8CyC/holLewAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailRoleNameLabel" type="EdgeLabelView" guid="2P5BNH8K/UKYeriBTZAbSgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">C7X0ILbZrkWDVQ5Vc+PT/wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadMultiplicityLabel" type="EdgeLabelView" guid="+gO4BIQphEShtlup7FhfcgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">Dzfwehs+P0e8CyC/holLewAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailMultiplicityLabel" type="EdgeLabelView" guid="nbxLBw93Oka1PVwDZftA2QAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">C7X0ILbZrkWDVQ5Vc+PT/wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadPropertyLabel" type="EdgeLabelView" guid="3yHNXWsgu0eaPzi0F9a3dgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">Dzfwehs+P0e8CyC/holLewAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailPropertyLabel" type="EdgeLabelView" guid="X0Z4arOj+EWceCda6Sj0vgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">C7X0ILbZrkWDVQ5Vc+PT/wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadQualifierCompartment" type="UMLQualifierCompartmentView" guid="laRXvwF4WE2wUODF6aCNSQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-1000</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-1000</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">Dzfwehs+P0e8CyC/holLewAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailQualifierCompartment" type="UMLQualifierCompartmentView" guid="lKhOSy40pUOJhnfmNzIx5AAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-1000</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-1000</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">C7X0ILbZrkWDVQ5Vc+PT/wAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedViews[32]" type="UMLAssociationView" guid="2tALOFJiukSZiwAj9gBDIQAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Points" type="Points">138,545;312,584</XPD:ATTR> -<XPD:REF name="Model">6r7WWefo1kK4HXJ46+UuHwAA</XPD:REF> -<XPD:REF name="Head">a8FG7H9SzUelkRx52q1d5AAA</XPD:REF> -<XPD:REF name="Tail">wu+9+Z2tqE2B3qchWKoWdQAA</XPD:REF> -<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="BM0ZC/TOp0CzIS/dSFOgMQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">6r7WWefo1kK4HXJ46+UuHwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="911s2zFZYUCPtLOmXSDdDgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:REF name="Model">6r7WWefo1kK4HXJ46+UuHwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="bOeJui9AgkWX+he6KT6czQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">6r7WWefo1kK4HXJ46+UuHwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadRoleNameLabel" type="EdgeLabelView" guid="lMa33WFxzU2ojAIXkT9IwAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">AM/xtV731kSTTZbv0mmefgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailRoleNameLabel" type="EdgeLabelView" guid="2U407qHmXE+0VHF/y4trXwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">+M+2f65R0UCJH6UP90YGAQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadMultiplicityLabel" type="EdgeLabelView" guid="MAu3FLtcFkOt8a9+Yj8MBAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">AM/xtV731kSTTZbv0mmefgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailMultiplicityLabel" type="EdgeLabelView" guid="16BTtqnINEq6DZln/1Uc4AAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">+M+2f65R0UCJH6UP90YGAQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadPropertyLabel" type="EdgeLabelView" guid="Ehl7/9ciY0mjVGRlJGzTegAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">AM/xtV731kSTTZbv0mmefgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailPropertyLabel" type="EdgeLabelView" guid="dAD5Dd+Px0eU/Z7MNaXtWgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">+M+2f65R0UCJH6UP90YGAQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadQualifierCompartment" type="UMLQualifierCompartmentView" guid="FstmADGG7k2p8GVFXyT/GAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-1000</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-1000</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">AM/xtV731kSTTZbv0mmefgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailQualifierCompartment" type="UMLQualifierCompartmentView" guid="1RtPOXDsOEuSNTqKSxFAKAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-1000</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-1000</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">+M+2f65R0UCJH6UP90YGAQAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedDiagrams[1]" type="UMLClassDiagram" guid="KQsibHBE0E+iq5h5Fks0CQAA"> -<XPD:ATTR name="Name" type="string">tvpackage</XPD:ATTR> -<XPD:ATTR name="DefaultDiagram" type="boolean">True</XPD:ATTR> -<XPD:ATTR name="DiagramType" type="string">RobustnessDiagram</XPD:ATTR> -<XPD:REF name="DiagramOwner">dZ4UyetzSE+rDT9vQthF9wAA</XPD:REF> -<XPD:OBJ name="DiagramView" type="UMLClassDiagramView" guid="x/A73wV6JUGNNCNYoihDDgAA"> -<XPD:REF name="Diagram">KQsibHBE0E+iq5h5Fks0CQAA</XPD:REF> -<XPD:ATTR name="#OwnedViews" type="integer">10</XPD:ATTR> -<XPD:OBJ name="OwnedViews[0]" type="UMLPackageView" guid="R7RBkUeb+E+5S8gvJN8+QQAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">28</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">228</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">120</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">70</XPD:ATTR> -<XPD:REF name="Model">ZRumjrTwgUamBDOstkagPgAA</XPD:REF> -<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="Hex0jIlJWk2QTHp5TF36MwAA"> -<XPD:OBJ name="NameLabel" type="LabelView" guid="155YNS2IsE2b46plldDuZwAA"> -<XPD:ATTR name="Text" type="string">atv</XPD:ATTR> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="gqZ/H0j6nkqKMGqx1OqzOgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="LabelView" guid="mK5kp4doeUC6dn5S5jvPHAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -</XPD:OBJ> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedViews[1]" type="UMLPackageView" guid="fCE1/LJF8k+yzWx4bHj2WgAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">336</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">224</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">120</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">70</XPD:ATTR> -<XPD:REF name="Model">T1P4Xv7L+UuEzFqU+iyS5wAA</XPD:REF> -<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="N9Ut8OrmLU6VnX16D13WOwAA"> -<XPD:OBJ name="NameLabel" type="LabelView" guid="Yz9HR5DzxEuE9o9uHImtSQAA"> -<XPD:ATTR name="Text" type="string">dtv</XPD:ATTR> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="LDxg9fdTakmhArzVxsd2GQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="LabelView" guid="L/ePjmLKwUeEeTrRhsEKMgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -</XPD:OBJ> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedViews[2]" type="UMLPackageView" guid="H1zFqxbUzEqKqOJUsjP9UgAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">260</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">72</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">120</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">70</XPD:ATTR> -<XPD:REF name="Model">7dRihysn8kefkb+6mJlwzgAA</XPD:REF> -<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="f7UEhckiS0qQAoQ5jk3q5wAA"> -<XPD:OBJ name="NameLabel" type="LabelView" guid="J4t7wKCRQk6ZH6fs1Q9YrgAA"> -<XPD:ATTR name="Text" type="string">tvjava</XPD:ATTR> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="9qa1Yi+fukyu0We9ci5u/AAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="LabelView" guid="+iZgsEiKfUmY0m8L9nAURwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -</XPD:OBJ> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedViews[3]" type="UMLAssociationView" guid="G0kUvklDf0uhBeIUoV+srgAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Points" type="Points">267,141;138,228</XPD:ATTR> -<XPD:REF name="Model">rIQWVfPr7E24Tt4ljeTZ4wAA</XPD:REF> -<XPD:REF name="Head">R7RBkUeb+E+5S8gvJN8+QQAA</XPD:REF> -<XPD:REF name="Tail">H1zFqxbUzEqKqOJUsjP9UgAA</XPD:REF> -<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="6o6l7Ax4b0uvR1w70cdJiAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">rIQWVfPr7E24Tt4ljeTZ4wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="3ZsGQfCQIk+ZPFC1FyyVeQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:REF name="Model">rIQWVfPr7E24Tt4ljeTZ4wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="BCGhRmtL7kmoY1iXaapJOwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">rIQWVfPr7E24Tt4ljeTZ4wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadRoleNameLabel" type="EdgeLabelView" guid="SuRONY2jREyvBHGP7nheBQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">XKFQZaAIH0SxD7YBXgkK0wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailRoleNameLabel" type="EdgeLabelView" guid="zqmFgnNCJ0mU+9gnrH18SwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">jLzV7XdHP0Ogmb7/6IPCtgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadMultiplicityLabel" type="EdgeLabelView" guid="l9UCuL7VoEm7vFLWkobdoAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">XKFQZaAIH0SxD7YBXgkK0wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailMultiplicityLabel" type="EdgeLabelView" guid="yt3drhX0N0aispBa+C83TAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">jLzV7XdHP0Ogmb7/6IPCtgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadPropertyLabel" type="EdgeLabelView" guid="8rSGjmyTy0iar869slrlPgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">XKFQZaAIH0SxD7YBXgkK0wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailPropertyLabel" type="EdgeLabelView" guid="QE0xM9HZIUK4iQSOifSKDQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">jLzV7XdHP0Ogmb7/6IPCtgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadQualifierCompartment" type="UMLQualifierCompartmentView" guid="NYMZ1wuIcUy7G5VODIYIDQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-1000</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-1020</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">XKFQZaAIH0SxD7YBXgkK0wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailQualifierCompartment" type="UMLQualifierCompartmentView" guid="L3X2M2UWvECpCLZj42krJAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-1000</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-1020</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">jLzV7XdHP0Ogmb7/6IPCtgAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedViews[4]" type="UMLAssociationView" guid="+dr3aeLg8k2RQ8khsHmmqAAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Points" type="Points">336,141;378,224</XPD:ATTR> -<XPD:REF name="Model">0hCZfIhV4EOpKXcVPwcUnAAA</XPD:REF> -<XPD:REF name="Head">fCE1/LJF8k+yzWx4bHj2WgAA</XPD:REF> -<XPD:REF name="Tail">H1zFqxbUzEqKqOJUsjP9UgAA</XPD:REF> -<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="eiIT0uNCpUywEWk7FrhutgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">0hCZfIhV4EOpKXcVPwcUnAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="m5vcHblPLUe9VZHiD1lPzgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:REF name="Model">0hCZfIhV4EOpKXcVPwcUnAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="dHGIMYC9dUeyteDUvxEuNgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">0hCZfIhV4EOpKXcVPwcUnAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadRoleNameLabel" type="EdgeLabelView" guid="bVRmxC4LeEivBU8rO/l1IwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">TolxJOTDCkO5nyLC6ipkAwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailRoleNameLabel" type="EdgeLabelView" guid="DGGWcQw7xESguDo8y8c9JwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">DGWju3i/80ObxLedRPIIEwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadMultiplicityLabel" type="EdgeLabelView" guid="Brf+/LZbFEamowtJ6zGOAgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">TolxJOTDCkO5nyLC6ipkAwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailMultiplicityLabel" type="EdgeLabelView" guid="YyNOaiAWMU6urAt6uMo51wAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">DGWju3i/80ObxLedRPIIEwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadPropertyLabel" type="EdgeLabelView" guid="/6WmiwEpmUGnLzBRc6lCzwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">TolxJOTDCkO5nyLC6ipkAwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailPropertyLabel" type="EdgeLabelView" guid="RjfRt8utjEiWYhIQFBxLqgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">DGWju3i/80ObxLedRPIIEwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadQualifierCompartment" type="UMLQualifierCompartmentView" guid="eme8PTCUYkiREXPCAN1ACgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-1000</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-1020</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">TolxJOTDCkO5nyLC6ipkAwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailQualifierCompartment" type="UMLQualifierCompartmentView" guid="HRQ1wVKzDUe1hazbUuDnVwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-1000</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-1020</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">DGWju3i/80ObxLedRPIIEwAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedViews[5]" type="UMLPackageView" guid="HUFrn02Id0u4EHrKc4mxVgAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">528</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">308</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">120</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">70</XPD:ATTR> -<XPD:REF name="Model">CN6L5smMd0u/4SQDgGuxlAAA</XPD:REF> -<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="I7oFyXOyn0ap6db6aB27kQAA"> -<XPD:OBJ name="NameLabel" type="LabelView" guid="UZqAJSuU3kSCM+H7F0CJAwAA"> -<XPD:ATTR name="Text" type="string">am_mw</XPD:ATTR> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="uBO1MGx+MkeMvQYhb1C2NQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="LabelView" guid="kl+qD1R9/USAxQT6CzXArgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -</XPD:OBJ> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedViews[6]" type="UMLPackageView" guid="I+6GQQgDxUay2yh9EH63ugAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">296</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">428</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">120</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">70</XPD:ATTR> -<XPD:REF name="Model">y05IqzZQzU2XtiSPAXk7QgAA</XPD:REF> -<XPD:OBJ name="NameCompartment" type="UMLNameCompartmentView" guid="9hBSRpfEY02ywkAvNDqTXQAA"> -<XPD:OBJ name="NameLabel" type="LabelView" guid="h6PfAdCi8kytI+NLcAHmLAAA"> -<XPD:ATTR name="Text" type="string">am_adp</XPD:ATTR> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="LabelView" guid="lQixSy3pSUqBMXv0rFJpcQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="LabelView" guid="GkA9EEwFZkyyC6WEJrJkMAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -</XPD:OBJ> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedViews[7]" type="UMLAssociationView" guid="jyEOqiMx5kuOhl2RypG5igAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Points" type="Points">455,284;528,316</XPD:ATTR> -<XPD:REF name="Model">Yy1zZGFqjUCrfxwigF/GpgAA</XPD:REF> -<XPD:REF name="Head">HUFrn02Id0u4EHrKc4mxVgAA</XPD:REF> -<XPD:REF name="Tail">fCE1/LJF8k+yzWx4bHj2WgAA</XPD:REF> -<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="CPHJazCBZ06NtAVR2VK7OQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">Yy1zZGFqjUCrfxwigF/GpgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="APOmD3psFUyWhRAnwzCajwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:REF name="Model">Yy1zZGFqjUCrfxwigF/GpgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="QMsE3esBJk6sDRS6x5DJkQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">Yy1zZGFqjUCrfxwigF/GpgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadRoleNameLabel" type="EdgeLabelView" guid="5/4cIerJAUmV49IBGwpo+AAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">MOhicSFw0kKsC3+R+Reo0AAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailRoleNameLabel" type="EdgeLabelView" guid="Pet1Wl/5g0+pU9Kd2fc7SwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">KeKc5deyJkKjIbzodSAF8QAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadMultiplicityLabel" type="EdgeLabelView" guid="xdfe8bjolEChoIUMuakZ8gAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">MOhicSFw0kKsC3+R+Reo0AAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailMultiplicityLabel" type="EdgeLabelView" guid="Dx+9oTBsHEO70cjv4b2azAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">KeKc5deyJkKjIbzodSAF8QAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadPropertyLabel" type="EdgeLabelView" guid="BoU11LZqBk2U9D1Ai1YY2AAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">MOhicSFw0kKsC3+R+Reo0AAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailPropertyLabel" type="EdgeLabelView" guid="GAWp04mbX0+qBItsdvgjYwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">KeKc5deyJkKjIbzodSAF8QAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadQualifierCompartment" type="UMLQualifierCompartmentView" guid="fBqd46+r3kqJEpg8jQ4//wAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-984</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-1076</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">MOhicSFw0kKsC3+R+Reo0AAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailQualifierCompartment" type="UMLQualifierCompartmentView" guid="EDyc+T9/p0uT65Az3US0YgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-984</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-1076</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">KeKc5deyJkKjIbzodSAF8QAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedViews[8]" type="UMLAssociationView" guid="YWFKeOxwm0mHujDlyTbolQAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Points" type="Points">388,293;362,428</XPD:ATTR> -<XPD:REF name="Model">+rFPRw7qR0aoTGBGytrjDAAA</XPD:REF> -<XPD:REF name="Head">I+6GQQgDxUay2yh9EH63ugAA</XPD:REF> -<XPD:REF name="Tail">fCE1/LJF8k+yzWx4bHj2WgAA</XPD:REF> -<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="zrsbj2XE/EayNVwoOloIDAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">+rFPRw7qR0aoTGBGytrjDAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="pIYrJ7JAAUSz3n/qiGAv0gAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:REF name="Model">+rFPRw7qR0aoTGBGytrjDAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="qoKs5KXOckiwAYzN24SMoQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">+rFPRw7qR0aoTGBGytrjDAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadRoleNameLabel" type="EdgeLabelView" guid="5Y/PPNFnoUOKREH8OSaNBwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">n4pg4fd/GUuaJaSzXBirOAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailRoleNameLabel" type="EdgeLabelView" guid="88cAHmNV00eS5otEvuUQZAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">osliKvkWrU6Jd0FLz/mZngAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadMultiplicityLabel" type="EdgeLabelView" guid="OURlWAjS10SUcdK4oeUXcwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">n4pg4fd/GUuaJaSzXBirOAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailMultiplicityLabel" type="EdgeLabelView" guid="+YTxAPro+k+Ev3Qa9Td+KAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">osliKvkWrU6Jd0FLz/mZngAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadPropertyLabel" type="EdgeLabelView" guid="NJe8vUJOvEixN2Md5vRGkgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">n4pg4fd/GUuaJaSzXBirOAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailPropertyLabel" type="EdgeLabelView" guid="BuekzgD4P0aqdOzNBAVkYAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">osliKvkWrU6Jd0FLz/mZngAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadQualifierCompartment" type="UMLQualifierCompartmentView" guid="5Y0Wg3PhS06h+5PmVU/QJAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-984</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-1076</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">n4pg4fd/GUuaJaSzXBirOAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailQualifierCompartment" type="UMLQualifierCompartmentView" guid="zTwLHGMcZUaH/kCRcMqJlQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-984</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-1076</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">osliKvkWrU6Jd0FLz/mZngAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedViews[9]" type="UMLAssociationView" guid="G47JdG1ivEWpCS5+NGRUWQAA"> -<XPD:ATTR name="LineColor" type="string">clMaroon</XPD:ATTR> -<XPD:ATTR name="FillColor" type="string">$00B9FFFF</XPD:ATTR> -<XPD:ATTR name="Points" type="Points">528,373;415,431</XPD:ATTR> -<XPD:REF name="Model">eNd3z1weKEWCnlfqPTDLIgAA</XPD:REF> -<XPD:REF name="Head">I+6GQQgDxUay2yh9EH63ugAA</XPD:REF> -<XPD:REF name="Tail">HUFrn02Id0u4EHrKc4mxVgAA</XPD:REF> -<XPD:OBJ name="NameLabel" type="EdgeLabelView" guid="u6LdVCjKbEaIGLn56/w1QQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">eNd3z1weKEWCnlfqPTDLIgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="StereotypeLabel" type="EdgeLabelView" guid="ona2Ko0szEK+2FIv3L6R1wAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:REF name="Model">eNd3z1weKEWCnlfqPTDLIgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="PropertyLabel" type="EdgeLabelView" guid="fST4kYS4rkicfRLiq6BrYQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-1.5707963267949</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">15</XPD:ATTR> -<XPD:REF name="Model">eNd3z1weKEWCnlfqPTDLIgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadRoleNameLabel" type="EdgeLabelView" guid="AnTjwQSX4UO3xjKGm9U1PAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">SVDzdW2e/kG2il66SgxQ1wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailRoleNameLabel" type="EdgeLabelView" guid="GtS+L0c22kmmx+S6raeEAAAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">30</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">elujImCAXkaoOjRAKkuxUAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadMultiplicityLabel" type="EdgeLabelView" guid="Rx+SX1Ukc0WijFhZRJ2tbgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">SVDzdW2e/kG2il66SgxQ1wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailMultiplicityLabel" type="EdgeLabelView" guid="r48AH3NG+kGYdG2dItOtqwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.523598775598299</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">25</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">elujImCAXkaoOjRAKkuxUAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadPropertyLabel" type="EdgeLabelView" guid="OMlcQeewVkyEmkWpq768pgAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">-0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epHead</XPD:ATTR> -<XPD:REF name="Model">SVDzdW2e/kG2il66SgxQ1wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailPropertyLabel" type="EdgeLabelView" guid="C6OdcHaGUEG0WccqDQbNoQAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Alpha" type="real">0.785398163397448</XPD:ATTR> -<XPD:ATTR name="Distance" type="real">40</XPD:ATTR> -<XPD:ATTR name="EdgePosition" type="EdgePositionKind">epTail</XPD:ATTR> -<XPD:REF name="Model">elujImCAXkaoOjRAKkuxUAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="HeadQualifierCompartment" type="UMLQualifierCompartmentView" guid="61/4k03iIkWp5ZY6aFMm4AAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-1000</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-912</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">SVDzdW2e/kG2il66SgxQ1wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="TailQualifierCompartment" type="UMLQualifierCompartmentView" guid="aRw7UJOi9kaUwJX2uJ1tDwAA"> -<XPD:ATTR name="Visible" type="boolean">False</XPD:ATTR> -<XPD:ATTR name="Left" type="integer">-1000</XPD:ATTR> -<XPD:ATTR name="Top" type="integer">-912</XPD:ATTR> -<XPD:ATTR name="Width" type="integer">50</XPD:ATTR> -<XPD:ATTR name="Height" type="integer">8</XPD:ATTR> -<XPD:REF name="Model">elujImCAXkaoOjRAKkuxUAAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -</XPD:OBJ> -</XPD:OBJ> -<XPD:ATTR name="#OwnedElements" type="integer">31</XPD:ATTR> -<XPD:OBJ name="OwnedElements[0]" type="UMLAssociation" guid="av0s6EXaYUKyooee2y6sdgAA"> -<XPD:REF name="Namespace">dZ4UyetzSE+rDT9vQthF9wAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">12BWSnVhhUOUuox7tdL41gAA</XPD:REF> -<XPD:REF name="Views[1]">4F+C2zwwrEOjx/qCnLXWPAAA</XPD:REF> -<XPD:REF name="Views[2]">lXf6uq0JtkK3YNXTxTyP7wAA</XPD:REF> -<XPD:REF name="Views[3]">8jym3kotyE2sBWD5KjhUiQAA</XPD:REF> -<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR> -<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="IEnUwW74QkSkdRZGqdKvaAAA"> -<XPD:REF name="Association">av0s6EXaYUKyooee2y6sdgAA</XPD:REF> -<XPD:REF name="Participant">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">awNg1wfSGU22on1C+XpBlgAA</XPD:REF> -<XPD:REF name="Views[1]">cGTSA3bQb0S81NQzsTj+QQAA</XPD:REF> -<XPD:REF name="Views[2]">LWsKT6dOQUKXma9Eoh+sUwAA</XPD:REF> -<XPD:REF name="Views[3]">l9TSA+eftkCY2p6qZDMGKAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="GZcPUasbnkG3pyGKV6NFnAAA"> -<XPD:REF name="Association">av0s6EXaYUKyooee2y6sdgAA</XPD:REF> -<XPD:REF name="Participant">JCgv4vk16U6BbVcoQFmlVwAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">ioK1huVib0u6ILv3kHAeeQAA</XPD:REF> -<XPD:REF name="Views[1]">cwfxPIXUd06ShM9BEivzxQAA</XPD:REF> -<XPD:REF name="Views[2]">DBsnRjqoj0W9eAN/Flu+jwAA</XPD:REF> -<XPD:REF name="Views[3]">DUu549wQM0qPn9dAjjrLZgAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[1]" type="UMLAssociation" guid="cNCsWS2hgkeaGhYJv9oONgAA"> -<XPD:REF name="Namespace">dZ4UyetzSE+rDT9vQthF9wAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">Qa1PhzSwWkyS1rm6eapfLwAA</XPD:REF> -<XPD:REF name="Views[1]">QAoFSXFK+0S+5kDYAQ0LsgAA</XPD:REF> -<XPD:REF name="Views[2]">rsOqshNVOkut6r+wW0Sp/wAA</XPD:REF> -<XPD:REF name="Views[3]">0wZW9IH3y0OEPMfN5FyHQAAA</XPD:REF> -<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR> -<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="PFZlUbzZu02nTTLsYZBoDgAA"> -<XPD:REF name="Association">cNCsWS2hgkeaGhYJv9oONgAA</XPD:REF> -<XPD:REF name="Participant">SX+aNGg0j0WtdR26+LZ7OgAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">TM3RNruxzEezNhF8XO/FmwAA</XPD:REF> -<XPD:REF name="Views[1]">NpASusGGKU+/KwcKkTAMogAA</XPD:REF> -<XPD:REF name="Views[2]">3dtXpNLbXka7wekzvAWsXQAA</XPD:REF> -<XPD:REF name="Views[3]">Mvk2196ldk+5GLgct+OKuwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="2JZlFpDZPkGgaoWrrPAGXAAA"> -<XPD:REF name="Association">cNCsWS2hgkeaGhYJv9oONgAA</XPD:REF> -<XPD:REF name="Participant">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">ySD9HMBWmEWoJg+/6boBZgAA</XPD:REF> -<XPD:REF name="Views[1]">LXz8D2AdoE6ojzgkYCO0qAAA</XPD:REF> -<XPD:REF name="Views[2]">ia8j06EduUmxgB5smbA9hQAA</XPD:REF> -<XPD:REF name="Views[3]">/JYlnmhzTk66TicK0RjYaQAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[2]" type="UMLAssociation" guid="CVx7QaOEd0iJQ6USdSCilwAA"> -<XPD:REF name="Namespace">dZ4UyetzSE+rDT9vQthF9wAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">UmHHYiIr3k+gNNomjLpgwwAA</XPD:REF> -<XPD:REF name="Views[1]">ZBlvBeIE2UGGPTML4sQ7SgAA</XPD:REF> -<XPD:REF name="Views[2]">UDn5R84weEayOYl6QVFj1wAA</XPD:REF> -<XPD:REF name="Views[3]">OApAa7HXz0aTiMZGZ/g2tAAA</XPD:REF> -<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR> -<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="q5Ko0bXKcE6uj05NJPSddwAA"> -<XPD:REF name="Association">CVx7QaOEd0iJQ6USdSCilwAA</XPD:REF> -<XPD:REF name="Participant">SX+aNGg0j0WtdR26+LZ7OgAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">24RGLobteEil7cUdAcyUcAAA</XPD:REF> -<XPD:REF name="Views[1]">6Uw1pdad6kC8N8S0Rf1HxwAA</XPD:REF> -<XPD:REF name="Views[2]">CuUsJAcsAUWwVZJzegOegAAA</XPD:REF> -<XPD:REF name="Views[3]">AST9GWgDTEWR07o7yUcgIQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="XvxorIQvl0aKnzyznjd1uwAA"> -<XPD:REF name="Association">CVx7QaOEd0iJQ6USdSCilwAA</XPD:REF> -<XPD:REF name="Participant">JCgv4vk16U6BbVcoQFmlVwAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">W1YT5dqwMUSUI29zCC2LZQAA</XPD:REF> -<XPD:REF name="Views[1]">X96IIfOZSE2FAliwKkCNYgAA</XPD:REF> -<XPD:REF name="Views[2]">tr7uiHRKz0e//ValH5GU+AAA</XPD:REF> -<XPD:REF name="Views[3]">zdcHIs6dNEmxQNtCK5uHIQAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[3]" type="UMLAssociation" guid="hBOTE33GDUO/X8s5oHlAmQAA"> -<XPD:REF name="Namespace">dZ4UyetzSE+rDT9vQthF9wAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">oYsj3yhzJkCKmOBcWIHNDwAA</XPD:REF> -<XPD:REF name="Views[1]">GT6R2h3HkU6LThPKaghC1QAA</XPD:REF> -<XPD:REF name="Views[2]">eWMr3v5Qb0y/nXu2s/EP5wAA</XPD:REF> -<XPD:REF name="Views[3]">GR9gxzUjNkKmujWHFobLtAAA</XPD:REF> -<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR> -<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="qOlPMeLYpUC4lTEl3Hsc8QAA"> -<XPD:ATTR name="IsNavigable" type="boolean">False</XPD:ATTR> -<XPD:REF name="Association">hBOTE33GDUO/X8s5oHlAmQAA</XPD:REF> -<XPD:REF name="Participant">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">UuRRAQf+y0OdXTOvWu7nUAAA</XPD:REF> -<XPD:REF name="Views[1]">vI5c+acLSk6IfCcdqlaBggAA</XPD:REF> -<XPD:REF name="Views[2]">w3rpxhxEsEu0y7myhFrrkQAA</XPD:REF> -<XPD:REF name="Views[3]">8Ip2rQJRaEaPAOW0cJSd/wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="Yo1IoB0X3ka1C+a/6xk1/gAA"> -<XPD:REF name="Association">hBOTE33GDUO/X8s5oHlAmQAA</XPD:REF> -<XPD:REF name="Participant">SX+aNGg0j0WtdR26+LZ7OgAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">+SSR3TM1z0m5UkTLiuMrGwAA</XPD:REF> -<XPD:REF name="Views[1]">Uvo2ryiBg0Oa5GJF4TRyhQAA</XPD:REF> -<XPD:REF name="Views[2]">QBI1NHwjWU2dkj+SLUFZ+AAA</XPD:REF> -<XPD:REF name="Views[3]">IYVJT/RjPUqjv8rl6ZIQiwAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[4]" type="UMLAssociation" guid="/X1BIuClXkywNV1vNa/LWwAA"> -<XPD:REF name="Namespace">dZ4UyetzSE+rDT9vQthF9wAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">Vcgjd9eKakOjuUAjwzzhJgAA</XPD:REF> -<XPD:REF name="Views[1]">+iIIR1mEnUynEPEjuGAd7AAA</XPD:REF> -<XPD:REF name="Views[2]">bZn71kXJQUOP3yAyCa5RvgAA</XPD:REF> -<XPD:REF name="Views[3]">O36co7nFz0elpJnbKtsYMwAA</XPD:REF> -<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR> -<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="BVpPYPY4V0KsTBJTRoLjyAAA"> -<XPD:ATTR name="IsNavigable" type="boolean">False</XPD:ATTR> -<XPD:REF name="Association">/X1BIuClXkywNV1vNa/LWwAA</XPD:REF> -<XPD:REF name="Participant">JCgv4vk16U6BbVcoQFmlVwAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">Hv4K+XlgIkqDgqEz3aQWNQAA</XPD:REF> -<XPD:REF name="Views[1]">4o7M8jakfkixRwVgESrUnwAA</XPD:REF> -<XPD:REF name="Views[2]">rCPaxzL0LEuk9Jjbqi+D2gAA</XPD:REF> -<XPD:REF name="Views[3]">HKXhPda/vUuVwv4sR9ZR9QAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="RoKhf4Bw3kmRk2O2D4GlxQAA"> -<XPD:REF name="Association">/X1BIuClXkywNV1vNa/LWwAA</XPD:REF> -<XPD:REF name="Participant">SX+aNGg0j0WtdR26+LZ7OgAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">yjjLYCXJjUqX0IHnpKwHwQAA</XPD:REF> -<XPD:REF name="Views[1]">k1XiyO9mlke/IAq5UuYI9gAA</XPD:REF> -<XPD:REF name="Views[2]">Xtc7Jqe6N0+JAzLg1RxYLwAA</XPD:REF> -<XPD:REF name="Views[3]">W0UPJtBpLU6Y5SjscWTiVAAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[5]" type="UMLAssociation" guid="PudswW77eEShTMEdcK5BCAAA"> -<XPD:REF name="Namespace">dZ4UyetzSE+rDT9vQthF9wAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">VjZwKWmCoUO5wNRGJGVShAAA</XPD:REF> -<XPD:REF name="Views[1]">6e9pHkpPaUyLDCYYnUYAOAAA</XPD:REF> -<XPD:REF name="Views[2]">QA7tnAAMA0e3tCDRlkB/JwAA</XPD:REF> -<XPD:REF name="Views[3]">gdUdn5u5x0KDsDKM41p2CQAA</XPD:REF> -<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR> -<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="Io3cINfhiE23pmiSxpS6swAA"> -<XPD:ATTR name="IsNavigable" type="boolean">False</XPD:ATTR> -<XPD:REF name="Association">PudswW77eEShTMEdcK5BCAAA</XPD:REF> -<XPD:REF name="Participant">gx40XIC9FkOG3iX3Oyxw8wAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">d/3xrtQ+nU69mQYepo7NvQAA</XPD:REF> -<XPD:REF name="Views[1]">HcOo4bUmbUqLEjVUm2L2AQAA</XPD:REF> -<XPD:REF name="Views[2]">tQj+naSiJ0mB4W89ahH5ygAA</XPD:REF> -<XPD:REF name="Views[3]">LNFybtIVIkOXnQ/9QC5jEwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="vyoQZGl3UECBMhf7+IDQUwAA"> -<XPD:REF name="Association">PudswW77eEShTMEdcK5BCAAA</XPD:REF> -<XPD:REF name="Participant">SX+aNGg0j0WtdR26+LZ7OgAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">rqoTwNlD20Gou9xOLQ2RNgAA</XPD:REF> -<XPD:REF name="Views[1]">ox9r7npaB0in7/ygfG1ZMwAA</XPD:REF> -<XPD:REF name="Views[2]">exLwGLRY306J0CEcqxlOrgAA</XPD:REF> -<XPD:REF name="Views[3]">qxZgk8R36k2S3vGRfQegfwAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[6]" type="UMLAssociation" guid="q5PurOmOUUOX8hzj5CINYQAA"> -<XPD:REF name="Namespace">dZ4UyetzSE+rDT9vQthF9wAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">QHk4xsvJRUGhKn0p+sReaAAA</XPD:REF> -<XPD:REF name="Views[1]">ezGCtUA0dUOn10D5pUOtoAAA</XPD:REF> -<XPD:REF name="Views[2]">QcGPzg741ki4yTGfoKvK9AAA</XPD:REF> -<XPD:REF name="Views[3]">ioZQYN39bEu/gy37UfkhmQAA</XPD:REF> -<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR> -<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="PhlKgbqPt0OClpwk2m9vswAA"> -<XPD:ATTR name="IsNavigable" type="boolean">False</XPD:ATTR> -<XPD:REF name="Association">q5PurOmOUUOX8hzj5CINYQAA</XPD:REF> -<XPD:REF name="Participant">26RSzf3jmEWkDlRiFhl4OAAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">VrmcPyj2oUyEm5i/AG7/KgAA</XPD:REF> -<XPD:REF name="Views[1]">odMtivppNUOccWtC85AVCQAA</XPD:REF> -<XPD:REF name="Views[2]">2IiGGrbDkUiobp5CJnME1QAA</XPD:REF> -<XPD:REF name="Views[3]">+70t9Os6zUWhIAhufEQsBAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="iy8GVdK11EmKnmJ6LivVVQAA"> -<XPD:REF name="Association">q5PurOmOUUOX8hzj5CINYQAA</XPD:REF> -<XPD:REF name="Participant">SX+aNGg0j0WtdR26+LZ7OgAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">mZFBakBXmE6Gj5qumz51gwAA</XPD:REF> -<XPD:REF name="Views[1]">KHpH30oHrEew1AGquvXiEQAA</XPD:REF> -<XPD:REF name="Views[2]">W7KAnZMmjEKAxuaUXA4D6AAA</XPD:REF> -<XPD:REF name="Views[3]">jsiact/gpUS21gy1IeSlZQAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[7]" type="UMLAssociation" guid="8zCqordbBESBaPJH8SIoOQAA"> -<XPD:REF name="Namespace">dZ4UyetzSE+rDT9vQthF9wAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">l3oAx6sfA0ScCOouvAFKYwAA</XPD:REF> -<XPD:REF name="Views[1]">pM/XXFo9Ikq+kK5++HoZ0QAA</XPD:REF> -<XPD:REF name="Views[2]">igklIYxpfka7OH5oAnRbPwAA</XPD:REF> -<XPD:REF name="Views[3]">RtZQfGM0uUqohb/WlARRpwAA</XPD:REF> -<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR> -<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="72fG4kbiM0eyczFPq2MtVAAA"> -<XPD:ATTR name="Multiplicity" type="string">1..*</XPD:ATTR> -<XPD:REF name="Association">8zCqordbBESBaPJH8SIoOQAA</XPD:REF> -<XPD:REF name="Participant">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">pr9mkVSNO0KasNMsFvgDuQAA</XPD:REF> -<XPD:REF name="Views[1]">4fUHmnlcd0WplogWZWqPRQAA</XPD:REF> -<XPD:REF name="Views[2]">kKRq4K1cvEup70Oz2UFd8QAA</XPD:REF> -<XPD:REF name="Views[3]">DS2eOvXKXku93Y4x950QPgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="zefo1Bu+v0e4gn9nUL+bSQAA"> -<XPD:ATTR name="Multiplicity" type="string">1</XPD:ATTR> -<XPD:REF name="Association">8zCqordbBESBaPJH8SIoOQAA</XPD:REF> -<XPD:REF name="Participant">26RSzf3jmEWkDlRiFhl4OAAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">lDsB+MeNlUy+OEBCbfs0OAAA</XPD:REF> -<XPD:REF name="Views[1]">EeUDIEWsnkO5HzTU6L6kZQAA</XPD:REF> -<XPD:REF name="Views[2]">TuyQdZk0H0+ai9Mg3ZtK3AAA</XPD:REF> -<XPD:REF name="Views[3]">NKw56kYvx0W0KlwhXPYWMwAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[8]" type="UMLAssociation" guid="3RrM1HB71kyHO0jB4JI4zgAA"> -<XPD:REF name="Namespace">dZ4UyetzSE+rDT9vQthF9wAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">5vCGUSmlwUWKkjul/i5CoAAA</XPD:REF> -<XPD:REF name="Views[1]">ihIaZz5p+0Cte+Zqg1wUKgAA</XPD:REF> -<XPD:REF name="Views[2]">XyhhchGH70uYaM5UdGboKQAA</XPD:REF> -<XPD:REF name="Views[3]">+N+OW0LtoEyevYQ++bVO1gAA</XPD:REF> -<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR> -<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="ULQw0JNjPE2758pFWlo+MQAA"> -<XPD:ATTR name="IsNavigable" type="boolean">False</XPD:ATTR> -<XPD:REF name="Association">3RrM1HB71kyHO0jB4JI4zgAA</XPD:REF> -<XPD:REF name="Participant">iUy0YZgyREC+o54lTQptaAAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">blnGfW4UCk6tS0veRc88xAAA</XPD:REF> -<XPD:REF name="Views[1]">jGRa3FaTrUWVhYVG834fjwAA</XPD:REF> -<XPD:REF name="Views[2]">olvLmzjsfka5YmNEOntQDAAA</XPD:REF> -<XPD:REF name="Views[3]">H/do1s5Rh02ETrOyjtaoaAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="DkcX/fIec029p5Da5gYToAAA"> -<XPD:REF name="Association">3RrM1HB71kyHO0jB4JI4zgAA</XPD:REF> -<XPD:REF name="Participant">SX+aNGg0j0WtdR26+LZ7OgAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">vLsrualWRkO0QI8PcBWGAAAA</XPD:REF> -<XPD:REF name="Views[1]">vWndJmxhrkKfipX/zAAt4AAA</XPD:REF> -<XPD:REF name="Views[2]">lKgJhvwP/Eygz7oPLvwsxwAA</XPD:REF> -<XPD:REF name="Views[3]">AdMO10glEEWGGHqpzKNvewAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[9]" type="UMLAssociation" guid="GjMZbUwaMkGOkbxOXau26AAA"> -<XPD:REF name="Namespace">dZ4UyetzSE+rDT9vQthF9wAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">EWnB2mjt6ke3pnsnQFRgJwAA</XPD:REF> -<XPD:REF name="Views[1]">dM3yo1oYRUWNB1JawgFnywAA</XPD:REF> -<XPD:REF name="Views[2]">/IP55LSMZUCRoa77gkMh9gAA</XPD:REF> -<XPD:REF name="Views[3]">Og4FQYOz9kOr8LF43j+ySwAA</XPD:REF> -<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR> -<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="aYL27tYOR02se3g//aEBeAAA"> -<XPD:ATTR name="IsNavigable" type="boolean">False</XPD:ATTR> -<XPD:REF name="Association">GjMZbUwaMkGOkbxOXau26AAA</XPD:REF> -<XPD:REF name="Participant">/LI4+1GTjEagI/wLEFpVSQAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">Ggu7vb3GMU2vn9mS8bGZpwAA</XPD:REF> -<XPD:REF name="Views[1]">wMyvwGpZQUmJ2a2lXlkc/AAA</XPD:REF> -<XPD:REF name="Views[2]">rn/sn4ErGkyYnwDUlnpmTAAA</XPD:REF> -<XPD:REF name="Views[3]">wElMDINXY0esqBl7AwoyfQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="gc0GlJ6ewUOpiyya+XPqjQAA"> -<XPD:REF name="Association">GjMZbUwaMkGOkbxOXau26AAA</XPD:REF> -<XPD:REF name="Participant">SX+aNGg0j0WtdR26+LZ7OgAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">zHiCXVqqgE6r2lDdnVDI1gAA</XPD:REF> -<XPD:REF name="Views[1]">19Ii9g15zUmLLURud9e9XAAA</XPD:REF> -<XPD:REF name="Views[2]">KLCf1m7tBkGvkM3iOxLhJgAA</XPD:REF> -<XPD:REF name="Views[3]">1+qZEhcpyk6RHirwjBjalgAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[10]" type="UMLAssociation" guid="m6lnHtsBL02A4Oup+IzVEAAA"> -<XPD:REF name="Namespace">dZ4UyetzSE+rDT9vQthF9wAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">DbUG5zy8r0yq6L/I1naVdQAA</XPD:REF> -<XPD:REF name="Views[1]">1qY9qbCT1ka5tmfuL9yaJgAA</XPD:REF> -<XPD:REF name="Views[2]">bnG59/mNjk+fcthvMQG2VAAA</XPD:REF> -<XPD:REF name="Views[3]">wovrqiKgc0qw9BUyPaGuBQAA</XPD:REF> -<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR> -<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="kdbNMfgoG02cJO0UFJeeLwAA"> -<XPD:ATTR name="IsNavigable" type="boolean">False</XPD:ATTR> -<XPD:REF name="Association">m6lnHtsBL02A4Oup+IzVEAAA</XPD:REF> -<XPD:REF name="Participant">xAj1pchzIEeSaRcR2+aFTwAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">JbJSjKTBikyT++rY1XVCtwAA</XPD:REF> -<XPD:REF name="Views[1]">wUtw7zNylEK+wDvPOsUtGwAA</XPD:REF> -<XPD:REF name="Views[2]">/cBBOvztgE6Kd7yvemxXPwAA</XPD:REF> -<XPD:REF name="Views[3]">uj1vGzCGtkGielBw0Bxi4QAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="l6Lg/NJG5UWu+7ALxaVP3gAA"> -<XPD:REF name="Association">m6lnHtsBL02A4Oup+IzVEAAA</XPD:REF> -<XPD:REF name="Participant">3uD8ZK44vEi6X3Yo5n4G3wAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">hytVQ6VnmEaHnFV5o9fQ0AAA</XPD:REF> -<XPD:REF name="Views[1]">eYodfuyOKEK7WC9dBBlaigAA</XPD:REF> -<XPD:REF name="Views[2]">BEEaANsP0UCbPpRjMWyndwAA</XPD:REF> -<XPD:REF name="Views[3]">JKx2O2r/H0y9NJ3+4rup1QAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[11]" type="UMLAssociation" guid="gmKjyBaRB0SfVd2p3FDOTwAA"> -<XPD:REF name="Namespace">dZ4UyetzSE+rDT9vQthF9wAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">l2Yo1ObIG0WVx7IS2a/B3QAA</XPD:REF> -<XPD:REF name="Views[1]">Bt1whnZV8ke93vkLSyNq6wAA</XPD:REF> -<XPD:REF name="Views[2]">fqRKs5ARzUGsdlKFgCFhWQAA</XPD:REF> -<XPD:REF name="Views[3]">5M/QRFEaxUa0SktETbkRSwAA</XPD:REF> -<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR> -<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="X5VvOi2uGkGYzMMS5nWm2AAA"> -<XPD:ATTR name="IsNavigable" type="boolean">False</XPD:ATTR> -<XPD:REF name="Association">gmKjyBaRB0SfVd2p3FDOTwAA</XPD:REF> -<XPD:REF name="Participant">xAj1pchzIEeSaRcR2+aFTwAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">51OtH+Gyy0+XZJVSgV/KuQAA</XPD:REF> -<XPD:REF name="Views[1]">V2pqj6nPg0SqB+TNOQI5PwAA</XPD:REF> -<XPD:REF name="Views[2]">1rWGuTeEqEm+RdcskXCo9gAA</XPD:REF> -<XPD:REF name="Views[3]">90vol1uY7U27TcNYwOdZBQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="QwwfXlN26EahMaF2XDAvLAAA"> -<XPD:REF name="Association">gmKjyBaRB0SfVd2p3FDOTwAA</XPD:REF> -<XPD:REF name="Participant">JCgv4vk16U6BbVcoQFmlVwAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">oOLw6a4XNk6oN6yvhlsf7QAA</XPD:REF> -<XPD:REF name="Views[1]">kMLAHkAn9EKw71vpw3PgHQAA</XPD:REF> -<XPD:REF name="Views[2]">FYDexLT3eUK3X5xdW3Qq/gAA</XPD:REF> -<XPD:REF name="Views[3]">VJLq9UMlJE2EqLEbDm23HQAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[12]" type="UMLAssociation" guid="iBQV0DXX90uUjMTGr6FFjQAA"> -<XPD:REF name="Namespace">dZ4UyetzSE+rDT9vQthF9wAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">dSXCMAUeXkaVaOqAa4KDAQAA</XPD:REF> -<XPD:REF name="Views[1]">AXtWRmQ/j0G8KsAfZc/QeQAA</XPD:REF> -<XPD:REF name="Views[2]">pxhqUzjCEkqTLYfXynALEwAA</XPD:REF> -<XPD:REF name="Views[3]">0nagXXOSFk+hHuMBpdFBLwAA</XPD:REF> -<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR> -<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="xf4XKZpxx0iF7C4H+oOABwAA"> -<XPD:ATTR name="IsNavigable" type="boolean">False</XPD:ATTR> -<XPD:REF name="Association">iBQV0DXX90uUjMTGr6FFjQAA</XPD:REF> -<XPD:REF name="Participant">xAj1pchzIEeSaRcR2+aFTwAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">+0LMOuMUukS68snSkLSsTwAA</XPD:REF> -<XPD:REF name="Views[1]">ow67AFPFhk2P92GHjX8x6gAA</XPD:REF> -<XPD:REF name="Views[2]">cLLrD3Z3uUyN5TkuZIiYvQAA</XPD:REF> -<XPD:REF name="Views[3]">RpANS2KKQEiX7rWNn+sFQQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="IMPiiZPlxkaJkH8N2NGOggAA"> -<XPD:REF name="Association">iBQV0DXX90uUjMTGr6FFjQAA</XPD:REF> -<XPD:REF name="Participant">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">z3Q2FaOZNUa329RgqNTDpgAA</XPD:REF> -<XPD:REF name="Views[1]">bIZ0y/4MSEGDbNvxAP+XjAAA</XPD:REF> -<XPD:REF name="Views[2]">C8AG2Zjc9UCIEaei4/obTgAA</XPD:REF> -<XPD:REF name="Views[3]">q1TRTMmCmEuxq3mV3WwE9wAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[13]" type="UMLAssociation" guid="9P0hz9Bq2U6gDVowATxiWAAA"> -<XPD:REF name="Namespace">dZ4UyetzSE+rDT9vQthF9wAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">ALV9IpRzikWc38x/4t62CgAA</XPD:REF> -<XPD:REF name="Views[1]">8t8bSCYvGkO28nJZE2y4nwAA</XPD:REF> -<XPD:REF name="Views[2]">3EywKQmkOE2KjbjVh2NmDgAA</XPD:REF> -<XPD:REF name="Views[3]">BbqpqccVf0Wg7tVha614JAAA</XPD:REF> -<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR> -<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="yVknRLQq7U2nj3bRfizyAgAA"> -<XPD:ATTR name="IsNavigable" type="boolean">False</XPD:ATTR> -<XPD:REF name="Association">9P0hz9Bq2U6gDVowATxiWAAA</XPD:REF> -<XPD:REF name="Participant">xAj1pchzIEeSaRcR2+aFTwAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">TSgUJz4gCUSqn+dKKulHoAAA</XPD:REF> -<XPD:REF name="Views[1]">bB0rInPRJES1Fi1mh9FCEAAA</XPD:REF> -<XPD:REF name="Views[2]">Te1GttqM50mrkMzGYceWLQAA</XPD:REF> -<XPD:REF name="Views[3]">XUHdjv1boEaqvLcg553dbwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="BSJLLgAd4kCusm/8BFZQMQAA"> -<XPD:REF name="Association">9P0hz9Bq2U6gDVowATxiWAAA</XPD:REF> -<XPD:REF name="Participant">26RSzf3jmEWkDlRiFhl4OAAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">YVFZpgGB/0O96quX2udZDwAA</XPD:REF> -<XPD:REF name="Views[1]">pIexnuTBiUiEhhq44l4rCwAA</XPD:REF> -<XPD:REF name="Views[2]">yT+paMjNpkaG1OKJL+sYCAAA</XPD:REF> -<XPD:REF name="Views[3]">znNxDO7m6E6nvS/FYUZ9OAAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[14]" type="UMLAssociation" guid="sBsUoQYdEkCsxRTpPtknYAAA"> -<XPD:REF name="Namespace">dZ4UyetzSE+rDT9vQthF9wAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">hBsdq7HI/EWiSzAGC7VcegAA</XPD:REF> -<XPD:REF name="Views[1]">AW09hEar3Einy0/8DRC44wAA</XPD:REF> -<XPD:REF name="Views[2]">GL4o+Jwo9kafQcdPg1ZCtgAA</XPD:REF> -<XPD:REF name="Views[3]">kNZhsHL9skazmf+MM+oIKwAA</XPD:REF> -<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR> -<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="6CsrL0wlVEKI657OoEev1gAA"> -<XPD:ATTR name="IsNavigable" type="boolean">False</XPD:ATTR> -<XPD:REF name="Association">sBsUoQYdEkCsxRTpPtknYAAA</XPD:REF> -<XPD:REF name="Participant">xAj1pchzIEeSaRcR2+aFTwAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">VipQilP5w0axs39cx9OCsgAA</XPD:REF> -<XPD:REF name="Views[1]">m6SZNVehm06iGtccsj43wAAA</XPD:REF> -<XPD:REF name="Views[2]">x2e4QwAQ50Sn6Io3k6B2tAAA</XPD:REF> -<XPD:REF name="Views[3]">4MO5fs8bNkahA1cEAQY9zAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="bObyymjPEkeQZSoHCKpP2QAA"> -<XPD:REF name="Association">sBsUoQYdEkCsxRTpPtknYAAA</XPD:REF> -<XPD:REF name="Participant">iUy0YZgyREC+o54lTQptaAAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">5T2cPS5X+UykejaXNX6mSAAA</XPD:REF> -<XPD:REF name="Views[1]">P16FQXg1DEOld8DfGFfSxQAA</XPD:REF> -<XPD:REF name="Views[2]">FcWiwQTsx02Ku0N5G3bjSgAA</XPD:REF> -<XPD:REF name="Views[3]">d3kqRYSWSUSKKTZ+56sZkwAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[15]" type="UMLAssociation" guid="5JmzC90ylki6klhVRRibGAAA"> -<XPD:REF name="Namespace">dZ4UyetzSE+rDT9vQthF9wAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">Gfgt2UdXqE2QrN+Jzf+QvQAA</XPD:REF> -<XPD:REF name="Views[1]">/p9rmIUUo0mUctVF/yhY5AAA</XPD:REF> -<XPD:REF name="Views[2]">P5QKAYFqikOaJu107L2QDwAA</XPD:REF> -<XPD:REF name="Views[3]">y/WNtKBGo0q8OYbjC0evjgAA</XPD:REF> -<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR> -<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="be+eScBkV0Cn4n2XjSojvgAA"> -<XPD:ATTR name="IsNavigable" type="boolean">False</XPD:ATTR> -<XPD:REF name="Association">5JmzC90ylki6klhVRRibGAAA</XPD:REF> -<XPD:REF name="Participant">xAj1pchzIEeSaRcR2+aFTwAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">lELIUkkOg0a4b0G8373BcAAA</XPD:REF> -<XPD:REF name="Views[1]">R1FSACG6EkWd7DK8ihYAQAAA</XPD:REF> -<XPD:REF name="Views[2]">WXg43X5+gEiu4atePea88gAA</XPD:REF> -<XPD:REF name="Views[3]">z+QrSf59lkSSqK+c5yKgcwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="zCPl48BYx0CFRkp8Jj5mogAA"> -<XPD:REF name="Association">5JmzC90ylki6klhVRRibGAAA</XPD:REF> -<XPD:REF name="Participant">/LI4+1GTjEagI/wLEFpVSQAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">cGwksZvEz0aSTFoED5zuJQAA</XPD:REF> -<XPD:REF name="Views[1]">pF9hWJbSZkCUq/C5qcS+7gAA</XPD:REF> -<XPD:REF name="Views[2]">/NvtextfvUyZKtMbQ1urHAAA</XPD:REF> -<XPD:REF name="Views[3]">4pUvTStSU0yU0BtcF8HyfQAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[16]" type="UMLPackage" guid="7dRihysn8kefkb+6mJlwzgAA"> -<XPD:ATTR name="Name" type="string">tvjava</XPD:ATTR> -<XPD:ATTR name="Visibility" type="UMLVisibilityKind">vkPackage</XPD:ATTR> -<XPD:REF name="Namespace">dZ4UyetzSE+rDT9vQthF9wAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">1</XPD:ATTR> -<XPD:REF name="Views[0]">H1zFqxbUzEqKqOJUsjP9UgAA</XPD:REF> -<XPD:ATTR name="#Associations" type="integer">3</XPD:ATTR> -<XPD:REF name="Associations[0]">jLzV7XdHP0Ogmb7/6IPCtgAA</XPD:REF> -<XPD:REF name="Associations[1]">DGWju3i/80ObxLedRPIIEwAA</XPD:REF> -<XPD:REF name="Associations[2]">frvBY5I3t0yZgEqYHUhfEQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[17]" type="UMLPackage" guid="CN6L5smMd0u/4SQDgGuxlAAA"> -<XPD:ATTR name="Name" type="string">am_mw</XPD:ATTR> -<XPD:REF name="Namespace">dZ4UyetzSE+rDT9vQthF9wAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">1</XPD:ATTR> -<XPD:REF name="Views[0]">HUFrn02Id0u4EHrKc4mxVgAA</XPD:REF> -<XPD:ATTR name="#Associations" type="integer">3</XPD:ATTR> -<XPD:REF name="Associations[0]">MOhicSFw0kKsC3+R+Reo0AAA</XPD:REF> -<XPD:REF name="Associations[1]">elujImCAXkaoOjRAKkuxUAAA</XPD:REF> -<XPD:REF name="Associations[2]">0RZNIMepB0W9fkd6pMCEZwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[18]" type="UMLPackage" guid="y05IqzZQzU2XtiSPAXk7QgAA"> -<XPD:ATTR name="Name" type="string">am_adp</XPD:ATTR> -<XPD:REF name="Namespace">dZ4UyetzSE+rDT9vQthF9wAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">1</XPD:ATTR> -<XPD:REF name="Views[0]">I+6GQQgDxUay2yh9EH63ugAA</XPD:REF> -<XPD:ATTR name="#Associations" type="integer">2</XPD:ATTR> -<XPD:REF name="Associations[0]">n4pg4fd/GUuaJaSzXBirOAAA</XPD:REF> -<XPD:REF name="Associations[1]">SVDzdW2e/kG2il66SgxQ1wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[19]" type="UMLAssociation" guid="Yy1zZGFqjUCrfxwigF/GpgAA"> -<XPD:REF name="Namespace">dZ4UyetzSE+rDT9vQthF9wAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">jyEOqiMx5kuOhl2RypG5igAA</XPD:REF> -<XPD:REF name="Views[1]">CPHJazCBZ06NtAVR2VK7OQAA</XPD:REF> -<XPD:REF name="Views[2]">APOmD3psFUyWhRAnwzCajwAA</XPD:REF> -<XPD:REF name="Views[3]">QMsE3esBJk6sDRS6x5DJkQAA</XPD:REF> -<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR> -<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="KeKc5deyJkKjIbzodSAF8QAA"> -<XPD:REF name="Association">Yy1zZGFqjUCrfxwigF/GpgAA</XPD:REF> -<XPD:REF name="Participant">T1P4Xv7L+UuEzFqU+iyS5wAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">Pet1Wl/5g0+pU9Kd2fc7SwAA</XPD:REF> -<XPD:REF name="Views[1]">Dx+9oTBsHEO70cjv4b2azAAA</XPD:REF> -<XPD:REF name="Views[2]">GAWp04mbX0+qBItsdvgjYwAA</XPD:REF> -<XPD:REF name="Views[3]">EDyc+T9/p0uT65Az3US0YgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="MOhicSFw0kKsC3+R+Reo0AAA"> -<XPD:REF name="Association">Yy1zZGFqjUCrfxwigF/GpgAA</XPD:REF> -<XPD:REF name="Participant">CN6L5smMd0u/4SQDgGuxlAAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">5/4cIerJAUmV49IBGwpo+AAA</XPD:REF> -<XPD:REF name="Views[1]">xdfe8bjolEChoIUMuakZ8gAA</XPD:REF> -<XPD:REF name="Views[2]">BoU11LZqBk2U9D1Ai1YY2AAA</XPD:REF> -<XPD:REF name="Views[3]">fBqd46+r3kqJEpg8jQ4//wAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[20]" type="UMLAssociation" guid="+rFPRw7qR0aoTGBGytrjDAAA"> -<XPD:REF name="Namespace">dZ4UyetzSE+rDT9vQthF9wAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">YWFKeOxwm0mHujDlyTbolQAA</XPD:REF> -<XPD:REF name="Views[1]">zrsbj2XE/EayNVwoOloIDAAA</XPD:REF> -<XPD:REF name="Views[2]">pIYrJ7JAAUSz3n/qiGAv0gAA</XPD:REF> -<XPD:REF name="Views[3]">qoKs5KXOckiwAYzN24SMoQAA</XPD:REF> -<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR> -<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="osliKvkWrU6Jd0FLz/mZngAA"> -<XPD:REF name="Association">+rFPRw7qR0aoTGBGytrjDAAA</XPD:REF> -<XPD:REF name="Participant">T1P4Xv7L+UuEzFqU+iyS5wAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">88cAHmNV00eS5otEvuUQZAAA</XPD:REF> -<XPD:REF name="Views[1]">+YTxAPro+k+Ev3Qa9Td+KAAA</XPD:REF> -<XPD:REF name="Views[2]">BuekzgD4P0aqdOzNBAVkYAAA</XPD:REF> -<XPD:REF name="Views[3]">zTwLHGMcZUaH/kCRcMqJlQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="n4pg4fd/GUuaJaSzXBirOAAA"> -<XPD:REF name="Association">+rFPRw7qR0aoTGBGytrjDAAA</XPD:REF> -<XPD:REF name="Participant">y05IqzZQzU2XtiSPAXk7QgAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">5Y/PPNFnoUOKREH8OSaNBwAA</XPD:REF> -<XPD:REF name="Views[1]">OURlWAjS10SUcdK4oeUXcwAA</XPD:REF> -<XPD:REF name="Views[2]">NJe8vUJOvEixN2Md5vRGkgAA</XPD:REF> -<XPD:REF name="Views[3]">5Y0Wg3PhS06h+5PmVU/QJAAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[21]" type="UMLAssociation" guid="eNd3z1weKEWCnlfqPTDLIgAA"> -<XPD:REF name="Namespace">dZ4UyetzSE+rDT9vQthF9wAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">G47JdG1ivEWpCS5+NGRUWQAA</XPD:REF> -<XPD:REF name="Views[1]">u6LdVCjKbEaIGLn56/w1QQAA</XPD:REF> -<XPD:REF name="Views[2]">ona2Ko0szEK+2FIv3L6R1wAA</XPD:REF> -<XPD:REF name="Views[3]">fST4kYS4rkicfRLiq6BrYQAA</XPD:REF> -<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR> -<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="elujImCAXkaoOjRAKkuxUAAA"> -<XPD:REF name="Association">eNd3z1weKEWCnlfqPTDLIgAA</XPD:REF> -<XPD:REF name="Participant">CN6L5smMd0u/4SQDgGuxlAAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">GtS+L0c22kmmx+S6raeEAAAA</XPD:REF> -<XPD:REF name="Views[1]">r48AH3NG+kGYdG2dItOtqwAA</XPD:REF> -<XPD:REF name="Views[2]">C6OdcHaGUEG0WccqDQbNoQAA</XPD:REF> -<XPD:REF name="Views[3]">aRw7UJOi9kaUwJX2uJ1tDwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="SVDzdW2e/kG2il66SgxQ1wAA"> -<XPD:REF name="Association">eNd3z1weKEWCnlfqPTDLIgAA</XPD:REF> -<XPD:REF name="Participant">y05IqzZQzU2XtiSPAXk7QgAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">AnTjwQSX4UO3xjKGm9U1PAAA</XPD:REF> -<XPD:REF name="Views[1]">Rx+SX1Ukc0WijFhZRJ2tbgAA</XPD:REF> -<XPD:REF name="Views[2]">OMlcQeewVkyEmkWpq768pgAA</XPD:REF> -<XPD:REF name="Views[3]">61/4k03iIkWp5ZY6aFMm4AAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[22]" type="UMLPackage" guid="bnJ8ggSchket3/t1l7Kx4wAA"> -<XPD:ATTR name="Name" type="string">tv</XPD:ATTR> -<XPD:REF name="Namespace">dZ4UyetzSE+rDT9vQthF9wAA</XPD:REF> -<XPD:ATTR name="#OwnedElements" type="integer">2</XPD:ATTR> -<XPD:OBJ name="OwnedElements[0]" type="UMLPackage" guid="T1P4Xv7L+UuEzFqU+iyS5wAA"> -<XPD:ATTR name="Name" type="string">dtv</XPD:ATTR> -<XPD:REF name="Namespace">bnJ8ggSchket3/t1l7Kx4wAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">1</XPD:ATTR> -<XPD:REF name="Views[0]">fCE1/LJF8k+yzWx4bHj2WgAA</XPD:REF> -<XPD:ATTR name="#OwnedElements" type="integer">14</XPD:ATTR> -<XPD:OBJ name="OwnedElements[0]" type="UMLClass" guid="xAj1pchzIEeSaRcR2+aFTwAA"> -<XPD:ATTR name="Name" type="string">CDtv</XPD:ATTR> -<XPD:REF name="Namespace">T1P4Xv7L+UuEzFqU+iyS5wAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">9Ld1pTeBF0CZmoVdEfEBMQAA</XPD:REF> -<XPD:REF name="Views[1]">mxcpZDUEI0aTfXvfNUP8/QAA</XPD:REF> -<XPD:REF name="Views[2]">0p/pTktl+kimPcmFJ4/wywAA</XPD:REF> -<XPD:REF name="Views[3]">kWtX8dZWikSHi3kCydMHCAAA</XPD:REF> -<XPD:ATTR name="#Operations" type="integer">32</XPD:ATTR> -<XPD:OBJ name="Operations[0]" type="UMLOperation" guid="dmYYHpECE0G9dWsxqVRqVgAA"> -<XPD:ATTR name="Name" type="string">startScan</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">开始频道搜索</XPD:ATTR> -<XPD:REF name="Owner">xAj1pchzIEeSaRcR2+aFTwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[1]" type="UMLOperation" guid="XpPbBfTfWU2kqA1mr/vbJgAA"> -<XPD:ATTR name="Name" type="string">stopScan</XPD:ATTR> -<XPD:REF name="Owner">xAj1pchzIEeSaRcR2+aFTwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[2]" type="UMLOperation" guid="UkrKc9f59kSDyV/AaLMH+gAA"> -<XPD:ATTR name="Name" type="string">startBooking</XPD:ATTR> -<XPD:REF name="Owner">xAj1pchzIEeSaRcR2+aFTwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[3]" type="UMLOperation" guid="JcvijNcflkmNK8+KOhdCggAA"> -<XPD:ATTR name="Name" type="string">pause</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">暂停播放(回放和时移播放时有效)</XPD:ATTR> -<XPD:REF name="Owner">xAj1pchzIEeSaRcR2+aFTwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[4]" type="UMLOperation" guid="i8IvkFjbqUCCSXorAzUdRAAA"> -<XPD:ATTR name="Name" type="string">resume</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">恢复播放(回放和时移播放时有效)</XPD:ATTR> -<XPD:REF name="Owner">xAj1pchzIEeSaRcR2+aFTwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[5]" type="UMLOperation" guid="dQd++JYYo0amx+JlLdJFWQAA"> -<XPD:ATTR name="Name" type="string">playProgram</XPD:ATTR> -<XPD:REF name="Owner">xAj1pchzIEeSaRcR2+aFTwAA</XPD:REF> -<XPD:ATTR name="#Parameters" type="integer">1</XPD:ATTR> -<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="zO9p84LeHUGvoLEQTCAS3QAA"> -<XPD:ATTR name="Name" type="string">num</XPD:ATTR> -<XPD:REF name="BehavioralFeature">dQd++JYYo0amx+JlLdJFWQAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="Operations[6]" type="UMLOperation" guid="eEq01zCgM0aZvokMO+SqkQAA"> -<XPD:ATTR name="Name" type="string">fastForward</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">快进播放(回放和时移播放时有效)</XPD:ATTR> -<XPD:REF name="Owner">xAj1pchzIEeSaRcR2+aFTwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[7]" type="UMLOperation" guid="MU6Fk6s7TUi43t3TzPmDYAAA"> -<XPD:ATTR name="Name" type="string">fastBackward</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">快退播放(回放和时移播放时有效)</XPD:ATTR> -<XPD:REF name="Owner">xAj1pchzIEeSaRcR2+aFTwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[8]" type="UMLOperation" guid="+JpQ6Kv+wUetg2ukud8xAAAA"> -<XPD:ATTR name="Name" type="string">setVideoWindow</XPD:ATTR> -<XPD:REF name="Owner">xAj1pchzIEeSaRcR2+aFTwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[9]" type="UMLOperation" guid="Urh1T97yF0qVB2qrq91V/AAA"> -<XPD:ATTR name="Name" type="string">getTime</XPD:ATTR> -<XPD:REF name="Owner">xAj1pchzIEeSaRcR2+aFTwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[10]" type="UMLOperation" guid="+OoQqX2+hEy7+IGpcoRO6wAA"> -<XPD:ATTR name="Name" type="string">stopPlaying</XPD:ATTR> -<XPD:REF name="Owner">xAj1pchzIEeSaRcR2+aFTwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[11]" type="UMLOperation" guid="5AWp11enzE2zKYbJKwZ4SgAA"> -<XPD:ATTR name="Name" type="string">startTimeshifting</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">开始时移播放</XPD:ATTR> -<XPD:REF name="Owner">xAj1pchzIEeSaRcR2+aFTwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[12]" type="UMLOperation" guid="Tt9RCFNm7USWaJVzeiQO4wAA"> -<XPD:ATTR name="Name" type="string">stopTimeshifting</XPD:ATTR> -<XPD:REF name="Owner">xAj1pchzIEeSaRcR2+aFTwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[13]" type="UMLOperation" guid="9gabibFFh0+pG1jLLre65AAA"> -<XPD:ATTR name="Name" type="string">startRecording</XPD:ATTR> -<XPD:REF name="Owner">xAj1pchzIEeSaRcR2+aFTwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[14]" type="UMLOperation" guid="3d/CswBBrEy2IUoFJUC4zAAA"> -<XPD:ATTR name="Name" type="string">switchAudioTrack</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">切换声道</XPD:ATTR> -<XPD:REF name="Owner">xAj1pchzIEeSaRcR2+aFTwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[15]" type="UMLOperation" guid="IGijEoer5kSmMkA+Fo3ArwAA"> -<XPD:ATTR name="Name" type="string">stopRecording</XPD:ATTR> -<XPD:REF name="Owner">xAj1pchzIEeSaRcR2+aFTwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[16]" type="UMLOperation" guid="Zb4VlxMHWkS/g4Mf01SYQAAA"> -<XPD:ATTR name="Name" type="string">startPlayback</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">开始录制节目回放</XPD:ATTR> -<XPD:REF name="Owner">xAj1pchzIEeSaRcR2+aFTwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[17]" type="UMLOperation" guid="YMsIpjPwskyU47Z7OFZGswAA"> -<XPD:ATTR name="Name" type="string">stopPlayback</XPD:ATTR> -<XPD:REF name="Owner">xAj1pchzIEeSaRcR2+aFTwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[18]" type="UMLOperation" guid="KYZZjRnW+E6fVbHlCQJHLgAA"> -<XPD:ATTR name="Name" type="string">startBooking</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">开始一个预约处理</XPD:ATTR> -<XPD:REF name="Owner">xAj1pchzIEeSaRcR2+aFTwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[19]" type="UMLOperation" guid="+mKhDWf/OkWW6S8s1fQrdAAA"> -<XPD:ATTR name="Name" type="string">getFrontendStatus</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">取得前端锁定状态</XPD:ATTR> -<XPD:REF name="Owner">xAj1pchzIEeSaRcR2+aFTwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[20]" type="UMLOperation" guid="4LuPht07CEyB+RsryYpq8wAA"> -<XPD:ATTR name="Name" type="string">getFrontendSignalStrength</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">取得前端信号强度</XPD:ATTR> -<XPD:REF name="Owner">xAj1pchzIEeSaRcR2+aFTwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[21]" type="UMLOperation" guid="auftPPtm9ESAf8dNdwpO8wAA"> -<XPD:ATTR name="Name" type="string">getFrontendSNR</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">取得前端SNR值</XPD:ATTR> -<XPD:REF name="Owner">xAj1pchzIEeSaRcR2+aFTwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[22]" type="UMLOperation" guid="SkFMqj2tAkCHB6YzXb25VAAA"> -<XPD:ATTR name="Name" type="string">getFrontendBER</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">取得前端BER值</XPD:ATTR> -<XPD:REF name="Owner">xAj1pchzIEeSaRcR2+aFTwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[23]" type="UMLOperation" guid="1Kkg1e8Eq0yMsbrLqj30vAAA"> -<XPD:ATTR name="Name" type="string">restoreFactorySetting</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">恢复出厂设置</XPD:ATTR> -<XPD:REF name="Owner">xAj1pchzIEeSaRcR2+aFTwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[24]" type="UMLOperation" guid="0F6QZhvGnEi9TAKhwr5gqAAA"> -<XPD:ATTR name="Name" type="string">setCvbsAmpOut</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">模拟CVBS AMP OUT</XPD:ATTR> -<XPD:REF name="Owner">xAj1pchzIEeSaRcR2+aFTwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[25]" type="UMLOperation" guid="H0pDJxWBtUeDplA7FSzwhQAA"> -<XPD:ATTR name="Name" type="string">unblock</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">解锁并播放当前已加锁的频道,例如密码验证通过后,调用该方法进行解锁播放</XPD:ATTR> -<XPD:REF name="Owner">xAj1pchzIEeSaRcR2+aFTwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[26]" type="UMLOperation" guid="UdoijIW/80yYKWWst/w35AAA"> -<XPD:ATTR name="Name" type="string">lock</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">锁频,用于信号测试等</XPD:ATTR> -<XPD:REF name="Owner">xAj1pchzIEeSaRcR2+aFTwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[27]" type="UMLOperation" guid="7rGFPyAzzUe2jTVqsr5TPwAA"> -<XPD:ATTR name="Name" type="string">getChannelInfo</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">一些相关信息,一个节目的相关信息</XPD:ATTR> -<XPD:REF name="Owner">xAj1pchzIEeSaRcR2+aFTwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[28]" type="UMLOperation" guid="Pa5rqUzWwEaNHn5Ws2ScXQAA"> -<XPD:ATTR name="Name" type="string">getChannelList</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">得到所有或者某一类的所以节目信息表,...include EPG?</XPD:ATTR> -<XPD:REF name="Owner">xAj1pchzIEeSaRcR2+aFTwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[29]" type="UMLOperation" guid="UYN2BdmAh0OwWr6FMv/4+gAA"> -<XPD:ATTR name="Name" type="string">editChannelList</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">编辑节目信息</XPD:ATTR> -<XPD:REF name="Owner">xAj1pchzIEeSaRcR2+aFTwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[30]" type="UMLOperation" guid="W+xUDLU830SOa/MaA8+q9gAA"> -<XPD:ATTR name="Name" type="string">getEvent</XPD:ATTR> -<XPD:REF name="Owner">xAj1pchzIEeSaRcR2+aFTwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[31]" type="UMLOperation" guid="wX/iXD/If0yyRjn7rC8n9wAA"> -<XPD:ATTR name="Name" type="string">EpgScanner</XPD:ATTR> -<XPD:REF name="Owner">xAj1pchzIEeSaRcR2+aFTwAA</XPD:REF> -</XPD:OBJ> -<XPD:ATTR name="#Associations" type="integer">7</XPD:ATTR> -<XPD:REF name="Associations[0]">kdbNMfgoG02cJO0UFJeeLwAA</XPD:REF> -<XPD:REF name="Associations[1]">X5VvOi2uGkGYzMMS5nWm2AAA</XPD:REF> -<XPD:REF name="Associations[2]">xf4XKZpxx0iF7C4H+oOABwAA</XPD:REF> -<XPD:REF name="Associations[3]">yVknRLQq7U2nj3bRfizyAgAA</XPD:REF> -<XPD:REF name="Associations[4]">6CsrL0wlVEKI657OoEev1gAA</XPD:REF> -<XPD:REF name="Associations[5]">be+eScBkV0Cn4n2XjSojvgAA</XPD:REF> -<XPD:REF name="Associations[6]">PP9nsgv4Vkmbk1zEfct4VAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[1]" type="UMLClass" guid="SX+aNGg0j0WtdR26+LZ7OgAA"> -<XPD:ATTR name="Name" type="string">CTvDatabase</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">使用AM_DB -操作: -SELECT -- -INSERT -- -DELETE -- -UPDATE --</XPD:ATTR> -<XPD:REF name="Namespace">T1P4Xv7L+UuEzFqU+iyS5wAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">a8FG7H9SzUelkRx52q1d5AAA</XPD:REF> -<XPD:REF name="Views[1]">k1LHywt4TEe6bHJwUzft/QAA</XPD:REF> -<XPD:REF name="Views[2]">hc7Nc/x4iE+k/Ee76MBxMgAA</XPD:REF> -<XPD:REF name="Views[3]">Pwafosd7ik6mD1kxdwntngAA</XPD:REF> -<XPD:ATTR name="#Operations" type="integer">5</XPD:ATTR> -<XPD:OBJ name="Operations[0]" type="UMLOperation" guid="eujhNjd7X0OXZG7TspyZqAAA"> -<XPD:ATTR name="Name" type="string">select</XPD:ATTR> -<XPD:REF name="Owner">SX+aNGg0j0WtdR26+LZ7OgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[1]" type="UMLOperation" guid="NHwUxL9yUkyP+nuyACBPRAAA"> -<XPD:ATTR name="Name" type="string">insert</XPD:ATTR> -<XPD:REF name="Owner">SX+aNGg0j0WtdR26+LZ7OgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[2]" type="UMLOperation" guid="cmY3ij4BnES+HvUtnuKW0wAA"> -<XPD:ATTR name="Name" type="string">del</XPD:ATTR> -<XPD:REF name="Owner">SX+aNGg0j0WtdR26+LZ7OgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[3]" type="UMLOperation" guid="UNsa63AKqU6E5RGSTo+clgAA"> -<XPD:ATTR name="Name" type="string">update</XPD:ATTR> -<XPD:REF name="Owner">SX+aNGg0j0WtdR26+LZ7OgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[4]" type="UMLOperation" guid="YwBo0pVRWEevayMrI8sH+AAA"> -<XPD:ATTR name="Name" type="string">xxtable</XPD:ATTR> -<XPD:REF name="Owner">SX+aNGg0j0WtdR26+LZ7OgAA</XPD:REF> -</XPD:OBJ> -<XPD:ATTR name="#TypedParameters" type="integer">4</XPD:ATTR> -<XPD:REF name="TypedParameters[0]">J5mDMInaY0G18Fx0eB6MsAAA</XPD:REF> -<XPD:REF name="TypedParameters[1]">lSipwxb9AEu7dKbkvn8bCwAA</XPD:REF> -<XPD:REF name="TypedParameters[2]">eQIZ7HOvJESQdc0nGhqnrwAA</XPD:REF> -<XPD:REF name="TypedParameters[3]">lc6uST5/Mk6WfIuIfATlsgAA</XPD:REF> -<XPD:ATTR name="#Associations" type="integer">10</XPD:ATTR> -<XPD:REF name="Associations[0]">PFZlUbzZu02nTTLsYZBoDgAA</XPD:REF> -<XPD:REF name="Associations[1]">q5Ko0bXKcE6uj05NJPSddwAA</XPD:REF> -<XPD:REF name="Associations[2]">Yo1IoB0X3ka1C+a/6xk1/gAA</XPD:REF> -<XPD:REF name="Associations[3]">RoKhf4Bw3kmRk2O2D4GlxQAA</XPD:REF> -<XPD:REF name="Associations[4]">vyoQZGl3UECBMhf7+IDQUwAA</XPD:REF> -<XPD:REF name="Associations[5]">iy8GVdK11EmKnmJ6LivVVQAA</XPD:REF> -<XPD:REF name="Associations[6]">DkcX/fIec029p5Da5gYToAAA</XPD:REF> -<XPD:REF name="Associations[7]">gc0GlJ6ewUOpiyya+XPqjQAA</XPD:REF> -<XPD:REF name="Associations[8]">Fd/cvRV12USE+Vu6oJsMOgAA</XPD:REF> -<XPD:REF name="Associations[9]">AM/xtV731kSTTZbv0mmefgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[2]" type="UMLClass" guid="5BXVsgqK1kanN/l0hNx/IQAA"> -<XPD:ATTR name="Name" type="string">CTvSubtitle</XPD:ATTR> -<XPD:REF name="Namespace">T1P4Xv7L+UuEzFqU+iyS5wAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">Y9zMsiXlQEuyiSGOmpswRwAA</XPD:REF> -<XPD:REF name="Views[1]">3kCRXwUbYEOaB2YVqs3CMQAA</XPD:REF> -<XPD:REF name="Views[2]">2pFBVEb3NUu3IhdJeNfBWAAA</XPD:REF> -<XPD:REF name="Views[3]">xx5BbdZ+6Eehp04cM6fnfwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[3]" type="UMLClass" guid="9naBHAA+hkmkNtZzyXP1/wAA"> -<XPD:ATTR name="Name" type="string">CTvProgram</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">Program对应ATV中的一个频道,DTV中的一个service</XPD:ATTR> -<XPD:REF name="Namespace">T1P4Xv7L+UuEzFqU+iyS5wAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">BVNqLhbhP06y98++NgmxAwAA</XPD:REF> -<XPD:REF name="Views[1]">muUyRePjd0qlQqM/tvfrmQAA</XPD:REF> -<XPD:REF name="Views[2]">3aWGjpGXTkqRn+NbEzYu5QAA</XPD:REF> -<XPD:REF name="Views[3]">ylciM87U9keZe9hSnVequAAA</XPD:REF> -<XPD:ATTR name="#Operations" type="integer">29</XPD:ATTR> -<XPD:OBJ name="Operations[0]" type="UMLOperation" guid="YYAlKwYwAkum0/0/V8VSfAAA"> -<XPD:ATTR name="Name" type="string">TVProgram</XPD:ATTR> -<XPD:ATTR name="StereotypeProfile" type="string">UMLStandard</XPD:ATTR> -<XPD:ATTR name="StereotypeName" type="string">create</XPD:ATTR> -<XPD:REF name="Owner">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -<XPD:ATTR name="#Parameters" type="integer">1</XPD:ATTR> -<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="J5mDMInaY0G18Fx0eB6MsAAA"> -<XPD:ATTR name="Name" type="string">db</XPD:ATTR> -<XPD:ATTR name="TypeExpression" type="string">CTvDatabase</XPD:ATTR> -<XPD:REF name="BehavioralFeature">YYAlKwYwAkum0/0/V8VSfAAA</XPD:REF> -<XPD:REF name="Type_">SX+aNGg0j0WtdR26+LZ7OgAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="Operations[1]" type="UMLOperation" guid="MO9Z8u42Ck+RSnezotFx6gAA"> -<XPD:ATTR name="Name" type="string">TVProgram</XPD:ATTR> -<XPD:ATTR name="StereotypeProfile" type="string">UMLStandard</XPD:ATTR> -<XPD:ATTR name="StereotypeName" type="string">destroy</XPD:ATTR> -<XPD:REF name="Owner">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[2]" type="UMLOperation" guid="I7Tahi7CMEWsF5E1eyHYIwAA"> -<XPD:ATTR name="Name" type="string">TVProgram</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">创建并向数据库添加一个Program</XPD:ATTR> -<XPD:ATTR name="StereotypeProfile" type="string">UMLStandard</XPD:ATTR> -<XPD:ATTR name="StereotypeName" type="string">create</XPD:ATTR> -<XPD:REF name="Owner">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -<XPD:ATTR name="#Parameters" type="integer">2</XPD:ATTR> -<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="uoElE3D4I0KE+CLUBhlBmAAA"> -<XPD:ATTR name="Name" type="string">channelID</XPD:ATTR> -<XPD:REF name="BehavioralFeature">I7Tahi7CMEWsF5E1eyHYIwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Parameters[1]" type="UMLParameter" guid="R7F9l39IqkWdzSgaYK9tQAAA"> -<XPD:ATTR name="Name" type="string">type</XPD:ATTR> -<XPD:REF name="BehavioralFeature">I7Tahi7CMEWsF5E1eyHYIwAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="Operations[3]" type="UMLOperation" guid="c5Mq32YFGk6fa8RKqgPtRgAA"> -<XPD:ATTR name="Name" type="string">TVProgram</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">adding a Playback program</XPD:ATTR> -<XPD:REF name="Owner">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[4]" type="UMLOperation" guid="JNEvi/3wp0OBIRiyz8YftgAA"> -<XPD:ATTR name="Name" type="string">selectByID</XPD:ATTR> -<XPD:ATTR name="OwnerScope" type="UMLScopeKind">skClassifier</XPD:ATTR> -<XPD:REF name="Owner">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -<XPD:ATTR name="#Parameters" type="integer">2</XPD:ATTR> -<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="AkhDSecO8E2/EoFulZe5iAAA"> -<XPD:ATTR name="Name" type="string">id</XPD:ATTR> -<XPD:REF name="BehavioralFeature">JNEvi/3wp0OBIRiyz8YftgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Parameters[1]" type="UMLParameter" guid="lmgbU9AACUCXuVDuiBNNpwAA"> -<XPD:ATTR name="Name" type="string">ret</XPD:ATTR> -<XPD:ATTR name="DirectionKind" type="UMLParameterDirectionKind">pdkReturn</XPD:ATTR> -<XPD:ATTR name="TypeExpression" type="string">CTvProgram</XPD:ATTR> -<XPD:REF name="BehavioralFeature">JNEvi/3wp0OBIRiyz8YftgAA</XPD:REF> -<XPD:REF name="Type_">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="Operations[5]" type="UMLOperation" guid="c4hDH4Wl4EC1nupSKD7ECQAA"> -<XPD:ATTR name="Name" type="string">selectByNumber</XPD:ATTR> -<XPD:ATTR name="OwnerScope" type="UMLScopeKind">skClassifier</XPD:ATTR> -<XPD:REF name="Owner">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -<XPD:ATTR name="#Parameters" type="integer">3</XPD:ATTR> -<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="+naqez7eJ0Gt7lrOPAtRhwAA"> -<XPD:ATTR name="Name" type="string">num</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">代指一个节目号类</XPD:ATTR> -<XPD:REF name="BehavioralFeature">c4hDH4Wl4EC1nupSKD7ECQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Parameters[1]" type="UMLParameter" guid="TGg03aSXFk6f/K55VhZZ4AAA"> -<XPD:ATTR name="Name" type="string">type</XPD:ATTR> -<XPD:REF name="BehavioralFeature">c4hDH4Wl4EC1nupSKD7ECQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Parameters[2]" type="UMLParameter" guid="JwSDsmXVS02yCU8rmbNT+gAA"> -<XPD:ATTR name="Name" type="string">ret</XPD:ATTR> -<XPD:ATTR name="DirectionKind" type="UMLParameterDirectionKind">pdkReturn</XPD:ATTR> -<XPD:ATTR name="TypeExpression" type="string">CTvProgram</XPD:ATTR> -<XPD:REF name="BehavioralFeature">c4hDH4Wl4EC1nupSKD7ECQAA</XPD:REF> -<XPD:REF name="Type_">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="Operations[6]" type="UMLOperation" guid="yeJSdWpKskaFq49HK5+/4wAA"> -<XPD:ATTR name="Name" type="string">selectUp</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">根据节目号选择下一节目</XPD:ATTR> -<XPD:ATTR name="OwnerScope" type="UMLScopeKind">skClassifier</XPD:ATTR> -<XPD:REF name="Owner">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -<XPD:ATTR name="#Parameters" type="integer">2</XPD:ATTR> -<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="z7wJx+cu9U6OwVLUgjkczgAA"> -<XPD:ATTR name="Name" type="string">num</XPD:ATTR> -<XPD:REF name="BehavioralFeature">yeJSdWpKskaFq49HK5+/4wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Parameters[1]" type="UMLParameter" guid="Qv4GcTZ/w0GgrJcc/XNMQAAA"> -<XPD:ATTR name="Name" type="string">ret</XPD:ATTR> -<XPD:ATTR name="DirectionKind" type="UMLParameterDirectionKind">pdkReturn</XPD:ATTR> -<XPD:ATTR name="TypeExpression" type="string">CTvProgram</XPD:ATTR> -<XPD:REF name="BehavioralFeature">yeJSdWpKskaFq49HK5+/4wAA</XPD:REF> -<XPD:REF name="Type_">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="Operations[7]" type="UMLOperation" guid="LTDhnEPkWE6psd+d5WLFWwAA"> -<XPD:ATTR name="Name" type="string">selectDown</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">根据节目号选择上一节目</XPD:ATTR> -<XPD:ATTR name="OwnerScope" type="UMLScopeKind">skClassifier</XPD:ATTR> -<XPD:REF name="Owner">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -<XPD:ATTR name="#Parameters" type="integer">2</XPD:ATTR> -<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="JwS8/J1pU0ixPx2Gtv9PswAA"> -<XPD:ATTR name="Name" type="string">num</XPD:ATTR> -<XPD:REF name="BehavioralFeature">LTDhnEPkWE6psd+d5WLFWwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Parameters[1]" type="UMLParameter" guid="p3gaswKAtEmlrHF0SJQaJQAA"> -<XPD:ATTR name="Name" type="string">ret</XPD:ATTR> -<XPD:ATTR name="DirectionKind" type="UMLParameterDirectionKind">pdkReturn</XPD:ATTR> -<XPD:ATTR name="TypeExpression" type="string">CTvProgram</XPD:ATTR> -<XPD:REF name="BehavioralFeature">LTDhnEPkWE6psd+d5WLFWwAA</XPD:REF> -<XPD:REF name="Type_">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="Operations[8]" type="UMLOperation" guid="25tmOHxHGkmZu/nQh+mDnwAA"> -<XPD:ATTR name="Name" type="string">selectFirstValid</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">选择一个有效的节目,先查找频道号最小的电视节目,如果没有电视,再查找频道号最小的广播节目</XPD:ATTR> -<XPD:REF name="Owner">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -<XPD:ATTR name="#Parameters" type="integer">1</XPD:ATTR> -<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="LRGUd6QwL02qGj2EBYZ86QAA"> -<XPD:ATTR name="Name" type="string">ret</XPD:ATTR> -<XPD:ATTR name="DirectionKind" type="UMLParameterDirectionKind">pdkReturn</XPD:ATTR> -<XPD:ATTR name="TypeExpression" type="string">CTvProgram</XPD:ATTR> -<XPD:REF name="BehavioralFeature">25tmOHxHGkmZu/nQh+mDnwAA</XPD:REF> -<XPD:REF name="Type_">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="Operations[9]" type="UMLOperation" guid="9VZ9jSrONEOU5G5ov0HotwAA"> -<XPD:ATTR name="Name" type="string">selectAll</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">列出全部TVProgram</XPD:ATTR> -<XPD:REF name="Owner">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -<XPD:ATTR name="#Parameters" type="integer">1</XPD:ATTR> -<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="75rhon2Jo0CUX2eeQJLflgAA"> -<XPD:ATTR name="Name" type="string">ret</XPD:ATTR> -<XPD:ATTR name="DirectionKind" type="UMLParameterDirectionKind">pdkReturn</XPD:ATTR> -<XPD:ATTR name="TypeExpression" type="string">vector<CTvProgram></XPD:ATTR> -<XPD:REF name="BehavioralFeature">9VZ9jSrONEOU5G5ov0HotwAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="Operations[10]" type="UMLOperation" guid="bFQUubUtYkClhu6k44lX2wAA"> -<XPD:ATTR name="Name" type="string">selectByChannel</XPD:ATTR> -<XPD:ATTR name="OwnerScope" type="UMLScopeKind">skClassifier</XPD:ATTR> -<XPD:REF name="Owner">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -<XPD:ATTR name="#Parameters" type="integer">2</XPD:ATTR> -<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="ghACz+/RMk6PwXHevQHrKgAA"> -<XPD:ATTR name="Name" type="string">channelID</XPD:ATTR> -<XPD:REF name="BehavioralFeature">bFQUubUtYkClhu6k44lX2wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Parameters[1]" type="UMLParameter" guid="3MSYvjBf4k+QHn22Q8eg7AAA"> -<XPD:ATTR name="Name" type="string">ret</XPD:ATTR> -<XPD:ATTR name="DirectionKind" type="UMLParameterDirectionKind">pdkReturn</XPD:ATTR> -<XPD:ATTR name="TypeExpression" type="string">vector<CTvProgram></XPD:ATTR> -<XPD:REF name="BehavioralFeature">bFQUubUtYkClhu6k44lX2wAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="Operations[11]" type="UMLOperation" guid="+1TV2QUUtUKhshvxqFDzNAAA"> -<XPD:ATTR name="Name" type="string">selectByName</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">根据节目名称中的关键字查找指定TVProgram</XPD:ATTR> -<XPD:ATTR name="OwnerScope" type="UMLScopeKind">skClassifier</XPD:ATTR> -<XPD:REF name="Owner">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -<XPD:ATTR name="#Parameters" type="integer">2</XPD:ATTR> -<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="6l3x+N+XpkKTQss5baAQuwAA"> -<XPD:ATTR name="Name" type="string">name</XPD:ATTR> -<XPD:REF name="BehavioralFeature">+1TV2QUUtUKhshvxqFDzNAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Parameters[1]" type="UMLParameter" guid="eG1miZaCQk6agFaTX6TwVAAA"> -<XPD:ATTR name="Name" type="string">ret</XPD:ATTR> -<XPD:ATTR name="TypeExpression" type="string">vector<CTvProgram></XPD:ATTR> -<XPD:REF name="BehavioralFeature">+1TV2QUUtUKhshvxqFDzNAAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="Operations[12]" type="UMLOperation" guid="ZYi+bCDmv0C3n5svMsg6OAAA"> -<XPD:ATTR name="Name" type="string">tvProgramDelByChannelID</XPD:ATTR> -<XPD:REF name="Owner">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -<XPD:ATTR name="#Parameters" type="integer">1</XPD:ATTR> -<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="jqLk5a2Xh0mhzw9HIwhkTwAA"> -<XPD:ATTR name="Name" type="string">channelID</XPD:ATTR> -<XPD:REF name="BehavioralFeature">ZYi+bCDmv0C3n5svMsg6OAAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="Operations[13]" type="UMLOperation" guid="ACVxjvFDC0yCpTUl109bFwAA"> -<XPD:ATTR name="Name" type="string">getID</XPD:ATTR> -<XPD:REF name="Owner">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[14]" type="UMLOperation" guid="HdyeyQ/bRESko2FrqkZbcgAA"> -<XPD:ATTR name="Name" type="string">getName</XPD:ATTR> -<XPD:REF name="Owner">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -<XPD:ATTR name="#Parameters" type="integer">1</XPD:ATTR> -<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="p/P9yxCMgk+7553zQk/digAA"> -<XPD:ATTR name="Name" type="string">ret</XPD:ATTR> -<XPD:ATTR name="TypeExpression" type="string">String</XPD:ATTR> -<XPD:REF name="BehavioralFeature">HdyeyQ/bRESko2FrqkZbcgAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="Operations[15]" type="UMLOperation" guid="JwHR21A3wE+c3ID5+O7HqAAA"> -<XPD:ATTR name="Name" type="string">getCurrentSubtitle</XPD:ATTR> -<XPD:REF name="Owner">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[16]" type="UMLOperation" guid="dwF0iyGWbU+EGkjX1GDTpAAA"> -<XPD:ATTR name="Name" type="string">getCurrentTeletext</XPD:ATTR> -<XPD:REF name="Owner">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[17]" type="UMLOperation" guid="k/2NPLI6skm2+zWBikSQIgAA"> -<XPD:ATTR name="Name" type="string">getChannel</XPD:ATTR> -<XPD:REF name="Owner">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -<XPD:ATTR name="#Parameters" type="integer">1</XPD:ATTR> -<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="A7QPUTtNz0O45ex/ZBEL3wAA"> -<XPD:ATTR name="Name" type="string">ret</XPD:ATTR> -<XPD:ATTR name="DirectionKind" type="UMLParameterDirectionKind">pdkReturn</XPD:ATTR> -<XPD:ATTR name="TypeExpression" type="string">CTvChannel</XPD:ATTR> -<XPD:REF name="BehavioralFeature">k/2NPLI6skm2+zWBikSQIgAA</XPD:REF> -<XPD:REF name="Type_">JCgv4vk16U6BbVcoQFmlVwAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="Operations[18]" type="UMLOperation" guid="e28O5Ud6AkiFQ2Whw+g5PAAA"> -<XPD:ATTR name="Name" type="string">getPresentEvent</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">取得节目正在播放事件</XPD:ATTR> -<XPD:REF name="Owner">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -<XPD:ATTR name="#Parameters" type="integer">2</XPD:ATTR> -<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="JMu9kCbPeUOqYnb8+XprhgAA"> -<XPD:ATTR name="Name" type="string">now</XPD:ATTR> -<XPD:ATTR name="TypeExpression" type="string">long</XPD:ATTR> -<XPD:REF name="BehavioralFeature">e28O5Ud6AkiFQ2Whw+g5PAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Parameters[1]" type="UMLParameter" guid="+v9VB9kIH02VZ9TgNHJJfQAA"> -<XPD:ATTR name="Name" type="string">ret</XPD:ATTR> -<XPD:ATTR name="DirectionKind" type="UMLParameterDirectionKind">pdkReturn</XPD:ATTR> -<XPD:ATTR name="TypeExpression" type="string">CTvEvent</XPD:ATTR> -<XPD:REF name="BehavioralFeature">e28O5Ud6AkiFQ2Whw+g5PAAA</XPD:REF> -<XPD:REF name="Type_">26RSzf3jmEWkDlRiFhl4OAAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="Operations[19]" type="UMLOperation" guid="/N5EpSRqt0miI+sRfUySzQAA"> -<XPD:ATTR name="Name" type="string">getFollowingEvent</XPD:ATTR> -<XPD:REF name="Owner">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[20]" type="UMLOperation" guid="dF2yMKnmeUmHMTQ3n59OfgAA"> -<XPD:ATTR name="Name" type="string">getScheduleEvents</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">取得节目在一个时间段内的事件</XPD:ATTR> -<XPD:REF name="Owner">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[21]" type="UMLOperation" guid="unjofe5xCEG64AlRNpC6lAAA"> -<XPD:ATTR name="Name" type="string">selectByFavorite</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">列出喜爱节目组TVProgram</XPD:ATTR> -<XPD:REF name="Owner">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[22]" type="UMLOperation" guid="Yf/ivoCbnU2TvnC8p98iwAAA"> -<XPD:ATTR name="Name" type="string">addProgramToGroup</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">添加节目到指定节目分组</XPD:ATTR> -<XPD:REF name="Owner">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[23]" type="UMLOperation" guid="hrNkpY6nlU+EwIWtvCj7TwAA"> -<XPD:ATTR name="Name" type="string">deleteFromGroup</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">从指定节目分组删除当前节目</XPD:ATTR> -<XPD:REF name="Owner">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[24]" type="UMLOperation" guid="t2BjZT6On0+sFvxzq4g8ggAA"> -<XPD:ATTR name="Name" type="string">checkIsGroup</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">检测当前节目是否属于分组</XPD:ATTR> -<XPD:REF name="Owner">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[25]" type="UMLOperation" guid="P9TAD4y/o0KU9vLyJ9OV4AAA"> -<XPD:ATTR name="Name" type="string">modifyChanOrder</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">修改节目排序</XPD:ATTR> -<XPD:REF name="Owner">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[26]" type="UMLOperation" guid="ajleTvMjZ0eZ0eAHzHaalwAA"> -<XPD:ATTR name="Name" type="string">setProgramName</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">修改节目名称</XPD:ATTR> -<XPD:REF name="Owner">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[27]" type="UMLOperation" guid="elSJfx5P9Ui4sQvrJy9lsAAA"> -<XPD:ATTR name="Name" type="string">setProgramNumber</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">修改节目number</XPD:ATTR> -<XPD:REF name="Owner">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[28]" type="UMLOperation" guid="SmcQMrAyCE+xl1JXzNgH/gAA"> -<XPD:ATTR name="Name" type="string">setProgramVolume</XPD:ATTR> -<XPD:REF name="Owner">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -</XPD:OBJ> -<XPD:ATTR name="#TypedFeatures" type="integer">1</XPD:ATTR> -<XPD:REF name="TypedFeatures[0]">xT0LK2eQ9EGzJfCHW9IJ9wAA</XPD:REF> -<XPD:ATTR name="#TypedParameters" type="integer">6</XPD:ATTR> -<XPD:REF name="TypedParameters[0]">lmgbU9AACUCXuVDuiBNNpwAA</XPD:REF> -<XPD:REF name="TypedParameters[1]">JwSDsmXVS02yCU8rmbNT+gAA</XPD:REF> -<XPD:REF name="TypedParameters[2]">Qv4GcTZ/w0GgrJcc/XNMQAAA</XPD:REF> -<XPD:REF name="TypedParameters[3]">p3gaswKAtEmlrHF0SJQaJQAA</XPD:REF> -<XPD:REF name="TypedParameters[4]">LRGUd6QwL02qGj2EBYZ86QAA</XPD:REF> -<XPD:REF name="TypedParameters[5]">w4A7LCg5RUitVRoJ8EF5DwAA</XPD:REF> -<XPD:ATTR name="#Associations" type="integer">5</XPD:ATTR> -<XPD:REF name="Associations[0]">IEnUwW74QkSkdRZGqdKvaAAA</XPD:REF> -<XPD:REF name="Associations[1]">2JZlFpDZPkGgaoWrrPAGXAAA</XPD:REF> -<XPD:REF name="Associations[2]">qOlPMeLYpUC4lTEl3Hsc8QAA</XPD:REF> -<XPD:REF name="Associations[3]">72fG4kbiM0eyczFPq2MtVAAA</XPD:REF> -<XPD:REF name="Associations[4]">IMPiiZPlxkaJkH8N2NGOggAA</XPD:REF> -<XPD:ATTR name="#Attributes" type="integer">15</XPD:ATTR> -<XPD:OBJ name="Attributes[0]" type="UMLAttribute" guid="uXjsbosYkke28aZWg65AOwAA"> -<XPD:ATTR name="Name" type="string">id</XPD:ATTR> -<XPD:REF name="Owner">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Attributes[1]" type="UMLAttribute" guid="+NxzFOFWPEqKmFfNqTdx8QAA"> -<XPD:ATTR name="Name" type="string">dvbServiceID</XPD:ATTR> -<XPD:REF name="Owner">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Attributes[2]" type="UMLAttribute" guid="JIJ3w5q9AEq5pH8jxW/gOAAA"> -<XPD:ATTR name="Name" type="string">type</XPD:ATTR> -<XPD:REF name="Owner">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Attributes[3]" type="UMLAttribute" guid="JOINtcM+u0qVqfxy1LsTdwAA"> -<XPD:ATTR name="Name" type="string">name</XPD:ATTR> -<XPD:ATTR name="TypeExpression" type="string">char</XPD:ATTR> -<XPD:REF name="Owner">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Attributes[4]" type="UMLAttribute" guid="U6dOwxN6VkKvkKCowD7yxQAA"> -<XPD:ATTR name="Name" type="string">channelID</XPD:ATTR> -<XPD:REF name="Owner">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Attributes[5]" type="UMLAttribute" guid="Zh90wWMTSUm6ew2qIiAjFAAA"> -<XPD:ATTR name="Name" type="string">channel</XPD:ATTR> -<XPD:ATTR name="Visibility" type="UMLVisibilityKind">vkPrivate</XPD:ATTR> -<XPD:ATTR name="TypeExpression" type="string">CTvChannel</XPD:ATTR> -<XPD:REF name="Type_">JCgv4vk16U6BbVcoQFmlVwAA</XPD:REF> -<XPD:REF name="Owner">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Attributes[6]" type="UMLAttribute" guid="on0gPuAz4U686Sy93eQ2cgAA"> -<XPD:ATTR name="Name" type="string">skip</XPD:ATTR> -<XPD:REF name="Owner">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Attributes[7]" type="UMLAttribute" guid="bIOnmWt5I0yApBHA5XFN+gAA"> -<XPD:ATTR name="Name" type="string">favorite</XPD:ATTR> -<XPD:REF name="Owner">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Attributes[8]" type="UMLAttribute" guid="x9TcSSHftEmulDVv3sJK1wAA"> -<XPD:ATTR name="Name" type="string">volume</XPD:ATTR> -<XPD:REF name="Owner">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Attributes[9]" type="UMLAttribute" guid="QeKA3IlVykyPEjmBPYFTpQAA"> -<XPD:ATTR name="Name" type="string">sourceID</XPD:ATTR> -<XPD:REF name="Owner">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Attributes[10]" type="UMLAttribute" guid="kb0pZw6ZkE2OolX+iMKt8gAA"> -<XPD:ATTR name="Name" type="string">pmtPID</XPD:ATTR> -<XPD:REF name="Owner">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Attributes[11]" type="UMLAttribute" guid="RZ6B0lWtR0m+vSVJBlDoigAA"> -<XPD:ATTR name="Name" type="string">video</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">video信息,类型不定</XPD:ATTR> -<XPD:REF name="Owner">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Attributes[12]" type="UMLAttribute" guid="BihGmjGNQ0mzaFwgnsKAWQAA"> -<XPD:ATTR name="Name" type="string">audioes</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">audio信息,类型不定</XPD:ATTR> -<XPD:REF name="Owner">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Attributes[13]" type="UMLAttribute" guid="/qxd9kIZyU+tZ4SClIWWmQAA"> -<XPD:ATTR name="Name" type="string">subtitles</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">subtitle信息类型不定</XPD:ATTR> -<XPD:REF name="Owner">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Attributes[14]" type="UMLAttribute" guid="zvplUrX8lUGsjB9WCZ2PcAAA"> -<XPD:ATTR name="Name" type="string">teletexts</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">teletext信息,类型不定</XPD:ATTR> -<XPD:REF name="Owner">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[4]" type="UMLClass" guid="JCgv4vk16U6BbVcoQFmlVwAA"> -<XPD:ATTR name="Name" type="string">CTvChannel</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">对应模拟电视中的一个频点,数字电视中的一个频点调制的TS流</XPD:ATTR> -<XPD:REF name="Namespace">T1P4Xv7L+UuEzFqU+iyS5wAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">iEgH+6H6kkG++neKuToTSgAA</XPD:REF> -<XPD:REF name="Views[1]">Yo0KShxzIk2FSTydUse5OQAA</XPD:REF> -<XPD:REF name="Views[2]">rmKV7ZtcVEudbDw02LTB/wAA</XPD:REF> -<XPD:REF name="Views[3]">+jiKzSIz/UuhSFnnJkuIEgAA</XPD:REF> -<XPD:ATTR name="#Operations" type="integer">23</XPD:ATTR> -<XPD:OBJ name="Operations[0]" type="UMLOperation" guid="+k2keRjKq0Kcp2LH8FqiVwAA"> -<XPD:ATTR name="Name" type="string">TvChannel</XPD:ATTR> -<XPD:ATTR name="StereotypeProfile" type="string">UMLStandard</XPD:ATTR> -<XPD:ATTR name="StereotypeName" type="string">create</XPD:ATTR> -<XPD:REF name="Owner">JCgv4vk16U6BbVcoQFmlVwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[1]" type="UMLOperation" guid="bLasrnFvT0mJOlVtuIWeVwAA"> -<XPD:ATTR name="Name" type="string">TvChannel</XPD:ATTR> -<XPD:ATTR name="StereotypeProfile" type="string">UMLStandard</XPD:ATTR> -<XPD:ATTR name="StereotypeName" type="string">destroy</XPD:ATTR> -<XPD:REF name="Owner">JCgv4vk16U6BbVcoQFmlVwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[2]" type="UMLOperation" guid="Uo205gWA4UyYN/g3FxOFmQAA"> -<XPD:ATTR name="Name" type="string">TvChannel</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">根据TVChannelParams,向数据库添加一个Channel</XPD:ATTR> -<XPD:ATTR name="StereotypeProfile" type="string">UMLStandard</XPD:ATTR> -<XPD:ATTR name="StereotypeName" type="string">create</XPD:ATTR> -<XPD:REF name="Owner">JCgv4vk16U6BbVcoQFmlVwAA</XPD:REF> -<XPD:ATTR name="#Parameters" type="integer">1</XPD:ATTR> -<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="So08mUV3uUGzB96ampUmnQAA"> -<XPD:ATTR name="Name" type="string">Params</XPD:ATTR> -<XPD:ATTR name="TypeExpression" type="string">TvChannelParams</XPD:ATTR> -<XPD:REF name="BehavioralFeature">Uo205gWA4UyYN/g3FxOFmQAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="Operations[3]" type="UMLOperation" guid="RN5b/cypXUivfIl6CeiRrgAA"> -<XPD:ATTR name="Name" type="string">tvChannelList</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">*创建当前卫星所有通道 -*@param sat_id 卫星id -*@return 返回创建的通道</XPD:ATTR> -<XPD:ATTR name="OwnerScope" type="UMLScopeKind">skClassifier</XPD:ATTR> -<XPD:REF name="Owner">JCgv4vk16U6BbVcoQFmlVwAA</XPD:REF> -<XPD:ATTR name="#Parameters" type="integer">2</XPD:ATTR> -<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="ATajQMblVE2J+9tPqnDGIQAA"> -<XPD:ATTR name="Name" type="string">sat_id</XPD:ATTR> -<XPD:ATTR name="TypeExpression" type="string">int</XPD:ATTR> -<XPD:REF name="BehavioralFeature">RN5b/cypXUivfIl6CeiRrgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Parameters[1]" type="UMLParameter" guid="x7A2ohl0v0WHXUc8UDHW6AAA"> -<XPD:ATTR name="Name" type="string">ret</XPD:ATTR> -<XPD:ATTR name="DirectionKind" type="UMLParameterDirectionKind">pdkReturn</XPD:ATTR> -<XPD:ATTR name="TypeExpression" type="string">vector<TvChannel></XPD:ATTR> -<XPD:REF name="BehavioralFeature">RN5b/cypXUivfIl6CeiRrgAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="Operations[4]" type="UMLOperation" guid="THncZsTd2EaQgMWP8ukavAAA"> -<XPD:ATTR name="Name" type="string">selectByID</XPD:ATTR> -<XPD:ATTR name="OwnerScope" type="UMLScopeKind">skClassifier</XPD:ATTR> -<XPD:REF name="Owner">JCgv4vk16U6BbVcoQFmlVwAA</XPD:REF> -<XPD:ATTR name="#Parameters" type="integer">2</XPD:ATTR> -<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="7U3T/Mh9gEGdFQ58AaydXQAA"> -<XPD:ATTR name="Name" type="string">id</XPD:ATTR> -<XPD:ATTR name="TypeExpression" type="string">int</XPD:ATTR> -<XPD:REF name="BehavioralFeature">THncZsTd2EaQgMWP8ukavAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Parameters[1]" type="UMLParameter" guid="ZpRrlyhz802QY2ObgoUqmwAA"> -<XPD:ATTR name="Name" type="string">ret</XPD:ATTR> -<XPD:ATTR name="DirectionKind" type="UMLParameterDirectionKind">pdkReturn</XPD:ATTR> -<XPD:ATTR name="TypeExpression" type="string">TvChannel</XPD:ATTR> -<XPD:REF name="BehavioralFeature">THncZsTd2EaQgMWP8ukavAAA</XPD:REF> -<XPD:REF name="Type_">JCgv4vk16U6BbVcoQFmlVwAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="Operations[5]" type="UMLOperation" guid="FkLzL9wZQUqTW/xy345ifgAA"> -<XPD:ATTR name="Name" type="string">selectByParams</XPD:ATTR> -<XPD:ATTR name="OwnerScope" type="UMLScopeKind">skClassifier</XPD:ATTR> -<XPD:REF name="Owner">JCgv4vk16U6BbVcoQFmlVwAA</XPD:REF> -<XPD:ATTR name="#Parameters" type="integer">2</XPD:ATTR> -<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="/9TUXJr3nkaE3sNOYEA7AwAA"> -<XPD:ATTR name="Name" type="string">param</XPD:ATTR> -<XPD:ATTR name="TypeExpression" type="string">TvChannelParams</XPD:ATTR> -<XPD:REF name="BehavioralFeature">FkLzL9wZQUqTW/xy345ifgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Parameters[1]" type="UMLParameter" guid="NFnoGSrnCk6OIIsCI5hKAAAA"> -<XPD:ATTR name="Name" type="string">ret</XPD:ATTR> -<XPD:ATTR name="DirectionKind" type="UMLParameterDirectionKind">pdkReturn</XPD:ATTR> -<XPD:ATTR name="TypeExpression" type="string">TvChannel</XPD:ATTR> -<XPD:REF name="BehavioralFeature">FkLzL9wZQUqTW/xy345ifgAA</XPD:REF> -<XPD:REF name="Type_">JCgv4vk16U6BbVcoQFmlVwAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="Operations[6]" type="UMLOperation" guid="2BWR7hLxq0qnCE/w/RGNJQAA"> -<XPD:ATTR name="Name" type="string">tvChannelDel</XPD:ATTR> -<XPD:REF name="Owner">JCgv4vk16U6BbVcoQFmlVwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[7]" type="UMLOperation" guid="hLAGGAR0S02yy3pwOmM1YgAA"> -<XPD:ATTR name="Name" type="string">tvChannelDelBySatID</XPD:ATTR> -<XPD:ATTR name="OwnerScope" type="UMLScopeKind">skClassifier</XPD:ATTR> -<XPD:REF name="Owner">JCgv4vk16U6BbVcoQFmlVwAA</XPD:REF> -<XPD:ATTR name="#Parameters" type="integer">1</XPD:ATTR> -<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="Se/I3L6vA0mlcLXlxgCKvAAA"> -<XPD:ATTR name="Name" type="string">id</XPD:ATTR> -<XPD:ATTR name="TypeExpression" type="string">int</XPD:ATTR> -<XPD:REF name="BehavioralFeature">hLAGGAR0S02yy3pwOmM1YgAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="Operations[8]" type="UMLOperation" guid="ZuqLn6kcZkCuwI1pleD9aAAA"> -<XPD:ATTR name="Name" type="string">getID</XPD:ATTR> -<XPD:REF name="Owner">JCgv4vk16U6BbVcoQFmlVwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[9]" type="UMLOperation" guid="jTykhLmNTkeBOYQWw2ruYgAA"> -<XPD:ATTR name="Name" type="string">getDVBTSID</XPD:ATTR> -<XPD:REF name="Owner">JCgv4vk16U6BbVcoQFmlVwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[10]" type="UMLOperation" guid="MatpiHkzdk2wjbBq+aAUWgAA"> -<XPD:ATTR name="Name" type="string">getDVBOrigNetID</XPD:ATTR> -<XPD:REF name="Owner">JCgv4vk16U6BbVcoQFmlVwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[11]" type="UMLOperation" guid="FI7G+6zrRESU1oT9AJMPeQAA"> -<XPD:ATTR name="Name" type="string">getFrontendID</XPD:ATTR> -<XPD:REF name="Owner">JCgv4vk16U6BbVcoQFmlVwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[12]" type="UMLOperation" guid="jjFnFzfEc02zGI29lwfBowAA"> -<XPD:ATTR name="Name" type="string">getTSSourceID</XPD:ATTR> -<XPD:REF name="Owner">JCgv4vk16U6BbVcoQFmlVwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[13]" type="UMLOperation" guid="ZV2LPyYw8E6IN0sEDpXjmAAA"> -<XPD:ATTR name="Name" type="string">getParams</XPD:ATTR> -<XPD:REF name="Owner">JCgv4vk16U6BbVcoQFmlVwAA</XPD:REF> -<XPD:ATTR name="#Parameters" type="integer">1</XPD:ATTR> -<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="79kvlpEjWUOei2KGS0rnzAAA"> -<XPD:ATTR name="Name" type="string">ret</XPD:ATTR> -<XPD:ATTR name="DirectionKind" type="UMLParameterDirectionKind">pdkReturn</XPD:ATTR> -<XPD:ATTR name="TypeExpression" type="string">TvChannelParams</XPD:ATTR> -<XPD:REF name="BehavioralFeature">ZV2LPyYw8E6IN0sEDpXjmAAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="Operations[14]" type="UMLOperation" guid="J2ss0Osk0UKtERrsNkIiBAAA"> -<XPD:ATTR name="Name" type="string">isDVBCMode</XPD:ATTR> -<XPD:REF name="Owner">JCgv4vk16U6BbVcoQFmlVwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[15]" type="UMLOperation" guid="1+Z8ijSmXUCS12XqcbMI8gAA"> -<XPD:ATTR name="Name" type="string">setFrequency</XPD:ATTR> -<XPD:REF name="Owner">JCgv4vk16U6BbVcoQFmlVwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[16]" type="UMLOperation" guid="wvTcWulSY0Cufl7PzpJmGAAA"> -<XPD:ATTR name="Name" type="string">setSymbolRate</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">设置符号率(QPSK/QAM模式) -@param symbolRate 符号率</XPD:ATTR> -<XPD:REF name="Owner">JCgv4vk16U6BbVcoQFmlVwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[17]" type="UMLOperation" guid="l/0TFp9Q8UKX15QErAbvMgAA"> -<XPD:ATTR name="Name" type="string">setPolarisation</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">设置极性(QPSK模式)</XPD:ATTR> -<XPD:REF name="Owner">JCgv4vk16U6BbVcoQFmlVwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[18]" type="UMLOperation" guid="b9Wu1ldLi0S2Z8NKmKvesgAA"> -<XPD:ATTR name="Name" type="string">setATVAudio</XPD:ATTR> -<XPD:REF name="Owner">JCgv4vk16U6BbVcoQFmlVwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[19]" type="UMLOperation" guid="GdCCR2raz0+G3e4/bN7OZQAA"> -<XPD:ATTR name="Name" type="string">setATVVideoFormat</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">修改模拟视频制式</XPD:ATTR> -<XPD:REF name="Owner">JCgv4vk16U6BbVcoQFmlVwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[20]" type="UMLOperation" guid="dSQ9xkQnBECjeLi09iGfaQAA"> -<XPD:ATTR name="Name" type="string">setATVAudioFormat</XPD:ATTR> -<XPD:REF name="Owner">JCgv4vk16U6BbVcoQFmlVwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[21]" type="UMLOperation" guid="9soE8Pso6EmGPUSAU1p4fgAA"> -<XPD:ATTR name="Name" type="string">setATVFreq</XPD:ATTR> -<XPD:REF name="Owner">JCgv4vk16U6BbVcoQFmlVwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[22]" type="UMLOperation" guid="mlHUjain7UyPF/GHGuUEQgAA"> -<XPD:ATTR name="Name" type="string">setATVAfcData</XPD:ATTR> -<XPD:REF name="Owner">JCgv4vk16U6BbVcoQFmlVwAA</XPD:REF> -</XPD:OBJ> -<XPD:ATTR name="#TypedFeatures" type="integer">1</XPD:ATTR> -<XPD:REF name="TypedFeatures[0]">Zh90wWMTSUm6ew2qIiAjFAAA</XPD:REF> -<XPD:ATTR name="#TypedParameters" type="integer">3</XPD:ATTR> -<XPD:REF name="TypedParameters[0]">ZpRrlyhz802QY2ObgoUqmwAA</XPD:REF> -<XPD:REF name="TypedParameters[1]">NFnoGSrnCk6OIIsCI5hKAAAA</XPD:REF> -<XPD:REF name="TypedParameters[2]">A7QPUTtNz0O45ex/ZBEL3wAA</XPD:REF> -<XPD:ATTR name="#Associations" type="integer">5</XPD:ATTR> -<XPD:REF name="Associations[0]">GZcPUasbnkG3pyGKV6NFnAAA</XPD:REF> -<XPD:REF name="Associations[1]">XvxorIQvl0aKnzyznjd1uwAA</XPD:REF> -<XPD:REF name="Associations[2]">BVpPYPY4V0KsTBJTRoLjyAAA</XPD:REF> -<XPD:REF name="Associations[3]">QwwfXlN26EahMaF2XDAvLAAA</XPD:REF> -<XPD:REF name="Associations[4]">C7X0ILbZrkWDVQ5Vc+PT/wAA</XPD:REF> -<XPD:ATTR name="#Attributes" type="integer">1</XPD:ATTR> -<XPD:OBJ name="Attributes[0]" type="UMLAttribute" guid="Z9Ui4868AE++l0of4VxduQAA"> -<XPD:ATTR name="Name" type="string">id</XPD:ATTR> -<XPD:REF name="Owner">JCgv4vk16U6BbVcoQFmlVwAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[5]" type="UMLClass" guid="gx40XIC9FkOG3iX3Oyxw8wAA"> -<XPD:ATTR name="Name" type="string">CTvGroup</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">Group对应DTV中的一个节目分组</XPD:ATTR> -<XPD:REF name="Namespace">T1P4Xv7L+UuEzFqU+iyS5wAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">8HnvkQxPk0OLqQXLeJ5MUgAA</XPD:REF> -<XPD:REF name="Views[1]">50xz0k8rgU+WfODoAi8aeQAA</XPD:REF> -<XPD:REF name="Views[2]">TR1rTShyhEG7ngh596L0kgAA</XPD:REF> -<XPD:REF name="Views[3]">GPl78wz82UaLho5xwfMqrQAA</XPD:REF> -<XPD:ATTR name="#Operations" type="integer">4</XPD:ATTR> -<XPD:OBJ name="Operations[0]" type="UMLOperation" guid="fRgLJCGVDUK1RuJPwHSaGwAA"> -<XPD:ATTR name="Name" type="string">selectByGroup</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">取得所有节目分组信息</XPD:ATTR> -<XPD:ATTR name="OwnerScope" type="UMLScopeKind">skClassifier</XPD:ATTR> -<XPD:REF name="Owner">gx40XIC9FkOG3iX3Oyxw8wAA</XPD:REF> -<XPD:ATTR name="#Parameters" type="integer">1</XPD:ATTR> -<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="A3kmDTyc/0aEXqkXlCeAFAAA"> -<XPD:ATTR name="Name" type="string">ret</XPD:ATTR> -<XPD:ATTR name="DirectionKind" type="UMLParameterDirectionKind">pdkReturn</XPD:ATTR> -<XPD:ATTR name="TypeExpression" type="string">vector<TvGroup></XPD:ATTR> -<XPD:REF name="BehavioralFeature">fRgLJCGVDUK1RuJPwHSaGwAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="Operations[1]" type="UMLOperation" guid="DqeBCx0GukCwnvjLeUhcogAA"> -<XPD:ATTR name="Name" type="string">addGroup</XPD:ATTR> -<XPD:ATTR name="OwnerScope" type="UMLScopeKind">skClassifier</XPD:ATTR> -<XPD:REF name="Owner">gx40XIC9FkOG3iX3Oyxw8wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[2]" type="UMLOperation" guid="Hq5DfJkwqUmxLMkjmPj4qQAA"> -<XPD:ATTR name="Name" type="string">deleteGroup</XPD:ATTR> -<XPD:ATTR name="OwnerScope" type="UMLScopeKind">skClassifier</XPD:ATTR> -<XPD:REF name="Owner">gx40XIC9FkOG3iX3Oyxw8wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[3]" type="UMLOperation" guid="5xVs/C/ycES9RQlY9VAsCgAA"> -<XPD:ATTR name="Name" type="string">editGroup</XPD:ATTR> -<XPD:ATTR name="OwnerScope" type="UMLScopeKind">skClassifier</XPD:ATTR> -<XPD:REF name="Owner">gx40XIC9FkOG3iX3Oyxw8wAA</XPD:REF> -</XPD:OBJ> -<XPD:ATTR name="#Associations" type="integer">1</XPD:ATTR> -<XPD:REF name="Associations[0]">Io3cINfhiE23pmiSxpS6swAA</XPD:REF> -<XPD:ATTR name="#Attributes" type="integer">1</XPD:ATTR> -<XPD:OBJ name="Attributes[0]" type="UMLAttribute" guid="e9OE1kuwcUuhtDW6AZvH1wAA"> -<XPD:REF name="Owner">gx40XIC9FkOG3iX3Oyxw8wAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[6]" type="UMLClass" guid="26RSzf3jmEWkDlRiFhl4OAAA"> -<XPD:ATTR name="Name" type="string">CTvEvent</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">对应每个Program一个时段的节目</XPD:ATTR> -<XPD:REF name="Namespace">T1P4Xv7L+UuEzFqU+iyS5wAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">7aPHkO59WEubHbpM/Djq/AAA</XPD:REF> -<XPD:REF name="Views[1]">+EOWTA5PrUyAEwB/ZHVnPAAA</XPD:REF> -<XPD:REF name="Views[2]">f0xyghRma028ShVYc8tbfwAA</XPD:REF> -<XPD:REF name="Views[3]">qpXdkd1nJ0ajRru7gzDFJwAA</XPD:REF> -<XPD:ATTR name="#Operations" type="integer">6</XPD:ATTR> -<XPD:OBJ name="Operations[0]" type="UMLOperation" guid="0db/IAr++UOdZquo78fTbgAA"> -<XPD:ATTR name="Name" type="string">TVEvent</XPD:ATTR> -<XPD:ATTR name="StereotypeProfile" type="string">UMLStandard</XPD:ATTR> -<XPD:ATTR name="StereotypeName" type="string">create</XPD:ATTR> -<XPD:REF name="Owner">26RSzf3jmEWkDlRiFhl4OAAA</XPD:REF> -<XPD:ATTR name="#Parameters" type="integer">1</XPD:ATTR> -<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="lSipwxb9AEu7dKbkvn8bCwAA"> -<XPD:ATTR name="Name" type="string">db</XPD:ATTR> -<XPD:ATTR name="TypeExpression" type="string">CTvDatabase</XPD:ATTR> -<XPD:REF name="BehavioralFeature">0db/IAr++UOdZquo78fTbgAA</XPD:REF> -<XPD:REF name="Type_">SX+aNGg0j0WtdR26+LZ7OgAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="Operations[1]" type="UMLOperation" guid="IaJ2KyC/H0W4mE3T5XcaJQAA"> -<XPD:ATTR name="Name" type="string">TVEvent</XPD:ATTR> -<XPD:ATTR name="StereotypeProfile" type="string">UMLStandard</XPD:ATTR> -<XPD:ATTR name="StereotypeName" type="string">destroy</XPD:ATTR> -<XPD:REF name="Owner">26RSzf3jmEWkDlRiFhl4OAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[2]" type="UMLOperation" guid="n6dU85krq0+Oca0Y2wayfAAA"> -<XPD:ATTR name="Name" type="string">selectByID</XPD:ATTR> -<XPD:ATTR name="OwnerScope" type="UMLScopeKind">skClassifier</XPD:ATTR> -<XPD:REF name="Owner">26RSzf3jmEWkDlRiFhl4OAAA</XPD:REF> -<XPD:ATTR name="#Parameters" type="integer">1</XPD:ATTR> -<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="JOwE9Bjhf0229aBZv0thuwAA"> -<XPD:ATTR name="Name" type="string">ret</XPD:ATTR> -<XPD:ATTR name="DirectionKind" type="UMLParameterDirectionKind">pdkReturn</XPD:ATTR> -<XPD:ATTR name="TypeExpression" type="string">CTvEvent</XPD:ATTR> -<XPD:REF name="BehavioralFeature">n6dU85krq0+Oca0Y2wayfAAA</XPD:REF> -<XPD:REF name="Type_">26RSzf3jmEWkDlRiFhl4OAAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="Operations[3]" type="UMLOperation" guid="E97BMkERRU2lIzjyqz++tAAA"> -<XPD:ATTR name="Name" type="string">getProgram</XPD:ATTR> -<XPD:REF name="Owner">26RSzf3jmEWkDlRiFhl4OAAA</XPD:REF> -<XPD:ATTR name="#Parameters" type="integer">1</XPD:ATTR> -<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="w4A7LCg5RUitVRoJ8EF5DwAA"> -<XPD:ATTR name="Name" type="string">ret</XPD:ATTR> -<XPD:ATTR name="DirectionKind" type="UMLParameterDirectionKind">pdkReturn</XPD:ATTR> -<XPD:ATTR name="TypeExpression" type="string">CTvProgram</XPD:ATTR> -<XPD:REF name="BehavioralFeature">E97BMkERRU2lIzjyqz++tAAA</XPD:REF> -<XPD:REF name="Type_">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="Operations[4]" type="UMLOperation" guid="R/cQwE4hs0yRPnKVjTffUQAA"> -<XPD:ATTR name="Name" type="string">getDVBViewAge</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">取得观看年龄(DVB) -@return 返回观看年龄,0表示无年龄限制</XPD:ATTR> -<XPD:REF name="Owner">26RSzf3jmEWkDlRiFhl4OAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[5]" type="UMLOperation" guid="3SmucpKb9ESg9TT4SKAe3AAA"> -<XPD:ATTR name="Name" type="string">getVChipRatings</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">取得V-Chip级别信息</XPD:ATTR> -<XPD:REF name="Owner">26RSzf3jmEWkDlRiFhl4OAAA</XPD:REF> -</XPD:OBJ> -<XPD:ATTR name="#TypedParameters" type="integer">2</XPD:ATTR> -<XPD:REF name="TypedParameters[0]">+v9VB9kIH02VZ9TgNHJJfQAA</XPD:REF> -<XPD:REF name="TypedParameters[1]">JOwE9Bjhf0229aBZv0thuwAA</XPD:REF> -<XPD:ATTR name="#Associations" type="integer">3</XPD:ATTR> -<XPD:REF name="Associations[0]">PhlKgbqPt0OClpwk2m9vswAA</XPD:REF> -<XPD:REF name="Associations[1]">zefo1Bu+v0e4gn9nUL+bSQAA</XPD:REF> -<XPD:REF name="Associations[2]">BSJLLgAd4kCusm/8BFZQMQAA</XPD:REF> -<XPD:ATTR name="#Attributes" type="integer">3</XPD:ATTR> -<XPD:OBJ name="Attributes[0]" type="UMLAttribute" guid="PMItdyz77UuIZwzHxmOd3AAA"> -<XPD:ATTR name="Name" type="string">id</XPD:ATTR> -<XPD:REF name="Owner">26RSzf3jmEWkDlRiFhl4OAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Attributes[1]" type="UMLAttribute" guid="nCSrn+xVyUGe6iyd/E/GDwAA"> -<XPD:ATTR name="Name" type="string">name</XPD:ATTR> -<XPD:ATTR name="TypeExpression" type="string">String</XPD:ATTR> -<XPD:REF name="Owner">26RSzf3jmEWkDlRiFhl4OAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Attributes[2]" type="UMLAttribute" guid="xT0LK2eQ9EGzJfCHW9IJ9wAA"> -<XPD:ATTR name="Name" type="string">program</XPD:ATTR> -<XPD:ATTR name="TypeExpression" type="string">CTvProgram</XPD:ATTR> -<XPD:REF name="Type_">9naBHAA+hkmkNtZzyXP1/wAA</XPD:REF> -<XPD:REF name="Owner">26RSzf3jmEWkDlRiFhl4OAAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[7]" type="UMLClass" guid="UiYOh8D78E22qQeFeDZpLAAA"> -<XPD:ATTR name="Name" type="string">CTvConfig</XPD:ATTR> -<XPD:REF name="Namespace">T1P4Xv7L+UuEzFqU+iyS5wAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">vYDCfUgYq0KaBSDnxbpYVgAA</XPD:REF> -<XPD:REF name="Views[1]">KTNQfnqIy0q3wV+ARVtV9gAA</XPD:REF> -<XPD:REF name="Views[2]">7Pq+TJVLy06gA8T6r5wMawAA</XPD:REF> -<XPD:REF name="Views[3]">Fn0oKpD7lUyNbDw59UyRygAA</XPD:REF> -<XPD:ATTR name="#Associations" type="integer">1</XPD:ATTR> -<XPD:REF name="Associations[0]">usmo/t5V5UGA31IdVHUKyQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[8]" type="UMLClass" guid="b8JuO/0C0Eq0GnJ0Q/tEWQAA"> -<XPD:ATTR name="Name" type="string">CTvBooking</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">预约播放 -预约录像</XPD:ATTR> -<XPD:REF name="Namespace">T1P4Xv7L+UuEzFqU+iyS5wAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">Th+ZwPCIw0CZjtawrnGPrQAA</XPD:REF> -<XPD:REF name="Views[1]">LL3KL7SUuEyu4pY6NT57NAAA</XPD:REF> -<XPD:REF name="Views[2]">dCkq+XCQgkaH1Q901KclHQAA</XPD:REF> -<XPD:REF name="Views[3]">+Bzptjmx3kWzAYT9fN/rxQAA</XPD:REF> -<XPD:ATTR name="#Operations" type="integer">8</XPD:ATTR> -<XPD:OBJ name="Operations[0]" type="UMLOperation" guid="m+gfn/ntpkybEdFBM5znlgAA"> -<XPD:ATTR name="Name" type="string">TVBooking</XPD:ATTR> -<XPD:ATTR name="StereotypeProfile" type="string">UMLStandard</XPD:ATTR> -<XPD:ATTR name="StereotypeName" type="string">create</XPD:ATTR> -<XPD:REF name="Owner">b8JuO/0C0Eq0GnJ0Q/tEWQAA</XPD:REF> -<XPD:ATTR name="#Parameters" type="integer">1</XPD:ATTR> -<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="lc6uST5/Mk6WfIuIfATlsgAA"> -<XPD:ATTR name="Name" type="string">db</XPD:ATTR> -<XPD:ATTR name="TypeExpression" type="string">CTvDatabase</XPD:ATTR> -<XPD:REF name="BehavioralFeature">m+gfn/ntpkybEdFBM5znlgAA</XPD:REF> -<XPD:REF name="Type_">SX+aNGg0j0WtdR26+LZ7OgAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="Operations[1]" type="UMLOperation" guid="QqLeWhZJc0CLub0IjxjyywAA"> -<XPD:ATTR name="Name" type="string">TVBooking</XPD:ATTR> -<XPD:ATTR name="StereotypeProfile" type="string">UMLStandard</XPD:ATTR> -<XPD:ATTR name="StereotypeName" type="string">destroy</XPD:ATTR> -<XPD:REF name="Owner">b8JuO/0C0Eq0GnJ0Q/tEWQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[2]" type="UMLOperation" guid="Tn9evQiVdUWS5ClifY+LnwAA"> -<XPD:ATTR name="Name" type="string">selectByID</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">根据记录ID查找指定TVBooking</XPD:ATTR> -<XPD:REF name="Owner">b8JuO/0C0Eq0GnJ0Q/tEWQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[3]" type="UMLOperation" guid="LZuyv0amBUa1JHWrCnDVeAAA"> -<XPD:ATTR name="Name" type="string">selectRecordBookingsByStatus</XPD:ATTR> -<XPD:REF name="Owner">b8JuO/0C0Eq0GnJ0Q/tEWQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[4]" type="UMLOperation" guid="GmUmSDVcrEabb38Mr6otqQAA"> -<XPD:ATTR name="Name" type="string">selectPlayBookingsByStatus</XPD:ATTR> -<XPD:REF name="Owner">b8JuO/0C0Eq0GnJ0Q/tEWQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[5]" type="UMLOperation" guid="/JwIOjuS30SKen+tINIeIQAA"> -<XPD:ATTR name="Name" type="string">bookProgram</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">预约一个Program</XPD:ATTR> -<XPD:REF name="Owner">b8JuO/0C0Eq0GnJ0Q/tEWQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[6]" type="UMLOperation" guid="06m4LFRvq0WqF2UaQPilJwAA"> -<XPD:ATTR name="Name" type="string">bookEvent</XPD:ATTR> -<XPD:REF name="Owner">b8JuO/0C0Eq0GnJ0Q/tEWQAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[7]" type="UMLOperation" guid="5r22Uycz1E6G3LtVFBjRzQAA"> -<XPD:ATTR name="Name" type="string">delete</XPD:ATTR> -<XPD:REF name="Owner">b8JuO/0C0Eq0GnJ0Q/tEWQAA</XPD:REF> -</XPD:OBJ> -<XPD:ATTR name="#Associations" type="integer">1</XPD:ATTR> -<XPD:REF name="Associations[0]">AfVgLfyALEyP98guAbYHUAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[9]" type="UMLClass" guid="3uD8ZK44vEi6X3Yo5n4G3wAA"> -<XPD:ATTR name="Name" type="string">CTvRegion</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string"> TV 区域 - 可以获得每个区域的频率列表等信息</XPD:ATTR> -<XPD:REF name="Namespace">T1P4Xv7L+UuEzFqU+iyS5wAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">ybciiFK3jEO6SdfdRt6uAgAA</XPD:REF> -<XPD:REF name="Views[1]">AL2e0wMT+0K0AC6gZuuhdwAA</XPD:REF> -<XPD:REF name="Views[2]">zIfIWkZ3Lkiq2O9aOGiU/gAA</XPD:REF> -<XPD:REF name="Views[3]">exyb4FNp+Ue9ROAGwoQFcwAA</XPD:REF> -<XPD:ATTR name="#Operations" type="integer">7</XPD:ATTR> -<XPD:OBJ name="Operations[0]" type="UMLOperation" guid="ujBTxs7XQU2sxrOeErOlLAAA"> -<XPD:ATTR name="Name" type="string">TVRegion</XPD:ATTR> -<XPD:ATTR name="StereotypeProfile" type="string">UMLStandard</XPD:ATTR> -<XPD:ATTR name="StereotypeName" type="string">create</XPD:ATTR> -<XPD:REF name="Owner">3uD8ZK44vEi6X3Yo5n4G3wAA</XPD:REF> -<XPD:ATTR name="#Parameters" type="integer">1</XPD:ATTR> -<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="eQIZ7HOvJESQdc0nGhqnrwAA"> -<XPD:ATTR name="Name" type="string">db</XPD:ATTR> -<XPD:ATTR name="TypeExpression" type="string">CTvDatabase</XPD:ATTR> -<XPD:REF name="BehavioralFeature">ujBTxs7XQU2sxrOeErOlLAAA</XPD:REF> -<XPD:REF name="Type_">SX+aNGg0j0WtdR26+LZ7OgAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="Operations[1]" type="UMLOperation" guid="AIgKz2rgMU2bWNgoO2rmngAA"> -<XPD:ATTR name="Name" type="string">TVRegion</XPD:ATTR> -<XPD:ATTR name="StereotypeProfile" type="string">UMLStandard</XPD:ATTR> -<XPD:ATTR name="StereotypeName" type="string">destroy</XPD:ATTR> -<XPD:REF name="Owner">3uD8ZK44vEi6X3Yo5n4G3wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[2]" type="UMLOperation" guid="1mlb6r4cZkSv6mS9OhiHiAAA"> -<XPD:ATTR name="Name" type="string">selectByID</XPD:ATTR> -<XPD:ATTR name="OwnerScope" type="UMLScopeKind">skClassifier</XPD:ATTR> -<XPD:REF name="Owner">3uD8ZK44vEi6X3Yo5n4G3wAA</XPD:REF> -<XPD:ATTR name="#Parameters" type="integer">1</XPD:ATTR> -<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="KaZtVGGTiEm4B9lL22FEtgAA"> -<XPD:ATTR name="Name" type="string">ret</XPD:ATTR> -<XPD:ATTR name="DirectionKind" type="UMLParameterDirectionKind">pdkReturn</XPD:ATTR> -<XPD:ATTR name="TypeExpression" type="string">CTvRegion</XPD:ATTR> -<XPD:REF name="BehavioralFeature">1mlb6r4cZkSv6mS9OhiHiAAA</XPD:REF> -<XPD:REF name="Type_">3uD8ZK44vEi6X3Yo5n4G3wAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="Operations[3]" type="UMLOperation" guid="d7lFBHriY0e22/gy989mbgAA"> -<XPD:ATTR name="Name" type="string">selectByName</XPD:ATTR> -<XPD:REF name="Owner">3uD8ZK44vEi6X3Yo5n4G3wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[4]" type="UMLOperation" guid="4bMFZq1Ayk+uxljdLs5nigAA"> -<XPD:ATTR name="Name" type="string">selectByCountry</XPD:ATTR> -<XPD:REF name="Owner">3uD8ZK44vEi6X3Yo5n4G3wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[5]" type="UMLOperation" guid="gN4TbpRxGkS8N+OPpekKxQAA"> -<XPD:ATTR name="Name" type="string">getAllCountry</XPD:ATTR> -<XPD:REF name="Owner">3uD8ZK44vEi6X3Yo5n4G3wAA</XPD:REF> -<XPD:ATTR name="#Parameters" type="integer">1</XPD:ATTR> -<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="owFuhgapFk+E9YYtCGoeqgAA"> -<XPD:ATTR name="Name" type="string">ret</XPD:ATTR> -<XPD:ATTR name="TypeExpression" type="string">vector<String></XPD:ATTR> -<XPD:REF name="BehavioralFeature">gN4TbpRxGkS8N+OPpekKxQAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="Operations[6]" type="UMLOperation" guid="jk0qAxv5u0yw7WgwL+rscQAA"> -<XPD:ATTR name="Name" type="string">getChannelParams</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">取得该Region的信号源频率参数列表 -@return 返回信号源频率参数列表</XPD:ATTR> -<XPD:REF name="Owner">3uD8ZK44vEi6X3Yo5n4G3wAA</XPD:REF> -<XPD:ATTR name="#Parameters" type="integer">1</XPD:ATTR> -<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="cgdkfeW2SE21ZEOaHuLc7gAA"> -<XPD:ATTR name="Name" type="string">ret</XPD:ATTR> -<XPD:ATTR name="DirectionKind" type="UMLParameterDirectionKind">pdkReturn</XPD:ATTR> -<XPD:ATTR name="TypeExpression" type="string">TVChannelParams</XPD:ATTR> -<XPD:REF name="BehavioralFeature">jk0qAxv5u0yw7WgwL+rscQAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:ATTR name="#TypedParameters" type="integer">1</XPD:ATTR> -<XPD:REF name="TypedParameters[0]">KaZtVGGTiEm4B9lL22FEtgAA</XPD:REF> -<XPD:ATTR name="#Associations" type="integer">1</XPD:ATTR> -<XPD:REF name="Associations[0]">l6Lg/NJG5UWu+7ALxaVP3gAA</XPD:REF> -<XPD:ATTR name="#Attributes" type="integer">3</XPD:ATTR> -<XPD:OBJ name="Attributes[0]" type="UMLAttribute" guid="qz9HpzuB70u9CKoB8GAVTQAA"> -<XPD:ATTR name="Name" type="string">id</XPD:ATTR> -<XPD:REF name="Owner">3uD8ZK44vEi6X3Yo5n4G3wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Attributes[1]" type="UMLAttribute" guid="20sWt8adtki4R3t6aKZcXQAA"> -<XPD:ATTR name="Name" type="string">name</XPD:ATTR> -<XPD:ATTR name="TypeExpression" type="string">String</XPD:ATTR> -<XPD:REF name="Owner">3uD8ZK44vEi6X3Yo5n4G3wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Attributes[2]" type="UMLAttribute" guid="ubg2Td5H2E6xsn9yTlb4FgAA"> -<XPD:ATTR name="Name" type="string">country</XPD:ATTR> -<XPD:ATTR name="TypeExpression" type="string">String</XPD:ATTR> -<XPD:REF name="Owner">3uD8ZK44vEi6X3Yo5n4G3wAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[10]" type="UMLClass" guid="iUy0YZgyREC+o54lTQptaAAA"> -<XPD:ATTR name="Name" type="string">CTvSatellite</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">TV Satellite相关信息</XPD:ATTR> -<XPD:REF name="Namespace">T1P4Xv7L+UuEzFqU+iyS5wAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">tzICJ64LmUSx1fvEy4dHZQAA</XPD:REF> -<XPD:REF name="Views[1]">yCTnlkoiRkSszYJDHrqQuwAA</XPD:REF> -<XPD:REF name="Views[2]">phU5m2tyh0yMlhsYRPe6dwAA</XPD:REF> -<XPD:REF name="Views[3]">S8DZ5jxQq0+WFWPFnQy7iAAA</XPD:REF> -<XPD:ATTR name="#Associations" type="integer">2</XPD:ATTR> -<XPD:REF name="Associations[0]">ULQw0JNjPE2758pFWlo+MQAA</XPD:REF> -<XPD:REF name="Associations[1]">bObyymjPEkeQZSoHCKpP2QAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[11]" type="UMLClass" guid="/LI4+1GTjEagI/wLEFpVSQAA"> -<XPD:ATTR name="Name" type="string">CTvDimension</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">TV ATSC rating dimension</XPD:ATTR> -<XPD:REF name="Namespace">T1P4Xv7L+UuEzFqU+iyS5wAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">hzoiTuCQqEuArZEejfwdnQAA</XPD:REF> -<XPD:REF name="Views[1]">PdTrEGRJOEiEJyD2I9IzJgAA</XPD:REF> -<XPD:REF name="Views[2]">VbdqX2NLOkK2DTLhOA91OwAA</XPD:REF> -<XPD:REF name="Views[3]">K00/VzyqZUmltiuaKWLgAQAA</XPD:REF> -<XPD:ATTR name="#Associations" type="integer">2</XPD:ATTR> -<XPD:REF name="Associations[0]">aYL27tYOR02se3g//aEBeAAA</XPD:REF> -<XPD:REF name="Associations[1]">zCPl48BYx0CFRkp8Jj5mogAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[12]" type="UMLClass" guid="K+kTKNnFak+/Lo9L/RD0ugAA"> -<XPD:ATTR name="Name" type="string">CTvChannelParams</XPD:ATTR> -<XPD:REF name="Namespace">T1P4Xv7L+UuEzFqU+iyS5wAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">wu+9+Z2tqE2B3qchWKoWdQAA</XPD:REF> -<XPD:REF name="Views[1]">KAuxxnmqhkmQ7MLBFq8lRgAA</XPD:REF> -<XPD:REF name="Views[2]">Ynggyopqt02II9Rzg7q1VQAA</XPD:REF> -<XPD:REF name="Views[3]">PmvllpBms0ifaPkwzqXvOAAA</XPD:REF> -<XPD:ATTR name="#Operations" type="integer">13</XPD:ATTR> -<XPD:OBJ name="Operations[0]" type="UMLOperation" guid="kX5mh2hT8UCWJLBSwRAVcgAA"> -<XPD:ATTR name="Name" type="string">TVChannelParams</XPD:ATTR> -<XPD:ATTR name="StereotypeProfile" type="string">UMLStandard</XPD:ATTR> -<XPD:ATTR name="StereotypeName" type="string">create</XPD:ATTR> -<XPD:REF name="Owner">K+kTKNnFak+/Lo9L/RD0ugAA</XPD:REF> -<XPD:ATTR name="#Parameters" type="integer">1</XPD:ATTR> -<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="Lv2eTshDS0qHu/TtzYTS/QAA"> -<XPD:ATTR name="Name" type="string">mode</XPD:ATTR> -<XPD:REF name="BehavioralFeature">kX5mh2hT8UCWJLBSwRAVcgAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="Operations[1]" type="UMLOperation" guid="bqibYQS6Yk2XKFVNjvPY/QAA"> -<XPD:ATTR name="Name" type="string">TVChannelParams</XPD:ATTR> -<XPD:ATTR name="StereotypeProfile" type="string">UMLStandard</XPD:ATTR> -<XPD:ATTR name="StereotypeName" type="string">destroy</XPD:ATTR> -<XPD:REF name="Owner">K+kTKNnFak+/Lo9L/RD0ugAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[2]" type="UMLOperation" guid="g8684eMuVEODZq64tkbFKwAA"> -<XPD:ATTR name="Name" type="string">CreatedvbcParams</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">类似还有其它channel参数创建静态接口</XPD:ATTR> -<XPD:ATTR name="OwnerScope" type="UMLScopeKind">skClassifier</XPD:ATTR> -<XPD:REF name="Owner">K+kTKNnFak+/Lo9L/RD0ugAA</XPD:REF> -<XPD:ATTR name="#Parameters" type="integer">1</XPD:ATTR> -<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="dgzVycSB3EK9p7gNlVzXuAAA"> -<XPD:ATTR name="Name" type="string">ret</XPD:ATTR> -<XPD:ATTR name="DirectionKind" type="UMLParameterDirectionKind">pdkReturn</XPD:ATTR> -<XPD:ATTR name="TypeExpression" type="string">CTvChannelParams</XPD:ATTR> -<XPD:REF name="BehavioralFeature">g8684eMuVEODZq64tkbFKwAA</XPD:REF> -<XPD:REF name="Type_">K+kTKNnFak+/Lo9L/RD0ugAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="Operations[3]" type="UMLOperation" guid="qzQZnEnCj0edzMmQ9W+TUgAA"> -<XPD:ATTR name="Name" type="string">channelCurAllbandParams</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">创建当前所有通道参数 -@param region 区域 -@param mode 通道模式 -@return 返回新创建的参数</XPD:ATTR> -<XPD:REF name="Owner">K+kTKNnFak+/Lo9L/RD0ugAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[4]" type="UMLOperation" guid="sUoQkkeSDUicDjvihzE17wAA"> -<XPD:ATTR name="Name" type="string">setATVAudio</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">修改模拟音频</XPD:ATTR> -<XPD:REF name="Owner">K+kTKNnFak+/Lo9L/RD0ugAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[5]" type="UMLOperation" guid="Zp/uaKhNykq6I0DLIqMs6QAA"> -<XPD:ATTR name="Name" type="string">setATVVideoFormat</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">修改模拟视频制式</XPD:ATTR> -<XPD:REF name="Owner">K+kTKNnFak+/Lo9L/RD0ugAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[6]" type="UMLOperation" guid="W6/Dh7vCMEOK5gCFWgvBuQAA"> -<XPD:ATTR name="Name" type="string">setATVAudioFormat</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string">修改模拟音频制式</XPD:ATTR> -<XPD:REF name="Owner">K+kTKNnFak+/Lo9L/RD0ugAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[7]" type="UMLOperation" guid="q3e/rtfy+kSDpxAL+JLUAwAA"> -<XPD:ATTR name="Name" type="string">getMode</XPD:ATTR> -<XPD:REF name="Owner">K+kTKNnFak+/Lo9L/RD0ugAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[8]" type="UMLOperation" guid="21JdwhpouEyYG3lZnsC7PQAA"> -<XPD:ATTR name="Name" type="string">isDVBMode</XPD:ATTR> -<XPD:REF name="Owner">K+kTKNnFak+/Lo9L/RD0ugAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[9]" type="UMLOperation" guid="MCre8DdGnEO6NtacO4PxcwAA"> -<XPD:ATTR name="Name" type="string">getFrequency</XPD:ATTR> -<XPD:REF name="Owner">K+kTKNnFak+/Lo9L/RD0ugAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[10]" type="UMLOperation" guid="kb+kpTCHVEKx7jv8aHBGTQAA"> -<XPD:ATTR name="Name" type="string">getAudioMode</XPD:ATTR> -<XPD:REF name="Owner">K+kTKNnFak+/Lo9L/RD0ugAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[11]" type="UMLOperation" guid="tYagO7r1C0yRLvAhDROpOQAA"> -<XPD:ATTR name="Name" type="string">getBandwidth</XPD:ATTR> -<XPD:REF name="Owner">K+kTKNnFak+/Lo9L/RD0ugAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Operations[12]" type="UMLOperation" guid="ugcb6A9/j02nfYGa/WNK2QAA"> -<XPD:ATTR name="Name" type="string">==</XPD:ATTR> -<XPD:ATTR name="StereotypeProfile" type="string">Cpp</XPD:ATTR> -<XPD:ATTR name="StereotypeName" type="string">CppOperator</XPD:ATTR> -<XPD:REF name="Owner">K+kTKNnFak+/Lo9L/RD0ugAA</XPD:REF> -<XPD:ATTR name="#Parameters" type="integer">1</XPD:ATTR> -<XPD:OBJ name="Parameters[0]" type="UMLParameter" guid="WRmMAQd1vkKgOwOy5hHXbwAA"> -<XPD:ATTR name="Name" type="string">param</XPD:ATTR> -<XPD:ATTR name="TypeExpression" type="string">CTvChannelParams</XPD:ATTR> -<XPD:REF name="BehavioralFeature">ugcb6A9/j02nfYGa/WNK2QAA</XPD:REF> -<XPD:REF name="Type_">K+kTKNnFak+/Lo9L/RD0ugAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:ATTR name="#TypedParameters" type="integer">2</XPD:ATTR> -<XPD:REF name="TypedParameters[0]">dgzVycSB3EK9p7gNlVzXuAAA</XPD:REF> -<XPD:REF name="TypedParameters[1]">WRmMAQd1vkKgOwOy5hHXbwAA</XPD:REF> -<XPD:ATTR name="#Associations" type="integer">2</XPD:ATTR> -<XPD:REF name="Associations[0]">Dzfwehs+P0e8CyC/holLewAA</XPD:REF> -<XPD:REF name="Associations[1]">+M+2f65R0UCJH6UP90YGAQAA</XPD:REF> -<XPD:ATTR name="#Attributes" type="integer">11</XPD:ATTR> -<XPD:OBJ name="Attributes[0]" type="UMLAttribute" guid="vd9GmSHi8kmIG7Uv183sQwAA"> -<XPD:ATTR name="Name" type="string">mode</XPD:ATTR> -<XPD:ATTR name="Visibility" type="UMLVisibilityKind">vkPrivate</XPD:ATTR> -<XPD:REF name="Owner">K+kTKNnFak+/Lo9L/RD0ugAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Attributes[1]" type="UMLAttribute" guid="8PpQj0CQ8UaM6aUQTqHY+wAA"> -<XPD:ATTR name="Name" type="string">frequency</XPD:ATTR> -<XPD:ATTR name="Visibility" type="UMLVisibilityKind">vkPrivate</XPD:ATTR> -<XPD:REF name="Owner">K+kTKNnFak+/Lo9L/RD0ugAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Attributes[2]" type="UMLAttribute" guid="mixkGHhILEOQrR9Hbe6XtwAA"> -<XPD:ATTR name="Name" type="string">symbolRate</XPD:ATTR> -<XPD:ATTR name="Visibility" type="UMLVisibilityKind">vkPrivate</XPD:ATTR> -<XPD:REF name="Owner">K+kTKNnFak+/Lo9L/RD0ugAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Attributes[3]" type="UMLAttribute" guid="2yJw+lrLQE26CKqlL4qTawAA"> -<XPD:ATTR name="Name" type="string">modulation</XPD:ATTR> -<XPD:ATTR name="Visibility" type="UMLVisibilityKind">vkPrivate</XPD:ATTR> -<XPD:REF name="Owner">K+kTKNnFak+/Lo9L/RD0ugAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Attributes[4]" type="UMLAttribute" guid="nFx/MMjsyEq2iVvWRpY1pwAA"> -<XPD:ATTR name="Name" type="string">bandwidth</XPD:ATTR> -<XPD:ATTR name="Visibility" type="UMLVisibilityKind">vkPrivate</XPD:ATTR> -<XPD:REF name="Owner">K+kTKNnFak+/Lo9L/RD0ugAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Attributes[5]" type="UMLAttribute" guid="0Zj58ngjk0KvB5ZV2+v12gAA"> -<XPD:ATTR name="Name" type="string">audio</XPD:ATTR> -<XPD:ATTR name="Visibility" type="UMLVisibilityKind">vkPrivate</XPD:ATTR> -<XPD:REF name="Owner">K+kTKNnFak+/Lo9L/RD0ugAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Attributes[6]" type="UMLAttribute" guid="1CdqUE68HkCKHC0wHU0OugAA"> -<XPD:ATTR name="Name" type="string">standard</XPD:ATTR> -<XPD:REF name="Owner">K+kTKNnFak+/Lo9L/RD0ugAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Attributes[7]" type="UMLAttribute" guid="qCoIFqRZckuS8ETuBEJ63gAA"> -<XPD:ATTR name="Name" type="string">afc_data</XPD:ATTR> -<XPD:REF name="Owner">K+kTKNnFak+/Lo9L/RD0ugAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Attributes[8]" type="UMLAttribute" guid="RXpFXMpRb0G050iBJ169CQAA"> -<XPD:ATTR name="Name" type="string">sat_id</XPD:ATTR> -<XPD:REF name="Owner">K+kTKNnFak+/Lo9L/RD0ugAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Attributes[9]" type="UMLAttribute" guid="KbUJ3zQudkuMliodZgdwoAAA"> -<XPD:ATTR name="Name" type="string">sat_polarisation</XPD:ATTR> -<XPD:REF name="Owner">K+kTKNnFak+/Lo9L/RD0ugAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Attributes[10]" type="UMLAttribute" guid="I6rm/D6pekmaDTzLw9FT/wAA"> -<XPD:ATTR name="Name" type="string">Attribute2</XPD:ATTR> -<XPD:REF name="Owner">K+kTKNnFak+/Lo9L/RD0ugAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[13]" type="UMLSignal" guid="IK4ie4RbI0mW+299Nj4+3AAA"> -<XPD:ATTR name="Name" type="string">CListen</XPD:ATTR> -<XPD:ATTR name="Documentation" type="string"> /**正在播放的节目因收看等级不够被停止*/ - public static final int TYPE_PROGRAM_BLOCK = 1; - /**正在播放的节目从BLOCK状态恢复*/ - public static final int TYPE_PROGRAM_UNBLOCK = 2; - /**没有信号*/ - public static final int TYPE_SIGNAL_LOST = 3; - /**信号恢复*/ - public static final int TYPE_SIGNAL_RESUME = 4; - /**节目数据停止*/ - public static final int TYPE_DATA_LOST = 5; - /**节目数据恢复*/ - public static final int TYPE_DATA_RESUME = 6; - /**预约提醒*/ - public static final int TYPE_BOOKING_REMIND = 7; - /**预约开始*/ - public static final int TYPE_BOOKING_START = 8; - /**配置项被修改*/ - public static final int TYPE_CONFIG_CHANGED = 9; - /**频道搜索进度*/ - public static final int TYPE_SCAN_PROGRESS = 10; - /**频道搜索结束,开始存储 */ - public static final int TYPE_SCAN_STORE_BEGIN = 11; - /**频道搜索存储完毕*/ - public static final int TYPE_SCAN_STORE_END = 12; - /**频道搜索完成*/ - public static final int TYPE_SCAN_END = 13; - /**正在播放节目相关信息更新*/ - public static final int TYPE_PROGRAM_UPDATE = 14; - /**节目开始播放*/ - public static final int TYPE_PROGRAM_START = 15; - /**节目停止播放*/ - public static final int TYPE_PROGRAM_STOP = 16; - /**TV系统时间更新*/ - public static final int TYPE_TIME_UPDATE = 17; - /**事件信息更新*/ - public static final int TYPE_EVENT_UPDATE = 18; - /**输入源切换*/ - public static final int TYPE_INPUT_SOURCE_CHANGED = 19; - /**请求播放节目号*/ - public static final int TYPE_PROGRAM_NUMBER = 20; - /**录像列表更新*/ - public static final int TYPE_RECORDS_UPDATE = 21; - /**录像冲突*/ - public static final int TYPE_RECORD_CONFLICT = 22; - /**录像已结束*/ - public static final int TYPE_RECORD_END = 23; - /**VGA信号调整成功*/ - public static final int TYPE_VGA_ADJUST_OK = 24; - /**VGA信号调整失败*/ - public static final int TYPE_VGA_ADJUST_FAILED = 25; - /**VGA信号调整中*/ - public static final int TYPE_VGA_ADJUST_DOING = 26; - /**信号改变*/ - public static final int TYPE_SIG_CHANGE = 27; - /**盲扫进度*/ - public static final int TYPE_BLINDSCAN_PROGRESS = 28; - /**盲扫新Channel*/ - public static final int TYPE_BLINDSCAN_NEWCHANNEL = 29; - /**盲扫结束*/ - public static final int TYPE_BLINDSCAN_END = 30; - /**卫星设备LNB与Switch配置生效*/ - public static final int TYPE_SEC_LNBSSWITCHCFGVALID = 31; - /**diseqc马达停止转动*/ - public static final int TYPE_SEC_POSITIONERSTOP= 32; - /**diseqc马达禁止限制*/ - public static final int TYPE_SEC_POSITIONERDISABLELIMIT= 33; - /**diseqc马达东向限制设置*/ - public static final int TYPE_SEC_POSITIONEREASTLIMIT= 34; - /**diseqc马达西向限制设置*/ - public static final int TYPE_SEC_POSITIONERWESTLIMIT= 35; - /**diseqc马达东向转动*/ - public static final int TYPE_SEC_POSITIONEREAST= 36; - /**diseqc马达西向转动*/ - public static final int TYPE_SEC_POSITIONERWEST= 37; - /**diseqc马达存储位置*/ - public static final int TYPE_SEC_POSITIONERSTORE= 38; - /**diseqc马达转动到指定位置*/ - public static final int TYPE_SEC_POSITIONERGOTO= 39; - /**diseqc马达转动根据本地经纬度以及卫星经度*/ - public static final int TYPE_SEC_POSITIONERGOTOX= 40; - /**切换至新节目*/ - public static final int TYPE_PROGRAM_SWITCH = 41; - /**在当前频点搜索DTV频道*/ - public static final int TYPE_SCAN_DTV_CHANNEL = 42; - /**数据库导入/导出转换操作开始*/ - public static final int TYPE_TRANSFORM_DB_START = 43; - /**数据库导入/导出转换操作完成*/ - public static final int TYPE_TRANSFORM_DB_END = 44; - /**pvr/timeshifting回放开始*/ - public static final int TYPE_PLAYBACK_START = 45; - /**pvr/timeshifting回放结束*/ - public static final int TYPE_PLAYBACK_STOP = 46; - /**节目音视频因被加扰而无法正常播放*/ - public static final int TYPE_PROGRAM_SCRAMBLED = 47; - - - -流的变化 -</XPD:ATTR> -<XPD:REF name="Namespace">T1P4Xv7L+UuEzFqU+iyS5wAA</XPD:REF> -</XPD:OBJ> -<XPD:ATTR name="#Associations" type="integer">4</XPD:ATTR> -<XPD:REF name="Associations[0]">TolxJOTDCkO5nyLC6ipkAwAA</XPD:REF> -<XPD:REF name="Associations[1]">KeKc5deyJkKjIbzodSAF8QAA</XPD:REF> -<XPD:REF name="Associations[2]">osliKvkWrU6Jd0FLz/mZngAA</XPD:REF> -<XPD:REF name="Associations[3]">0WvOUzDyAEKgjZCRSx5J8gAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[1]" type="UMLPackage" guid="ZRumjrTwgUamBDOstkagPgAA"> -<XPD:ATTR name="Name" type="string">atv</XPD:ATTR> -<XPD:REF name="Namespace">bnJ8ggSchket3/t1l7Kx4wAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">1</XPD:ATTR> -<XPD:REF name="Views[0]">R7RBkUeb+E+5S8gvJN8+QQAA</XPD:REF> -<XPD:ATTR name="#Associations" type="integer">2</XPD:ATTR> -<XPD:REF name="Associations[0]">XKFQZaAIH0SxD7YBXgkK0wAA</XPD:REF> -<XPD:REF name="Associations[1]">nzRPyOcacU2J9Jf/0lCmawAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[23]" type="UMLAssociation" guid="1PikxOdVcU2P6grgcwgRvQAA"> -<XPD:REF name="Namespace">dZ4UyetzSE+rDT9vQthF9wAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">Z3PDc4i/1UCiaxni9RpD2wAA</XPD:REF> -<XPD:REF name="Views[1]">mhm++LaJkk6lJzcTz7hSFgAA</XPD:REF> -<XPD:REF name="Views[2]">IxT95vhnIEyr12fdRQskKQAA</XPD:REF> -<XPD:REF name="Views[3]">d+KXspkLsEa/YezZSZ7YZAAA</XPD:REF> -<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR> -<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="AfVgLfyALEyP98guAbYHUAAA"> -<XPD:REF name="Association">1PikxOdVcU2P6grgcwgRvQAA</XPD:REF> -<XPD:REF name="Participant">b8JuO/0C0Eq0GnJ0Q/tEWQAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">08HUrDXL5EahpEFi9GJ9yQAA</XPD:REF> -<XPD:REF name="Views[1]">QRLcMMAOqES9/c4itcB3vAAA</XPD:REF> -<XPD:REF name="Views[2]">mQFH13/vQUucR5en5l/dUwAA</XPD:REF> -<XPD:REF name="Views[3]">m0oKw9kT5k2CSLEOl9tV+gAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="Fd/cvRV12USE+Vu6oJsMOgAA"> -<XPD:REF name="Association">1PikxOdVcU2P6grgcwgRvQAA</XPD:REF> -<XPD:REF name="Participant">SX+aNGg0j0WtdR26+LZ7OgAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">HxD2Y75aWkSp4d/0R6KiBgAA</XPD:REF> -<XPD:REF name="Views[1]">K5rMwb6Iyka5HDC+pxIZOwAA</XPD:REF> -<XPD:REF name="Views[2]">GfMJbs1/nkShjuqnA/8BBAAA</XPD:REF> -<XPD:REF name="Views[3]">jXmYJVpZxkCkrM3yJ0eHmgAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[24]" type="UMLAssociation" guid="6uW6VAT+jEG9Vy3cmRxPvgAA"> -<XPD:REF name="Namespace">dZ4UyetzSE+rDT9vQthF9wAA</XPD:REF> -<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR> -<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="0WvOUzDyAEKgjZCRSx5J8gAA"> -<XPD:REF name="Association">6uW6VAT+jEG9Vy3cmRxPvgAA</XPD:REF> -<XPD:REF name="Participant">T1P4Xv7L+UuEzFqU+iyS5wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="nzRPyOcacU2J9Jf/0lCmawAA"> -<XPD:REF name="Association">6uW6VAT+jEG9Vy3cmRxPvgAA</XPD:REF> -<XPD:REF name="Participant">ZRumjrTwgUamBDOstkagPgAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[25]" type="UMLAssociation" guid="3PUgTTrP3U+LofrDCso/eAAA"> -<XPD:REF name="Namespace">dZ4UyetzSE+rDT9vQthF9wAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">JFsYjMcrU0GkgX8jFqUVZAAA</XPD:REF> -<XPD:REF name="Views[1]">R57gZgKnBkm8aQCFy90fiQAA</XPD:REF> -<XPD:REF name="Views[2]">GznyP+sffEKB3m9dw8jftQAA</XPD:REF> -<XPD:REF name="Views[3]">NM8M6o1EGkWwEmKdXXKpPAAA</XPD:REF> -<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR> -<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="PP9nsgv4Vkmbk1zEfct4VAAA"> -<XPD:REF name="Association">3PUgTTrP3U+LofrDCso/eAAA</XPD:REF> -<XPD:REF name="Participant">xAj1pchzIEeSaRcR2+aFTwAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">vVViwylf/Ei9ld6xTj7WdQAA</XPD:REF> -<XPD:REF name="Views[1]">A5rd4V90HkCp3dmD7wYTbwAA</XPD:REF> -<XPD:REF name="Views[2]">fhSnklGoSEqMAzQOJY57vwAA</XPD:REF> -<XPD:REF name="Views[3]">n4gqVjygvUK59/wDDHYNJgAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="usmo/t5V5UGA31IdVHUKyQAA"> -<XPD:REF name="Association">3PUgTTrP3U+LofrDCso/eAAA</XPD:REF> -<XPD:REF name="Participant">UiYOh8D78E22qQeFeDZpLAAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">AoZLFazfK0WqZzhHukFsAwAA</XPD:REF> -<XPD:REF name="Views[1]">QGcntempZkeGNA54l7y1rAAA</XPD:REF> -<XPD:REF name="Views[2]">pDauXlrgH0KfuJt30X8zxgAA</XPD:REF> -<XPD:REF name="Views[3]">NKRAWeqgBEKgb6cHnYpt9QAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[26]" type="UMLPackage" guid="YAejusdLDUikLT0VX+S31wAA"> -<XPD:ATTR name="Name" type="string">MW</XPD:ATTR> -<XPD:REF name="Namespace">dZ4UyetzSE+rDT9vQthF9wAA</XPD:REF> -<XPD:ATTR name="#Associations" type="integer">2</XPD:ATTR> -<XPD:REF name="Associations[0]">OmNL/SOM7k6GhKEEqGF0RgAA</XPD:REF> -<XPD:REF name="Associations[1]">j/oong2hbUCcfqfb/9L1PwAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[27]" type="UMLAssociation" guid="vd4u72TMwkKCHYSmzMvXNQAA"> -<XPD:REF name="Namespace">dZ4UyetzSE+rDT9vQthF9wAA</XPD:REF> -<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR> -<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="OmNL/SOM7k6GhKEEqGF0RgAA"> -<XPD:REF name="Association">vd4u72TMwkKCHYSmzMvXNQAA</XPD:REF> -<XPD:REF name="Participant">YAejusdLDUikLT0VX+S31wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="0RZNIMepB0W9fkd6pMCEZwAA"> -<XPD:REF name="Association">vd4u72TMwkKCHYSmzMvXNQAA</XPD:REF> -<XPD:REF name="Participant">CN6L5smMd0u/4SQDgGuxlAAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[28]" type="UMLAssociation" guid="n5b/e2YQYka0DNd4RWbgbgAA"> -<XPD:REF name="Namespace">dZ4UyetzSE+rDT9vQthF9wAA</XPD:REF> -<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR> -<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="j/oong2hbUCcfqfb/9L1PwAA"> -<XPD:REF name="Association">n5b/e2YQYka0DNd4RWbgbgAA</XPD:REF> -<XPD:REF name="Participant">YAejusdLDUikLT0VX+S31wAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="frvBY5I3t0yZgEqYHUhfEQAA"> -<XPD:REF name="Association">n5b/e2YQYka0DNd4RWbgbgAA</XPD:REF> -<XPD:REF name="Participant">7dRihysn8kefkb+6mJlwzgAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[29]" type="UMLAssociation" guid="7aJQb5j/+kWV9Kb/0dqoJAAA"> -<XPD:REF name="Namespace">dZ4UyetzSE+rDT9vQthF9wAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">Q/k+TeR21UWA0JPwiSZAnwAA</XPD:REF> -<XPD:REF name="Views[1]">C2jwipMyN0iMiEays2pVbQAA</XPD:REF> -<XPD:REF name="Views[2]">MxF6R3nqrk+nOid9gUoepAAA</XPD:REF> -<XPD:REF name="Views[3]">5CzND/56UUuAy2C5OXPJGAAA</XPD:REF> -<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR> -<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="C7X0ILbZrkWDVQ5Vc+PT/wAA"> -<XPD:REF name="Association">7aJQb5j/+kWV9Kb/0dqoJAAA</XPD:REF> -<XPD:REF name="Participant">JCgv4vk16U6BbVcoQFmlVwAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">2P5BNH8K/UKYeriBTZAbSgAA</XPD:REF> -<XPD:REF name="Views[1]">X0Z4arOj+EWceCda6Sj0vgAA</XPD:REF> -<XPD:REF name="Views[2]">nbxLBw93Oka1PVwDZftA2QAA</XPD:REF> -<XPD:REF name="Views[3]">lKhOSy40pUOJhnfmNzIx5AAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="Dzfwehs+P0e8CyC/holLewAA"> -<XPD:ATTR name="Aggregation" type="UMLAggregationKind">akAggregate</XPD:ATTR> -<XPD:REF name="Association">7aJQb5j/+kWV9Kb/0dqoJAAA</XPD:REF> -<XPD:REF name="Participant">K+kTKNnFak+/Lo9L/RD0ugAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">VSR1os7RckKbbg+wZ6UPWwAA</XPD:REF> -<XPD:REF name="Views[1]">3yHNXWsgu0eaPzi0F9a3dgAA</XPD:REF> -<XPD:REF name="Views[2]">+gO4BIQphEShtlup7FhfcgAA</XPD:REF> -<XPD:REF name="Views[3]">laRXvwF4WE2wUODF6aCNSQAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[30]" type="UMLAssociation" guid="6r7WWefo1kK4HXJ46+UuHwAA"> -<XPD:REF name="Namespace">dZ4UyetzSE+rDT9vQthF9wAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">2tALOFJiukSZiwAj9gBDIQAA</XPD:REF> -<XPD:REF name="Views[1]">BM0ZC/TOp0CzIS/dSFOgMQAA</XPD:REF> -<XPD:REF name="Views[2]">911s2zFZYUCPtLOmXSDdDgAA</XPD:REF> -<XPD:REF name="Views[3]">bOeJui9AgkWX+he6KT6czQAA</XPD:REF> -<XPD:ATTR name="#Connections" type="integer">2</XPD:ATTR> -<XPD:OBJ name="Connections[0]" type="UMLAssociationEnd" guid="+M+2f65R0UCJH6UP90YGAQAA"> -<XPD:REF name="Association">6r7WWefo1kK4HXJ46+UuHwAA</XPD:REF> -<XPD:REF name="Participant">K+kTKNnFak+/Lo9L/RD0ugAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">2U407qHmXE+0VHF/y4trXwAA</XPD:REF> -<XPD:REF name="Views[1]">dAD5Dd+Px0eU/Z7MNaXtWgAA</XPD:REF> -<XPD:REF name="Views[2]">16BTtqnINEq6DZln/1Uc4AAA</XPD:REF> -<XPD:REF name="Views[3]">1RtPOXDsOEuSNTqKSxFAKAAA</XPD:REF> -</XPD:OBJ> -<XPD:OBJ name="Connections[1]" type="UMLAssociationEnd" guid="AM/xtV731kSTTZbv0mmefgAA"> -<XPD:REF name="Association">6r7WWefo1kK4HXJ46+UuHwAA</XPD:REF> -<XPD:REF name="Participant">SX+aNGg0j0WtdR26+LZ7OgAA</XPD:REF> -<XPD:ATTR name="#Views" type="integer">4</XPD:ATTR> -<XPD:REF name="Views[0]">lMa33WFxzU2ojAIXkT9IwAAA</XPD:REF> -<XPD:REF name="Views[1]">Ehl7/9ciY0mjVGRlJGzTegAA</XPD:REF> -<XPD:REF name="Views[2]">MAu3FLtcFkOt8a9+Yj8MBAAA</XPD:REF> -<XPD:REF name="Views[3]">FstmADGG7k2p8GVFXyT/GAAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[3]" type="UMLModel" guid="PS0LMSpdO0O+FHz16P77KAAA"> -<XPD:ATTR name="Name" type="string">Implementation Model</XPD:ATTR> -<XPD:ATTR name="StereotypeProfile" type="string">UMLStandard</XPD:ATTR> -<XPD:ATTR name="StereotypeName" type="string">implementationModel</XPD:ATTR> -<XPD:REF name="Namespace">CoZuu0bDp0eooW1pQg6aQwAA</XPD:REF> -<XPD:ATTR name="#OwnedDiagrams" type="integer">1</XPD:ATTR> -<XPD:OBJ name="OwnedDiagrams[0]" type="UMLComponentDiagram" guid="8lc98jz+106sHki62uo59wAA"> -<XPD:ATTR name="Name" type="string">Main</XPD:ATTR> -<XPD:REF name="DiagramOwner">PS0LMSpdO0O+FHz16P77KAAA</XPD:REF> -<XPD:OBJ name="DiagramView" type="UMLComponentDiagramView" guid="0wCA7NA3N0ei/8mtv/tB+gAA"> -<XPD:REF name="Diagram">8lc98jz+106sHki62uo59wAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -</XPD:OBJ> -<XPD:OBJ name="OwnedElements[4]" type="UMLModel" guid="Br3gILarcEaGGLO+RQTdrAAA"> -<XPD:ATTR name="Name" type="string">Deployment Model</XPD:ATTR> -<XPD:ATTR name="StereotypeProfile" type="string">UMLStandard</XPD:ATTR> -<XPD:ATTR name="StereotypeName" type="string">deploymentModel</XPD:ATTR> -<XPD:REF name="Namespace">CoZuu0bDp0eooW1pQg6aQwAA</XPD:REF> -<XPD:ATTR name="#OwnedDiagrams" type="integer">1</XPD:ATTR> -<XPD:OBJ name="OwnedDiagrams[0]" type="UMLDeploymentDiagram" guid="etpVb7W50ECVJjSyvN9PGgAA"> -<XPD:ATTR name="Name" type="string">Main</XPD:ATTR> -<XPD:REF name="DiagramOwner">Br3gILarcEaGGLO+RQTdrAAA</XPD:REF> -<XPD:OBJ name="DiagramView" type="UMLDeploymentDiagramView" guid="I2wMY5Xl20qJVJcTZ7SuMgAA"> -<XPD:REF name="Diagram">etpVb7W50ECVJjSyvN9PGgAA</XPD:REF> -</XPD:OBJ> -</XPD:OBJ> -</XPD:OBJ> -</XPD:OBJ> -</XPD:BODY> -</XPD:PROJECT> diff --git a/tvapi/libtv/Android.mk b/tvapi/libtv/Android.mk deleted file mode 100644 index 7c438cc..0000000 --- a/tvapi/libtv/Android.mk +++ b/dev/null @@ -1,222 +0,0 @@ -LOCAL_PATH:= $(call my-dir) -include $(CLEAR_VARS) - -DVB_PATH := $(wildcard external/dvb) - -ifeq ($(DVB_PATH), ) - DVB_PATH := $(wildcard vendor/amlogic/dvb) -endif - -AM_LIBPLAYER_PATH := $(wildcard vendor/amlogic/frameworks/av/LibPlayer) -LIB_ZVBI_PATH := $(wildcard external/libzvbi) -LIB_SQLITE_PATH := $(wildcard external/sqlite) - -#support android and amaudio -BOARD_TV_AUDIO_TYPE := amaudio - -#support builtin and external -BOARD_TV_AUDIO_AMAUDIO_LIB_TYPE := external - - -LOCAL_MODULE_TAGS := optional - -LOCAL_SRC_FILES := \ - tv/CAutoPQparam.cpp \ - tv/AutoBackLight.cpp \ - tv/CTvLog.cpp \ - tv/CTvEv.cpp \ - tv/CTvEpg.cpp \ - tv/CTvRecord.cpp \ - tv/CTvSubtitle.cpp \ - tv/CTvScanner.cpp \ - tv/CTvTime.cpp \ - tv/CTv.cpp \ - tv/CTvBooking.cpp \ - tv/CFrontEnd.cpp \ - tv/CTvVchipCheck.cpp \ - tv/CFbcCommunication.cpp \ - tv/CTvScreenCapture.cpp \ - tv/CUpgradeFBC.cpp \ - tv/CAv.cpp \ - tv/CTvDmx.cpp \ - tvin/CTvin.cpp \ - tvin/CSourceConnectDetect.cpp \ - tvin/CHDMIRxCEC.cpp \ - tvdb/CTvDimension.cpp \ - vpp/CVpp.cpp \ - vpp/pqdata.cpp \ - tvutils/tvutils.cpp \ - tvutils/CFile.cpp \ - tvutils/CThread.cpp \ - tvutils/CMsgQueue.cpp \ - tvutils/zepoll.cpp \ - tvutils/serial_base.cpp \ - tvutils/serial_operate.cpp \ - tvutils/CSerialCommunication.cpp \ - tvutils/CSerialPort.cpp \ - tvutils/CHdmiCecCmd.cpp \ - tvutils/CTvInput.cpp \ - tvutils/CSqlite.cpp \ - vpp/CPQdb.cpp \ - tvconfig/tvconfig.cpp \ - tvconfig/CIniFile.cpp \ - audio/CTvAudio.cpp \ - tvsetting/audio_cfg.cpp \ - audio/audio_effect.cpp \ - audio/audio_alsa.cpp \ - audio/CAudioCustomerCtrl.cpp \ - tvsetting/CBlobDevice.cpp \ - tvsetting/CBlobDeviceE2prom.cpp \ - tvsetting/CBlobDeviceFile.cpp \ - tvsetting/CTvSetting.cpp \ - tvsetting/CTvSettingDeviceFactory.cpp \ - tvsetting/TvKeyData.cpp \ - version/version.cpp \ - tvdb/CTvChannel.cpp \ - tvdb/CTvDatabase.cpp \ - tvdb/CTvEvent.cpp \ - tvdb/CTvGroup.cpp \ - tvdb/CTvProgram.cpp \ - tvdb/CTvRegion.cpp - -LOCAL_SHARED_LIBRARIES := \ - libui \ - libutils \ - libcutils \ - libnetutils \ - libsqlite \ - libmedia \ - libtvbinder \ - libhardware_legacy \ - libdl \ - libskia \ - libtinyxml \ - libusbhost \ - libbinder \ - libstagefright - -LOCAL_SHARED_LIBRARIES += \ - libzvbi \ - libntsc_decode \ - libam_mw \ - libam_adp \ - libam_ver \ - libsystemcontrolservice - -ifeq ($(strip $(BOARD_TV_AUDIO_AMAUDIO_LIB_TYPE)), external) - LOCAL_SHARED_LIBRARIES += libTVaudio -endif - -ifeq ($(strip $(BOARD_ALSA_AUDIO)),tiny) - LOCAL_SHARED_LIBRARIES += libtinyalsa -else - LOCAL_SHARED_LIBRARIES += libasound -endif - -LOCAL_STATIC_LIBRARIES += libz - -LOCAL_CFLAGS := \ - -fPIC -fsigned-char -D_POSIX_SOURCE \ - -DALSA_CONFIG_DIR=\"/system/usr/share/alsa\" \ - -DALSA_PLUGIN_DIR=\"/system/usr/lib/alsa-lib\" \ - -DALSA_DEVICE_DIRECTORY=\"/dev/snd/\" - -LOCAL_CFLAGS += -DANDROID_PLATFORM_SDK_VERSION=$(PLATFORM_SDK_VERSION) - -ifeq ($(SOURCE_DEDTECT_ON),true) - LOCAL_CFLAGS += -DSOURCE_DETECT_ENABLE -endif - -ifeq ($(TARGET_SIMULATOR),true) - LOCAL_CFLAGS += -DSINGLE_PROCESS -endif - -ifeq ($(strip $(BOARD_ALSA_AUDIO)),tiny) - LOCAL_CFLAGS += -DBOARD_ALSA_AUDIO_TINY -endif - -ifeq ($(strip $(BOARD_TV_AUDIO_TYPE)),amaudio) - LOCAL_CFLAGS += -DCC_TV_AUDIO_TYPE_AMAUDIO=1 -endif - -ifeq ($(strip $(BOARD_TV_AUDIO_TYPE)),android) - LOCAL_SRC_FILES += audio/audio_android.cpp - LOCAL_CFLAGS += -DCC_TV_AUDIO_TYPE_ANDROID=1 -endif - -LOCAL_C_INCLUDES += \ - bionic/libc/include \ - bionic/libc/private \ - system/extras/ext4_utils \ - $(LOCAL_PATH)/../ \ - $(LIB_SQLITE_PATH)/dist \ - system/media/audio_effects/include \ - external/tinyalsa/include \ - frameworks/av/include/media/stagefright \ - frameworks/native/include/media/openmax - -ifeq ($(strip $(BOARD_TV_AUDIO_AMAUDIO_LIB_TYPE)), external) - LOCAL_C_INCLUDES += hardware/amlogic/audio/libTVaudio -endif - -LOCAL_C_INCLUDES += external/libzvbi/src \ - bionic/libc/include \ - $(DVB_PATH)/android/ndk/include \ - external/tinyxml - -ifeq ($(strip $(BOARD_ALSA_AUDIO)),tiny) - LOCAL_C_INCLUDES += external/tinyalsa/include -else - LOCAL_C_INCLUDES += external/alsa-lib/include -endif - - -LOCAL_C_INCLUDES += \ - $(DVB_PATH)/include/am_adp \ - $(DVB_PATH)/include/am_mw \ - $(DVB_PATH)/include/am_ver \ - $(DVB_PATH)/android/ndk/include \ - $(LOCAL_PATH)/dtv_play \ - $(LIB_ZVBI_PATH)/ntsc_decode/include \ - $(LIB_ZVBI_PATH)/ntsc_decode/include/ntsc_dmx \ - $(LIB_ZVBI_PATH)/src \ - $(AM_LIBPLAYER_PATH)/amadec/include \ - $(AM_LIBPLAYER_PATH)/amcodec/include \ - $(AM_LIBPLAYER_PATH)/amffmpeg \ - $(AM_LIBPLAYER_PATH)/amplayer \ - $(LOCAL_PATH)/tvdb \ - $(LOCAL_PATH)/tv \ - $(LOCAL_PATH)/include \ - $(LOCAL_PATH)/../build/include \ - $(TOP)/vendor/amlogic/frameworks/services \ - - - -LOCAL_LDLIBS += -L$(SYSROOT)/usr/lib -llog - -LOCAL_PRELINK_MODULE := false - -# version -ifeq ($(strip $(BOARD_TVAPI_NO_VERSION)),) - $(shell cd $(LOCAL_PATH);touch version/version.cpp) - LIBTVSERVICE_GIT_VERSION="$(shell cd $(LOCAL_PATH);git log | grep commit -m 1 | cut -d' ' -f 2)" - LIBTVSERVICE_GIT_UNCOMMIT_FILE_NUM=$(shell cd $(LOCAL_PATH);git diff | grep +++ -c) - LIBTVSERVICE_GIT_BRANCH="$(shell cd $(LOCAL_PATH);git branch | grep \* -m 1)" - LIBTVSERVICE_LAST_CHANGED="$(shell cd $(LOCAL_PATH);git log | grep Date -m 1)" - LIBTVSERVICE_BUILD_TIME=" $(shell date)" - LIBTVSERVICE_BUILD_NAME=" $(shell echo ${LOGNAME})" - - LOCAL_CFLAGS+=-DHAVE_VERSION_INFO - LOCAL_CFLAGS+=-DLIBTVSERVICE_GIT_VERSION=\"${LIBTVSERVICE_GIT_VERSION}${LIBTVSERVICE_GIT_DIRTY}\" - LOCAL_CFLAGS+=-DLIBTVSERVICE_GIT_UNCOMMIT_FILE_NUM=${LIBTVSERVICE_GIT_UNCOMMIT_FILE_NUM} - LOCAL_CFLAGS+=-DLIBTVSERVICE_GIT_BRANCH=\"${LIBTVSERVICE_GIT_BRANCH}\" - LOCAL_CFLAGS+=-DLIBTVSERVICE_LAST_CHANGED=\"${LIBTVSERVICE_LAST_CHANGED}\" - LOCAL_CFLAGS+=-DLIBTVSERVICE_BUILD_TIME=\"${LIBTVSERVICE_BUILD_TIME}\" - LOCAL_CFLAGS+=-DLIBTVSERVICE_BUILD_NAME=\"${LIBTVSERVICE_BUILD_NAME}\" - LOCAL_CFLAGS+=-DTVAPI_BOARD_VERSION=\"$(TVAPI_TARGET_BOARD_VERSION)\" -endif - -LOCAL_CFLAGS += -DTARGET_BOARD_$(strip $(TVAPI_TARGET_BOARD_VERSION)) -LOCAL_MODULE:= libtv - -include $(BUILD_SHARED_LIBRARY) diff --git a/tvapi/libtv/audio/CAudioCustomerCtrl.cpp b/tvapi/libtv/audio/CAudioCustomerCtrl.cpp deleted file mode 100644 index 4ffc8da..0000000 --- a/tvapi/libtv/audio/CAudioCustomerCtrl.cpp +++ b/dev/null @@ -1,126 +0,0 @@ -#include "CAudioCustomerCtrl.h" -#include <dlfcn.h> -#include "CTvLog.h" -#include "tvsetting/audio_cfg.h" - -CAudioCustomerCtrl::CAudioCustomerCtrl() -{ - gExternalDacLibHandler = NULL; - mpDacMuteFun = NULL; - mpDacMainVolFun = NULL; - mpDacBalanceFun = NULL; - mpSetSourceTypeFun = NULL; -} - -CAudioCustomerCtrl::~CAudioCustomerCtrl() -{ - UnLoadExternalDacLib(); -} - -int CAudioCustomerCtrl::UnLoadExternalDacLib(void) -{ - if (gExternalDacLibHandler != NULL) { - dlclose(gExternalDacLibHandler); - gExternalDacLibHandler = NULL; - } - - mpDacMuteFun = NULL; - mpDacMainVolFun = NULL; - mpDacBalanceFun = NULL; - mpSetSourceTypeFun = NULL; - - return 0; -} - -int CAudioCustomerCtrl::LoadExternalDacLib(void) -{ - char *error; - - LOGD("%s, entering...\n", __FUNCTION__); - - if (gExternalDacLibHandler != NULL) { - return 0; - } - - const char *config_value = GetAudExtDacLibPath(); - gExternalDacLibHandler = dlopen(config_value, RTLD_NOW); - if (!gExternalDacLibHandler) { - LOGE("%s, failed to load external dac lib (%s)\n", __FUNCTION__, config_value); - goto Error; - } - - mpDacMuteFun = (int(*)(int))dlsym(gExternalDacLibHandler, "HandleDacMute"); - if (mpDacMuteFun == NULL) { - LOGE("%s, fail find fun mpDacMuteFun()\n", __FUNCTION__); - goto Error; - } - mpDacMainVolFun = (int(*)(int))dlsym(gExternalDacLibHandler, "HandleDacMainVolume"); - if (mpDacMainVolFun == NULL) { - LOGE("%s, fail find fun HandleDacMainVolume()\n", __FUNCTION__); - goto Error; - } - mpDacBalanceFun = (int(*)(int))dlsym(gExternalDacLibHandler, "HandleDacBalance"); - if (mpDacBalanceFun == NULL) { - LOGE("%s, fail find fun HandleDacBalance()\n", __FUNCTION__); - goto Error; - } - mpSetSourceTypeFun = (int(*)(int))dlsym(gExternalDacLibHandler, "HandleAudioSourceType"); - if (mpSetSourceTypeFun == NULL) { - LOGE("%s, fail find fun HandleAudioSourceType()\n", __FUNCTION__); - goto Error; - } - - return 0; - -Error: // - mpDacMuteFun = NULL; - mpDacMainVolFun = NULL; - mpDacBalanceFun = NULL; - mpSetSourceTypeFun = NULL; - - if (gExternalDacLibHandler != NULL) { - dlclose(gExternalDacLibHandler); - gExternalDacLibHandler = NULL; - } - return -1; -} - -// 0 mute, 1 unmute -int CAudioCustomerCtrl::SetMute(int mute) -{ - int ret = LoadExternalDacLib(); - if (mpDacMuteFun != NULL) { - ret = (*mpDacMuteFun)(mute); - } - return ret; -} - -int CAudioCustomerCtrl::SetVolumeBar(int vol) -{ - int ret = LoadExternalDacLib(); - if (mpDacMainVolFun != NULL) { - LOGD("%s, call external dac lib HandleDacMainVolume (para = %d).\n", __FUNCTION__, vol); - ret = (*mpDacMainVolFun)(vol); - } - return ret; -} - -int CAudioCustomerCtrl::SetBlance(int balance) -{ - int ret = LoadExternalDacLib(); - if (mpDacBalanceFun != NULL) { - LOGD("%s, call external dac lib HandleDacBalance (para = %d).\n", __FUNCTION__, balance); - ret = (*mpDacBalanceFun)(balance); - } - return ret; -} - -int CAudioCustomerCtrl::SetSource(int source) -{ - int ret = LoadExternalDacLib(); - if (mpSetSourceTypeFun != NULL) { - LOGD("%s, call external dac lib HandleAudioSourceType (para = %d).\n", __FUNCTION__, source); - ret = (*mpSetSourceTypeFun)(source); - } - return ret; -} diff --git a/tvapi/libtv/audio/CAudioCustomerCtrl.h b/tvapi/libtv/audio/CAudioCustomerCtrl.h deleted file mode 100644 index b9c8540..0000000 --- a/tvapi/libtv/audio/CAudioCustomerCtrl.h +++ b/dev/null @@ -1,31 +0,0 @@ -#ifndef __AUDIO_CUSTOMER_CTRL_H__ -#define __AUDIO_CUSTOMER_CTRL_H__ - -typedef int (*TYPE_DacMute_FUN)(int mute_state); -typedef int (*TYPE_DacMainVolume_FUN)(int vol); -typedef int (*TYPE_DacBalance_FUN)(int balance_val); -typedef int (*TYPE_AudioSourceType_FUN)(int source_type); - -class CAudioCustomerCtrl { -public: - static const int MUTE = 0; - static const int UNMUTE = 1; - - CAudioCustomerCtrl(); - ~CAudioCustomerCtrl(); - int LoadExternalDacLib(void); - int UnLoadExternalDacLib(void); - int SendCmdToOffBoardCustomerLibExternalDac(int, int); - int SetMute(int mute); - int SetVolumeBar(int vol); - int SetBlance(int balance); - int SetSource(int source); - -private: - void *gExternalDacLibHandler; - TYPE_DacMute_FUN mpDacMuteFun; - TYPE_DacMainVolume_FUN mpDacMainVolFun; - TYPE_DacBalance_FUN mpDacBalanceFun; - TYPE_AudioSourceType_FUN mpSetSourceTypeFun; -}; -#endif diff --git a/tvapi/libtv/audio/CTvAudio.cpp b/tvapi/libtv/audio/CTvAudio.cpp deleted file mode 100644 index 9b1f0fa..0000000 --- a/tvapi/libtv/audio/CTvAudio.cpp +++ b/dev/null @@ -1,28 +0,0 @@ -#define LOG_TAG "CTvAudio" - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <unistd.h> -#include <pthread.h> -#include <fcntl.h> - -#include <android/log.h> -#include <cutils/properties.h> - -#include "../tvsetting/CTvSetting.h" -#include "../tvutils/tvutils.h" -#include "../tvutils/CFile.h" -#include "audio_effect.h" -#include "CTvAudio.h" - -#include "CTvLog.h" - -CTvAudio::CTvAudio() -{ -} - -CTvAudio::~CTvAudio() -{ -} - diff --git a/tvapi/libtv/audio/CTvAudio.h b/tvapi/libtv/audio/CTvAudio.h deleted file mode 100644 index f2701a8..0000000 --- a/tvapi/libtv/audio/CTvAudio.h +++ b/dev/null @@ -1,76 +0,0 @@ -#ifndef __TV_AUDIO_API_H__ -#define __TV_AUDIO_API_H__ - - -#include "tvsetting/audio_cfg.h" -#include "audio_alsa.h" -#include "audio_effect.h" -#include <audio_amaudio.h> -#include "CAudioCustomerCtrl.h" - -enum CC_AUDIO_SWITCH_STATUS { - CC_SWITCH_OFF, - CC_SWITCH_ON, -}; - -enum CC_AMAUDIO_OUT_MODE { - CC_AMAUDIO_OUT_MODE_DIRECT, - CC_AMAUDIO_OUT_MODE_INTER_MIX, - CC_AMAUDIO_OUT_MODE_DIRECT_MIX, -}; - -static const int CC_SPDIF_MODE_PCM = 0; -static const int CC_SPDIF_MODE_RAW = 1; - -static const int CC_MIN_SOUND_VOL = 0; -static const int CC_MAX_SOUND_VOL = 100; -static const int CC_DEF_SOUND_VOL = 10; -static const int CC_MIN_SUPPERBASS_VOL = 0; -static const int CC_MAX_SUPPERBASS_VOL = 100; -static const int CC_DEF_SUPPERBASS_VOL = 50; - -static const int CC_DEF_BASS_TREBLE_VOL = 50; -static const int CC_EQ_BASS_IND = 1; -static const int CC_EQ_TREBLE_IND = 3; -static const int CC_EQ_DEF_UI_MIN_GAIN = 0; -static const int CC_EQ_DEF_UI_MAX_GAIN = 100; -static const int CC_MIN_EQ_GAIN_VAL = -10; -static const int CC_MAX_EQ_GAIN_VAL = 10; - -static const int CC_LUT_BUF_MASTER = 0; -static const int CC_LUT_BUF_SUPPERBASS = 1; -static const int CC_LUT_BUF_SIZE = 101; -static const int CC_NO_LINE_POINTS_MAX_CNT = 101; - - -enum CC_AUD_SOUND_MODE { - CC_SOUND_MODE_START = 0, - CC_SOUND_MODE_STD = 0, - CC_SOUND_MODE_MUSIC, - CC_SOUND_MODE_NEWS, - CC_SOUND_MODE_THEATER, - CC_SOUND_MODE_USER, - CC_SOUND_MODE_END = CC_SOUND_MODE_USER -}; - -enum CC_AUD_EQ_MODE { - CC_EQ_MODE_START = 0, - CC_EQ_MODE_NOMAL = 0, - CC_EQ_MODE_POP, - CC_EQ_MODE_JAZZ, - CC_EQ_MODE_ROCK, - CC_EQ_MODE_CLASSIC, - CC_EQ_MODE_DANCE, - CC_EQ_MODE_PARTY, - CC_EQ_MODE_BASS, - CC_EQ_MODE_TREBLE, - CC_EQ_MODE_CUSTOM, - CC_EQ_MODE_END = CC_EQ_MODE_CUSTOM -}; - -class CTvAudio { -public: - CTvAudio(); - ~CTvAudio(); -}; -#endif //__TV_AUDIO_API_H__ diff --git a/tvapi/libtv/audio/audio_alsa.cpp b/tvapi/libtv/audio/audio_alsa.cpp deleted file mode 100644 index ab3014f..0000000 --- a/tvapi/libtv/audio/audio_alsa.cpp +++ b/dev/null @@ -1,853 +0,0 @@ -#define LOG_TAG "CAudioAlsa" - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <getopt.h> -#include <pthread.h> -#include <stdarg.h> -#include <ctype.h> -#include <math.h> -#include <errno.h> -#include <assert.h> -#include <fcntl.h> -#include <tinyalsa/asoundlib.h> -#include "CFbcCommunication.h" -#include <sys/poll.h> -#include "tvsetting/audio_cfg.h" -#include "audio_alsa.h" -#include <cutils/properties.h> -#include "CTvLog.h" -#include "audio_amaudio.h" - -static const int DEFAULT_MAIN_DIGIT_LUT[] = { - // - 0, 40, 50, 60, 70, 87, 110, 120, 130, 140, // 0~9 - 150, 152, 155, 158, 161, 164, 167, 170, 173, 174, // 10~19 - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, // 20~29 - 191, 191, 192, 193, 194, 195, 196, 196, 197, 197, // 30~39 - 198, 198, 198, 199, 199, 200, 200, 201, 201, 201, // 40~49 - 202, 202, 202, 203, 203, 203, 203, 204, 204, 204, // 50~59 - 205, 205, 205, 205, 206, 206, 206, 206, 206, 207, // 60~69 - 207, 207, 207, 207, 207, 207, 207, 208, 208, 208, // 70~79 - 208, 208, 208, 208, 208, 208, 208, 208, 208, 209, // 80~89 - 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, // 90~99 - 209, // 100 -}; - -static const int DEFAULT_SUPPER_BASS_DIGIT_LUT_BUF[] = { - // - 0, 122, 123, 124, 125, 126, 127, 128, 129, 130, // 0~9 - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, // 10~19 - 141, 142, 143, 144, 145, 147, 147, 148, 148, 149, // 20~29 - 149, 150, 150, 151, 151, 152, 152, 153, 153, 154, // 30~39 - 154, 155, 155, 156, 156, 157, 157, 158, 158, 159, // 40~49 - 160, 160, 160, 160, 161, 161, 161, 161, 162, 162, // 50~59 - 162, 163, 163, 163, 163, 164, 164, 164, 165, 165, // 60~69 - 165, 165, 166, 166, 166, 167, 168, 169, 170, 171, // 70~79 - 173, 174, 175, 176, 177, 179, 180, 181, 182, 183, // 80~89 - 185, 186, 187, 188, 189, 191, 192, 193, 194, 195, // 90~99 - 197 // 100 -}; - -CAudioAlsa::CAudioAlsa() -{ - int card_id; - card_id = get_aml_card(); - LOGD("[%s:%d] card_id:%d\n", __FUNCTION__, __LINE__, card_id); - mpMixer = mixer_open(card_id); - - card_id = get_USB_Audio_card(); - LOGD("[%s:%d] card_id:%d\n", __FUNCTION__, __LINE__, card_id); - mpUsbMixer = mixer_open(card_id); - mMainVolumeGainVal = 0; - mSupperBassVolumeGainVal = 0; - ArrayCopy(mMainDigitLutBuf, DEFAULT_MAIN_DIGIT_LUT, CC_VOL_TRANS_LUT_BUF_SIZE); - ArrayCopy(mSupperBassDigitLutBuf, DEFAULT_SUPPER_BASS_DIGIT_LUT_BUF, CC_VOL_TRANS_LUT_BUF_SIZE); -} - -CAudioAlsa::~CAudioAlsa() -{ - if (NULL != mpMixer) { - mixer_close(mpMixer); - } - - if (NULL != mpUsbMixer) { - mixer_close(mpUsbMixer); - } -} - -int CAudioAlsa::get_aml_card() -{ - int card = -1, err = 0; - int fd = -1; - char read_buf[512], *pd = NULL; - static const char *const SOUND_CARDS_PATH = "/proc/asound/cards"; - fd = open(SOUND_CARDS_PATH, O_RDONLY); - if (fd < 0) { - LOGE("ERROR: failed to open config file %s error: %d\n", SOUND_CARDS_PATH, errno); - close(fd); - return -EINVAL; - } - memset(read_buf, 0x0, 512); - err = read(fd, read_buf, 512); - if (fd < 0) { - LOGE("ERROR: failed to read config file %s error: %d\n", SOUND_CARDS_PATH, errno); - close(fd); - return -EINVAL; - } - pd = strstr(read_buf, "AML"); - card = *(pd - 3) - '0'; - close(fd); - return card; -} - -int CAudioAlsa::AudioControlSetValue(int val_count, int data_buf[], char *match_names) -{ - struct mixer_ctl *pctl; - unsigned int expected_val_count; - unsigned int value_index; - - if (NULL == mpMixer) { - LOGE("[%s:%d] Failed to open mixer\n", __FUNCTION__, __LINE__); - goto err_exit; - } - - pctl = mixer_get_ctl_by_name(mpMixer, match_names); - if (NULL == pctl) { - LOGE("[%s:%d] Failed to get mixer control for:%s\n", __FUNCTION__, __LINE__, match_names); - goto err_exit; - } - expected_val_count = mixer_ctl_get_num_values(pctl); - if (expected_val_count != (unsigned int)val_count) { - LOGE("[%s:%d] val_count != expected_val_count\n", __FUNCTION__, __LINE__); - goto err_exit; - } - for (value_index = 0; value_index < expected_val_count; value_index++) { - if (mixer_ctl_set_value(pctl, value_index, data_buf[value_index]) != 0) { - LOGE("[%s:%d] Failed to set value:%d\n", __FUNCTION__, __LINE__, value_index); - goto err_exit; - } - } - return 0; -err_exit: - return -1; -} - -int CAudioAlsa::AudioControlGetValue(int val_count, int ret_buf[], char *match_names) -{ - struct mixer_ctl *pctl; - unsigned int expected_val_count; - unsigned int value_index; - - if (NULL == mpMixer) { - LOGE("[%s:%d] Failed to open mixer\n", __FUNCTION__, __LINE__); - goto err_exit; - } - pctl = mixer_get_ctl_by_name(mpMixer, match_names); - if (NULL == pctl) { - LOGE("[%s:%d] Failed to get mixer control for:%s\n", __FUNCTION__, __LINE__, match_names); - goto err_exit; - } - expected_val_count = mixer_ctl_get_num_values(pctl); - if (expected_val_count != (unsigned int)val_count) { - LOGE("[%s:%d] val_count != expected_val_count\n", __FUNCTION__, __LINE__); - goto err_exit; - } - for (value_index = 0; value_index < expected_val_count; value_index++) { - ret_buf[value_index] = mixer_ctl_get_value(pctl, value_index); - } - return 0; -err_exit: - return -1; -} - -int CAudioAlsa::get_USB_Audio_card() -{ - int card = -1, err = 0; - int fd = -1; - char read_buf[512], *pd = NULL; - static const char *const SOUND_CARDS_PATH = "/proc/asound/cards"; - fd = open(SOUND_CARDS_PATH, O_RDONLY); - if (fd < 0) { - LOGE("ERROR: failed to open config file %s error: %d\n", SOUND_CARDS_PATH, errno); - close(fd); - return -EINVAL; - } - memset(read_buf, 0x0, 512); - err = read(fd, read_buf, 512); - if (fd < 0) { - LOGE("ERROR: failed to read config file %s error: %d\n", SOUND_CARDS_PATH, errno); - close(fd); - return -EINVAL; - } - pd = strstr(read_buf, "Receiver"); - if (pd == NULL) { - LOGE("ERROR: failed to read config file %s error: %d\n", SOUND_CARDS_PATH, errno); - close(fd); - return -EINVAL; - } - - card = *(pd - 3) - '0'; - close(fd); - return card; -} - -int CAudioAlsa::HandleUSBAudioControlValue(int val_count, int data_buf[], int match_count, char **match_names) -{ - - struct mixer_ctl *pctl; - unsigned int expected_val_count; - unsigned int match_index; - unsigned int value_index; - char card_id_str[9] = {0}; - - if (NULL == mpUsbMixer) { - LOGE("[%s:%d] Failed to open mixer\n", __FUNCTION__, __LINE__); - goto err_exit; - } - - for (match_index = 0; match_index < (unsigned int)match_count; match_index++) { - pctl = mixer_get_ctl_by_name(mpUsbMixer, match_names[match_index]); - if (NULL == pctl) { - LOGE("[%s:%d] Failed to get mixer control for:%s\n", __FUNCTION__, __LINE__, match_names[match_index]); - goto err_exit; - } - expected_val_count = mixer_ctl_get_num_values(pctl); - if (expected_val_count != (unsigned int)val_count) { - LOGE("[%s:%d] val_count != expected_val_count\n", __FUNCTION__, __LINE__); - goto err_exit; - } - for (value_index = 0; value_index < expected_val_count; value_index++) { - if (mixer_ctl_set_value(pctl, value_index, data_buf[value_index]) != 0) { - LOGE("[%s:%d] Failed to set value:%d\n", __FUNCTION__, __LINE__, value_index); - goto err_exit; - } - } - } - - return 0; -err_exit: - return -1; -} - -int CAudioAlsa::CheckVolume(int digit_vol, int digit_min __unused, int digit_max __unused, - int hd_min, int hd_max) -{ - if (digit_vol < hd_min) { - return hd_min; - } else if (digit_vol > hd_max) { - return hd_max; - } - - return digit_vol; -} - -int CAudioAlsa::GetTwoChannelVolume(int vol_buf[], - int l_min_vol __unused, int l_max_vol __unused, - int r_min_vol __unused, int r_max_vol __unused, - char *match_names, - int hd_min __unused, int hd_max __unused) -{ - vol_buf[0] = 0; - vol_buf[1] = 0; - return AudioControlGetValue(2, vol_buf, match_names); -} - -int CAudioAlsa::GetLineInMaxVol() -{ - return 127; -} - -int CAudioAlsa::GetLineOutMaxVol() -{ - return 255; -} - -#define CC_GET_ALSA_CTL_AUDIO_IN_SOURCE_NAME (0) -#define CC_GET_ALSA_CTL_INTERNAL_DAC_PGA_IN_GAIN (1) -#define CC_GET_ALSA_CTL_INTERNAL_DAC_ADC_DIGITAL_CAPTURE_VOLUME_NAME (2) -#define CC_GET_ALSA_CTL_INTERNAL_DAC_DAC_DIGITAL_PLAYBACK_VOLUME_NAME (3) -#define CC_GET_ALSA_CTL_INTERNAL_DAC_LEFT_LINEIN_SEL_NAME (4) -#define CC_GET_ALSA_CTL_INTERNAL_DAC_RIGHT_LINEIN_SEL_NAME (5) -#define CC_GET_ALSA_CTL_INTERNAL_DAC_LINEIN_CAPTURE_VOLUME_NAME (6) -#define CC_GET_ALSA_CTL_INTERNAL_DAC_LINEOUT_PLAYBACK_VOLUME_NAME (7) -#define CC_GET_ALSA_CTL_I2S_MUTE_NAME (8) -#define CC_GET_ALSA_CTL_SPDIF_MUTE_NAME (9) -#define CC_GET_ALSA_CTL_HW_RESAMPLE_NAME (10) -#define CC_GET_ALSA_CTL_EXTERNAL_DAC_MASTER_VOLUME_NAME (11) -#define CC_GET_ALSA_CTL_EXTERNAL_DAC_CH1_VOLUME_NAME (12) -#define CC_GET_ALSA_CTL_EXTERNAL_DAC_CH2_VOLUME_NAME (13) -#define CC_GET_ALSA_CTL_EXTERNAL_DAC_CH3_VOLUME_NAME (14) -#define CC_GET_ALSA_CTL_EXTERNAL_DAC_CH1_SWITCH_NAME (15) -#define CC_GET_ALSA_CTL_EXTERNAL_DAC_CH2_SWITCH_NAME (16) -#define CC_GET_ALSA_CTL_EXTERNAL_DAC_CH3_SWITCH_NAME (17) -#define CC_GET_ALSA_CTL_EXTERNAL_DAC_EQ_MODE_NAME (18) -#define CC_GET_ALSA_CTL_PCM_PLAYBACK_VOLUME (19) -#define CC_GET_ALSA_CTL_PCM_PLAYBACK_SWITCH (20) -#define CC_GET_ALSA_CTL_SETOUTPUT_SWAP (21) -#define CC_GET_ALSA_CTL_AUDIO_IN_SWITCH (22) - -static char gG9AlsaNames[32][48] = { - {"Audio In Source"},//0 - {"PGA IN Gain"},//1 - {"ADC Digital Capture Volume"},//2 - {"DAC Digital Playback Volume"},//3 - {"Linein right switch"},//4 - {"Linein left switch"}, - {"ADC Digital Capture Volume"}, - {"DAC Digital Playback Volume"}, - {"Audio i2s mute"},//8 - {"Audio spdif mute"}, - {"Hardware resample enable"},//10 - {"AMP Master Volume"}, - {"AMP Ch1 Volume"},//12 - {"AMP Ch2 Volume"}, - {"AMP Ch3 Volume"}, - {"AMP Ch1 Switch"}, - {"AMP Ch2 Switch"}, - {"AMP Ch3 Switch"},//17 - {"AMP EQ Mode"}, - {"PCM Playback Volume"}, - {"PCM Playback Switch"}, - {"Output Swap"}, - {"AudioIn Switch"},//22 -}; - - -char *CAudioAlsa::GetAlsaControlName(int get_type) -{ - return gG9AlsaNames[get_type]; -} - - -int CAudioAlsa::SetAudioInSource(int source_type) -{ - int set_val = 0; - char *match_names = GetAlsaControlName(CC_GET_ALSA_CTL_AUDIO_IN_SOURCE_NAME); - set_val = source_type; - return AudioControlSetValue(1, &set_val, match_names); -} - -int CAudioAlsa::GetAudioInSource(void) -{ - char *match_names = GetAlsaControlName(CC_GET_ALSA_CTL_AUDIO_IN_SOURCE_NAME); - int source_type = 0; - AudioControlGetValue(1, &source_type, match_names); - return source_type; -} - -int CAudioAlsa::SetAudioInternalDacPGAInGain(int gain_l_val, int gain_r_val) -{ - int GainBuf[2] = {0, 0}; - char *match_names = GetAlsaControlName(CC_GET_ALSA_CTL_INTERNAL_DAC_PGA_IN_GAIN); - - GainBuf[0] = gain_l_val; - GainBuf[1] = gain_r_val; - if (gain_l_val < 0 || gain_l_val > 31) { - GainBuf[0] = 16; - } - if (gain_r_val < 0 || gain_r_val > 31) { - GainBuf[1] = 16; - } - - return AudioControlSetValue(2, GainBuf, match_names); -} - -int CAudioAlsa::GetAudioInternalDacPGAInGain(int *gain_l_val, int *gain_r_val) -{ - int GainBuf[2] = {0, 0}; - char *match_names = GetAlsaControlName(CC_GET_ALSA_CTL_INTERNAL_DAC_PGA_IN_GAIN); - - AudioControlGetValue(2, GainBuf, match_names); - - *gain_l_val = GainBuf[0]; - *gain_r_val = GainBuf[1]; - - return 0; -} - -int CAudioAlsa::SetAudioInternalDacADCDigitalCaptureVolume(int vol_l_val, int vol_r_val) -{ - int VolumeBuf[2] = {0, 0}; - char *match_names = GetAlsaControlName(CC_GET_ALSA_CTL_INTERNAL_DAC_ADC_DIGITAL_CAPTURE_VOLUME_NAME); - - VolumeBuf[0] = vol_l_val; - VolumeBuf[1] = vol_r_val; - if (vol_l_val < 0 || vol_l_val > 127) { - VolumeBuf[0] = 82; - } - if (vol_r_val < 0 || vol_r_val > 127) { - VolumeBuf[1] = 82; - } - - return AudioControlSetValue(2, VolumeBuf, match_names); -} - -int CAudioAlsa::GetAudioInternalDacADCDigitalCaptureVolume(int *vol_l_val, int *vol_r_val) -{ - int VolumeBuf[2] = {0, 0}; - char *match_names = GetAlsaControlName(CC_GET_ALSA_CTL_INTERNAL_DAC_ADC_DIGITAL_CAPTURE_VOLUME_NAME); - - AudioControlGetValue(2, VolumeBuf, match_names); - - *vol_l_val = VolumeBuf[0]; - *vol_r_val = VolumeBuf[1]; - - return 0; -} - -int CAudioAlsa::SetAudioInternalDacDACDigitalPlayBackVolume(int vol_l_val, int vol_r_val) -{ - int VolumeBuf[2] = {0, 0}; - char *match_names = GetAlsaControlName(CC_GET_ALSA_CTL_INTERNAL_DAC_DAC_DIGITAL_PLAYBACK_VOLUME_NAME); - - VolumeBuf[0] = vol_l_val; - VolumeBuf[1] = vol_r_val; - if (vol_l_val < 0 || vol_l_val > 255) { - VolumeBuf[0] = 255; - } - if (vol_r_val < 0 || vol_r_val > 255) { - VolumeBuf[1] = 255; - } - - return AudioControlSetValue(2, VolumeBuf, match_names); -} - -int CAudioAlsa::GetAudioInternalDacDACDigitalPlayBackVolume(int *vol_l_val, int *vol_r_val) -{ - int VolumeBuf[2] = {0, 0}; - char *match_names = GetAlsaControlName(CC_GET_ALSA_CTL_INTERNAL_DAC_DAC_DIGITAL_PLAYBACK_VOLUME_NAME); - - AudioControlGetValue(2, VolumeBuf, match_names); - - *vol_l_val = VolumeBuf[0]; - *vol_r_val = VolumeBuf[1]; - - return 0; -} - -int CAudioAlsa::SetInternalDacLineInSelectChannel(int line_in_number) -{ - int tmp_ret = 0; - char *match_names = NULL; - - if (line_in_number < 0 || line_in_number > 7) { - return -1; - } - - match_names = GetAlsaControlName(CC_GET_ALSA_CTL_INTERNAL_DAC_LEFT_LINEIN_SEL_NAME); - tmp_ret |= AudioControlSetValue(1, &line_in_number, match_names); - - match_names = GetAlsaControlName(CC_GET_ALSA_CTL_INTERNAL_DAC_RIGHT_LINEIN_SEL_NAME); - tmp_ret |= AudioControlSetValue(1, &line_in_number, match_names); - - return tmp_ret; -} - -int CAudioAlsa::SetInternalDacLineInCaptureVolume(int l_vol, int r_vol) -{ - int max_val = GetLineInMaxVol(); - char *match_names = GetAlsaControlName(CC_GET_ALSA_CTL_INTERNAL_DAC_LINEIN_CAPTURE_VOLUME_NAME); - int VolumeBuf[2]; - - VolumeBuf[0] = CheckVolume(l_vol, 0, max_val, 0, max_val); - VolumeBuf[1] = CheckVolume(r_vol, 0, max_val, 0, max_val); - - return AudioControlSetValue(2, VolumeBuf, match_names); -} - -int CAudioAlsa::GetInternalDacLineInCaptureVolume(int vol_buf[]) -{ - int max_val = GetLineInMaxVol(); - char *match_names = GetAlsaControlName(CC_GET_ALSA_CTL_INTERNAL_DAC_LINEIN_CAPTURE_VOLUME_NAME); - - return GetTwoChannelVolume(vol_buf, 0, max_val, 0, max_val, match_names, 0, max_val); -} - -int CAudioAlsa::SetInternalDacLineOutPlayBackVolume(int l_vol, int r_vol) -{ - int max_val = GetLineOutMaxVol(); - char *match_names = GetAlsaControlName(CC_GET_ALSA_CTL_INTERNAL_DAC_LINEOUT_PLAYBACK_VOLUME_NAME); - int VolumeBuf[2]; - - VolumeBuf[0] = CheckVolume(l_vol, 0, max_val, 0, max_val); - VolumeBuf[1] = CheckVolume(r_vol, 0, max_val, 0, max_val); - - return AudioControlSetValue(2, VolumeBuf, match_names); -} - -int CAudioAlsa::GetInternalDacLineOutPlayBackVolume(int vol_buf[]) -{ - int max_val = GetLineOutMaxVol(); - char *match_names = GetAlsaControlName(CC_GET_ALSA_CTL_INTERNAL_DAC_LINEOUT_PLAYBACK_VOLUME_NAME); - - return GetTwoChannelVolume(vol_buf, 0, max_val, 0, max_val, match_names, 0, max_val); -} - -int CAudioAlsa::SetAudioPcmPlaybackVolume(int vol) -{ - if (get_USB_Audio_card() == -EINVAL) return 0; - char *match_names = GetAlsaControlName(CC_GET_ALSA_CTL_PCM_PLAYBACK_VOLUME); - return HandleUSBAudioControlValue(1, &vol, 1, &match_names); -} - -int CAudioAlsa::SetAudioPcmPlaybackSwitch(int vol) -{ - if (get_USB_Audio_card() == -EINVAL) return 0; - char *match_names = GetAlsaControlName(CC_GET_ALSA_CTL_PCM_PLAYBACK_SWITCH); - return HandleUSBAudioControlValue(1, &vol, 1, &match_names); -} - -int CAudioAlsa::SetExternalDacChannelSwitch(int chan_ind, int switch_val) -{ - char *match_names = NULL; - - if (chan_ind == 1) { - match_names = GetAlsaControlName(CC_GET_ALSA_CTL_EXTERNAL_DAC_CH1_SWITCH_NAME); - } else if (chan_ind == 2) { - match_names = GetAlsaControlName(CC_GET_ALSA_CTL_EXTERNAL_DAC_CH2_SWITCH_NAME); - } else if (chan_ind == 3) { - match_names = GetAlsaControlName(CC_GET_ALSA_CTL_EXTERNAL_DAC_CH3_SWITCH_NAME); - } else { - return -1; - } - - return AudioControlSetValue(1, &switch_val, match_names); -} - -int CAudioAlsa::SetExternalDacChannelVolume(int chan_ind, int main_vol) -{ - int tmp_ret = 0; - char *match_names = NULL; - - if (chan_ind == 0) { - match_names = GetAlsaControlName(CC_GET_ALSA_CTL_EXTERNAL_DAC_MASTER_VOLUME_NAME); - } else if (chan_ind == 1) { - match_names = GetAlsaControlName(CC_GET_ALSA_CTL_EXTERNAL_DAC_CH1_VOLUME_NAME); - } else if (chan_ind == 2) { - match_names = GetAlsaControlName(CC_GET_ALSA_CTL_EXTERNAL_DAC_CH2_VOLUME_NAME); - } else if (chan_ind == 3) { - match_names = GetAlsaControlName(CC_GET_ALSA_CTL_EXTERNAL_DAC_CH3_VOLUME_NAME); - } else { - return -1; - } - - return AudioControlSetValue(1, &main_vol, match_names); -} -int CAudioAlsa::SetAudioSwitchIO(int value) -{ - char *match_names = gG9AlsaNames[CC_GET_ALSA_CTL_AUDIO_IN_SWITCH]; - - return AudioControlSetValue(1, &value, match_names); -} -int CAudioAlsa::SetOutput_Swap(int value) -{ - char *match_names = gG9AlsaNames[CC_GET_ALSA_CTL_SETOUTPUT_SWAP]; - - return AudioControlSetValue(1, &value, match_names); -} - -int CAudioAlsa::SetExternalDacEQMode(int mode_val) -{ - char *match_names = NULL; - - match_names = GetAlsaControlName(CC_GET_ALSA_CTL_EXTERNAL_DAC_EQ_MODE_NAME); - return AudioControlSetValue(1, &mode_val, match_names); -} - -int CAudioAlsa::SetI2SMute(int mute_status) -{ - char *match_names = NULL; - - if (mute_status != CC_I2S_MUTE_ON && mute_status != CC_I2S_MUTE_OFF) { - LOGE("%s, I2S mute value (%d) error!\n", __FUNCTION__, mute_status); - return -1; - } - - match_names = GetAlsaControlName(CC_GET_ALSA_CTL_I2S_MUTE_NAME); - return AudioControlSetValue(1, &mute_status, match_names); -} - -int CAudioAlsa::SetSPDIFMute(int mute_status) -{ - int set_val = 0; - char *match_names = NULL; - - if (mute_status == CC_AUDIO_MUTE) { - set_val = CC_SPDIF_MUTE_ON; - } else if (mute_status == CC_AUDIO_UNMUTE) { - set_val = CC_SPDIF_MUTE_OFF; - } else { - return -1; - } - match_names = GetAlsaControlName(CC_GET_ALSA_CTL_SPDIF_MUTE_NAME); - return AudioControlSetValue(1, &mute_status, match_names); -} - -#define CC_SAMPLE_BUF_SIZE (32) - -enum CC_HW_RESAMPLE_TYPE { - CC_HW_RESAMPLE_DISABLE, - CC_HW_RESAMPLE_48K, - CC_HW_RESAMPLE_44K, - CC_HW_RESAMPLE_32K, -}; - -int CAudioAlsa::SetHardwareResample(int sr) -{ - int i = 0, set_val = 0, tmp_val = 0; - int diff_val = 0x7FFFFFFF, diff_ind = -1; - char *match_names = NULL; - int sample_buf[CC_SAMPLE_BUF_SIZE] = {48000, 44100, 32000, -1}; - - if (sr < 0) { - set_val = 0; - } else { - for (i = 0; i < CC_SAMPLE_BUF_SIZE; i++) { - if (sample_buf[i] < 0) { - break; - } - - if (sample_buf[i] >= sr) { - tmp_val = sample_buf[i] - sr; - } else { - tmp_val = sr - sample_buf[i]; - } - - if (tmp_val <= diff_val) { - diff_val = tmp_val; - diff_ind = i; - } - } - - if (diff_ind < 0) { - set_val = 0; - } else { - set_val = diff_ind + 1; - } - } - - LOGD("%s, set_val = %d.\n", __FUNCTION__, set_val); - match_names = GetAlsaControlName(CC_GET_ALSA_CTL_HW_RESAMPLE_NAME); - return AudioControlSetValue(1, &set_val, match_names); -} - -int CAudioAlsa::SetMixerBypassSwitch(int switch_val) -{ - char match_names[48] = "Output Mixer Bypass Switch" ; - int ctl_buf[2]; - - if (switch_val != 0 && switch_val != 1) { - return -1; - } - - ctl_buf[0] = switch_val; - ctl_buf[1] = switch_val; - - return AudioControlSetValue(2, ctl_buf, match_names); -} - -int CAudioAlsa::GetMixerBypassSwitch(void) -{ - char match_names[48] = "Output Mixer Bypass Switch" ; - int ctl_buf[2]; - - AudioControlSetValue(2, ctl_buf, match_names); - - return ctl_buf[0]; -} - -int CAudioAlsa::SetMixerDacSwitch(int switch_val) -{ - char match_names[48] = "Output Mixer DAC Switch" ; - int ctl_buf[2]; - - if (switch_val != 0 && switch_val != 1) { - return -1; - } - - ctl_buf[0] = switch_val; - ctl_buf[1] = switch_val; - - return AudioControlSetValue(2, ctl_buf, match_names); -} - -int CAudioAlsa::GetMixerDacSwitch(void) -{ - int ctl_buf[2]; - AudioControlGetValue(2, ctl_buf, (char *)"Output Mixer DAC Switch"); - return ctl_buf[0]; -} - -int CAudioAlsa::TransVolumeBarVolToDigitalVol(int digit_lut_buf[], int digit_vol) -{ - return digit_lut_buf[digit_vol]; -} - -int CAudioAlsa::TransDigitalVolToVolumeBarVol(int digit_lut_buf[], int hd_vol, - int hd_min __unused, int hd_max __unused, - int digit_min __unused, int digit_max) -{ - int i = 0; - for (; i < CC_VOL_TRANS_LUT_BUF_SIZE - 1; i++) { - if (digit_lut_buf[i] >= hd_vol && digit_lut_buf[i + 1] < hd_vol) - break; - } - - if (i < CC_VOL_TRANS_LUT_BUF_SIZE - 1) - return i; - - return digit_max; -} - -void CAudioAlsa::SetMainVolDigitLutBuf(int digit_lut_buf[]) -{ - memcpy((void *) mMainDigitLutBuf, digit_lut_buf, - CC_VOL_TRANS_LUT_BUF_SIZE * sizeof(int)); -} - -int *CAudioAlsa::GetMainVolDigitLutBuf() -{ - return mMainDigitLutBuf; -} -void CAudioAlsa::SetSupperBassVolDigitLutBuf(int digit_lut_buf[]) -{ - memcpy((void *) mSupperBassDigitLutBuf, digit_lut_buf, - CC_VOL_TRANS_LUT_BUF_SIZE * sizeof(int)); -} - - -int CAudioAlsa::SetMainVolumeGain(int gain_val) -{ - mMainVolumeGainVal = gain_val; - return mMainVolumeGainVal; -} - -int CAudioAlsa::GetMainVolumeGain() -{ - return mMainVolumeGainVal; -} - -int CAudioAlsa::SetSupperBassVolumeGain(int gain_val) -{ - int tmp_val = 0; - tmp_val = mSupperBassVolumeGainVal; - mSupperBassVolumeGainVal = gain_val; - return tmp_val; -} - -int CAudioAlsa::GetSupperBassVolumeGain() -{ - int tmp_val = 0; - tmp_val = mSupperBassVolumeGainVal; - return tmp_val; -} - - -int CAudioAlsa::CalculateBalanceVol(int max_vol, int balance_val, int vol_buf[]) -{ - int bal_mid_vol = 0, bal_cal_len = 0; - int tmp_val = 0; - - vol_buf[0] = max_vol; - vol_buf[1] = max_vol; - - bal_mid_vol = (CC_MIN_SOUND_BALANCE_VAL + CC_MAX_SOUND_BALANCE_VAL) / 2; - bal_cal_len = (CC_MAX_SOUND_BALANCE_VAL - CC_MIN_SOUND_BALANCE_VAL) / 2; - - if (balance_val == bal_mid_vol) { - LOGD( - "%s, balance value = %d, bal_mid_vol = %d, vol_buf[0] = %d, vol_buf[1] = %d.\n", - __FUNCTION__, balance_val, bal_mid_vol, vol_buf[0], vol_buf[1]); - return 0; - } else if (balance_val < bal_mid_vol) { - vol_buf[1] = (bal_cal_len - (bal_mid_vol - balance_val)) * max_vol / bal_cal_len; - } else if (balance_val > bal_mid_vol) { - vol_buf[0] = (bal_cal_len - (balance_val - bal_mid_vol)) * max_vol / bal_cal_len; - } - - if (GetAudioAmplifierBalanceExchangeCFG() != 0) { - tmp_val = vol_buf[0]; - vol_buf[0] = vol_buf[1]; - vol_buf[1] = tmp_val; - } - - LOGD( - "%s, balance value = %d, bal_mid_vol = %d, vol_buf[0] = %d, vol_buf[1] = %d.\n", - __FUNCTION__, balance_val, bal_mid_vol, vol_buf[0], vol_buf[1]); - return 0; -} - - -int CAudioAlsa::SetInternalDacMute(int mute_state) -{ - int ret = 0; - if (mute_state == CC_AUDIO_MUTE) - ret = SetAudioInternalDacDACDigitalPlayBackVolume(0, 0); - else - ret = SetAudioInternalDacDACDigitalPlayBackVolume(255, 255); - return ret; -} - -int CAudioAlsa::setAudioPcmPlaybackMute(int mute_state) -{ - char prop[256]; - property_get("audio.output.double_output", prop, "null"); - if ( Get2d4gHeadsetEnable() == 1 && (strcmp(prop, "0") == 0 || strcmp(prop, "null") == 0)) { - SetAudioPcmPlaybackSwitch(mute_state); - } - return 0; -} - - -int CAudioAlsa::SetInternalDacMainVolume(int main_vol) -{ - int tmp_ret = 0, digit_vol = 0; - digit_vol = TransVolumeBarVolToDigitalVol(mMainDigitLutBuf, main_vol); - - return SetInternalDacLineOutPlayBackVolume(digit_vol, digit_vol); -} - - -static int gDigitalMuteStatus = CC_AUDIO_UNMUTE; -static int gDigitalLeftVol = 0; -static int gDigitalRightVol = 0; - -int CAudioAlsa::SetDigitalVolume(int l_val, int r_val) -{ - amAudioSetLeftGain(l_val); - amAudioSetRightGain(r_val); - LOGD("%s, l_val = %d, r_val = %d.\n", __FUNCTION__, l_val, r_val); - return 0; -} - -int CAudioAlsa::SetDigitalMainVolume(int l_vol, int r_vol) -{ - int tmp_ret = 0, l_val = 0, r_val = 0; - - //handle l&r channel volume for balance - l_val = TransVolumeBarVolToDigitalVol(mMainDigitLutBuf, l_vol); - r_val = TransVolumeBarVolToDigitalVol(mMainDigitLutBuf, r_vol); - - gDigitalLeftVol = l_val; - gDigitalRightVol = r_val; - if (gDigitalMuteStatus == CC_AUDIO_UNMUTE) { - SetDigitalVolume(l_val, r_val); - } - - return tmp_ret; -} - -int CAudioAlsa::SetDigitalMute(int mute_status) -{ - gDigitalMuteStatus = mute_status; - if (mute_status == CC_AUDIO_MUTE) { - SetDigitalVolume(0, 0); - } else if (mute_status == CC_AUDIO_UNMUTE) { - SetDigitalVolume(gDigitalLeftVol, gDigitalRightVol); - } - - return 0; -} - diff --git a/tvapi/libtv/audio/audio_alsa.h b/tvapi/libtv/audio/audio_alsa.h deleted file mode 100644 index af22cb7..0000000 --- a/tvapi/libtv/audio/audio_alsa.h +++ b/dev/null @@ -1,127 +0,0 @@ -#ifndef __TV_AUDIO_ALSA_H__ -#define __TV_AUDIO_ALSA_H__ - -enum CC_AUD_I2S_MUTE { - CC_I2S_MUTE_OFF, - CC_I2S_MUTE_ON, -}; - -enum CC_AUDIO_MUTE_STATUS { - CC_MUTE_ON, - CC_MUTE_OFF, -}; -enum CC_AUD_SPDIF_MUTE { - CC_SPDIF_MUTE_OFF, - CC_SPDIF_MUTE_ON, -}; - -enum CC_AUD_IN_TYPE { - CC_AUDIO_IN_SOURCE_LINEIN, - CC_AUDIO_IN_SOURCE_ATV, - CC_AUDIO_IN_SOURCE_HDMI, -}; - - -#define CC_MIN_DAC_VOLUME (0) -#define CC_MAX_DAC_VOLUME (255) -#define CC_MIN_DAC_SUB_WOOFER_VOLUME (0) -#define CC_MAX_DAC_SUB_WOOFER_VOLUME (255) - -#define CC_MIN_SOUND_BALANCE_VAL (0) -#define CC_MAX_SOUND_BALANCE_VAL (100) -#define CC_DEF_SOUND_BALANCE_VAL (50) - -#define CC_DAC_MUTE_TYPE_EXTERNAL (1) -#define CC_DAC_MUTE_TYPE_INTERNAL (2) - -#define CC_VOL_TRANS_LUT_BUF_SIZE (101) - -static const int CC_AUDIO_MUTE = 1; -static const int CC_AUDIO_UNMUTE = 0; - -enum CC_AUDIO_SOURCE_TYPE { - AUDIO_HDMI_SOURCE, - AUDIO_ATV_SOURCE, - AUDIO_AV_SOURCE, - AUDIO_MPEG_SOURCE, - AUDIO_MAX_SOURCE -}; - - -//use tinyalsa,is a like alsa-lib for android -class CAudioAlsa { -public: - CAudioAlsa(); - ~CAudioAlsa(); - int SetAudioInSource(int source_type); - int GetAudioInSource(void); - int SetAudioInternalDacPGAInGain(int gain_l_val, int gain_r_val); - int GetAudioInternalDacPGAInGain(int *gain_l_val, int *gain_r_val); - int SetAudioInternalDacADCDigitalCaptureVolume(int vol_l_val, int vol_r_val); - int GetAudioInternalDacADCDigitalCaptureVolume(int *vol_l_val, int *vol_r_val); - int SetAudioInternalDacDACDigitalPlayBackVolume(int vol_l_val, int vol_r_val); - int GetAudioInternalDacDACDigitalPlayBackVolume(int *vol_l_val, int *vol_r_val); - int SetInternalDacLineInSelectChannel(int line_in_number); - int SetInternalDacLineInCaptureVolume(int l_vol, int r_vol); - int GetInternalDacLineInCaptureVolume(int vol_buf[]); - int SetInternalDacLineOutPlayBackVolume(int l_vol, int r_vol); - int GetInternalDacLineOutPlayBackVolume(int vol_buf[]); - int SetExternalDacChannelSwitch(int chan_ind, int switch_val); - int SetExternalDacChannelVolume(int chan_ind, int main_vol); - int SetExternalDacEQMode(int mode_val); - int SetI2SMute(int mute_status); - int SetSPDIFMute(int mute_status); - int SetHardwareResample(int sr); - int SetAudioSwitchIO(int value); - int SetAudioPcmPlaybackVolume(int val); - int SetAudioPcmPlaybackSwitch(int vol); - - int SetOutput_Swap(int value); - - - int SetMixerBypassSwitch(int switch_val); - int GetMixerBypassSwitch(void); - int SetMixerDacSwitch(int switch_val); - int GetMixerDacSwitch(void); - //dac - void SetMainVolDigitLutBuf(int digit_lut_buf[]); - int *GetMainVolDigitLutBuf(); - void SetSupperBassVolDigitLutBuf(int digit_lut_buf[]); - int SetMainVolumeGain(int gain_val); - int GetMainVolumeGain(); - int SetSupperBassVolumeGain(int gain_val); - int GetSupperBassVolumeGain(); - int SetInternalDacMute(int); - int setAudioPcmPlaybackMute(int); - //end dac - int TransVolumeBarVolToDigitalVol(int *, int); - int TransDigitalVolToVolumeBarVol(int *, int, int, int, int, int); - int CalculateBalanceVol(int, int, int *); - int SetExternalDacMainVolume(int); - int SetInternalDacMainVolume(int); - int SetDigitalVolume(int, int); - int SetDigitalMainVolume(int, int); - int SetDigitalMute(int); -private: - int get_aml_card(); - int AudioControlSetValue(int val_count, int data_buf[], char *match_names); - int AudioControlGetValue(int val_count, int ret_buf[], char *match_names); - int get_USB_Audio_card(); - int HandleUSBAudioControlValue(int val_count, int data_buf[], int match_count, char **match_names); - int CheckVolume(int digit_vol, int digit_min, int digit_max, int hd_min, int hd_max); - int GetTwoChannelVolume(int vol_buf[], int l_min_vol, int l_max_vol, int r_min_vol, int r_max_vol, char *match_names, int hd_min, int hd_max); - int GetLineInMaxVol(); - int GetLineOutMaxVol(); - char *GetAlsaControlName(int get_type); - // - // - //mem - struct mixer *mpMixer; - struct mixer *mpUsbMixer; - int mMainVolumeBalanceVal; - int mMainVolumeGainVal; - int mSupperBassVolumeGainVal; - int mMainDigitLutBuf[CC_VOL_TRANS_LUT_BUF_SIZE]; - int mSupperBassDigitLutBuf[CC_VOL_TRANS_LUT_BUF_SIZE]; -}; -#endif //__TV_AUDIO_ALSA_H__ diff --git a/tvapi/libtv/audio/audio_effect.cpp b/tvapi/libtv/audio/audio_effect.cpp deleted file mode 100644 index 8992f5f..0000000 --- a/tvapi/libtv/audio/audio_effect.cpp +++ b/dev/null @@ -1,131 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <malloc.h> -#include <unistd.h> -#include <pthread.h> - -#include <sys/types.h> -#include <sys/stat.h> -#include <sys/poll.h> -#include <sys/ioctl.h> -#include <fcntl.h> - -#include "audio_amaudio.h" -#include "audio_effect.h" - -#define LOG_TAG "CAudioEffect" -#include "CTvLog.h" - -CAudioEffect::CAudioEffect() -{ -} - -CAudioEffect::~CAudioEffect() -{ -} - -int CAudioEffect::GetEQBandCount() -{ - return CC_BAND_ITEM_CNT; -} - -int CAudioEffect::SetEQSwitch(int switch_val) -{ - int tmp_ret = 0; - tmp_ret |= amAudioSetEQEnable(switch_val); - return tmp_ret; -} - -int CAudioEffect::GetEQSwitch() -{ - int tmp_ret = 0; - return 0; -} - -int CAudioEffect::SetEQValue(int gain_val_buf[]) -{ - int tmp_ret = 0; - tmp_ret |= amAudioSetEQGain(gain_val_buf, CC_BAND_ITEM_CNT); - return tmp_ret; -} - -int CAudioEffect::GetEQValue(int gain_val_buf[] __unused) -{ - return 0; -} - -int CAudioEffect::SetSrsSurroundSwitch(int switch_val) -{ - int tmp_ret = 0; - tmp_ret |= amAudioSetSRSSurroundSwitch(switch_val); - return tmp_ret; -} - -int CAudioEffect::SetSrsSurroundGain(int gain_val) -{ - int tmp_ret = 0; - 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); - return tmp_ret; -} - -int CAudioEffect::SetSrsTruBassSwitch(int switch_val) -{ - int tmp_ret = 0; - tmp_ret |= amAudioSetSRSTrubassSwitch(switch_val); - return tmp_ret; -} - -int CAudioEffect::SetSrsTruBassGain(int gain_val) -{ - int tmp_ret = 0; - tmp_ret |= amAudioSetSRSTrubassGain(gain_val); - return tmp_ret; -} - -int CAudioEffect::SetSrsDialogClaritySwitch(int switch_val) -{ - int tmp_ret = 0; - tmp_ret |= amAudioSetSRSDialogClaritySwitch(switch_val); - return tmp_ret; -} - -int CAudioEffect::SetSrsDialogClarityGain(int gain_val) -{ - int tmp_ret = 0; - tmp_ret |= amAudioSetSRSDialogClarityGain(gain_val); - return tmp_ret; -} - -int CAudioEffect::SetSrsDefinitionGain(int gain_val) -{ - int tmp_ret = 0; - tmp_ret |= amAudioSetSRSDefinitionGain(gain_val); - return tmp_ret; -} - -int CAudioEffect::SetSrsTrubassSpeakerSize(int set_val) -{ - int tmp_ret = 0; - tmp_ret |= amAudioSetSRSTrubassSpeakerSize(set_val); - return tmp_ret; -} - -int CAudioEffect::DbxTv_SetMode(int mode __unused, int son_value, int vol_value, int sur_value) -{ - son_value = son_value; - vol_value = vol_value; - sur_value = sur_value; - - int ret = 0; -#ifdef TV_AUDIO_USE_DBX_TV - ret |= amAudioSetDBXTVParameter( son_value, vol_value, sur_value); -#endif - return ret; -} diff --git a/tvapi/libtv/audio/audio_effect.h b/tvapi/libtv/audio/audio_effect.h deleted file mode 100644 index 65e8003..0000000 --- a/tvapi/libtv/audio/audio_effect.h +++ b/dev/null @@ -1,27 +0,0 @@ -#ifndef __TV_AUDIO_EFFECT_H__ -#define __TV_AUDIO_EFFECT_H__ -#define CC_BAND_ITEM_CNT ( 6 ) -class CAudioEffect { -public: - CAudioEffect(); - ~CAudioEffect(); - int GetEQBandCount(); - int SetEQSwitch(int switch_val); - int GetEQSwitch(); - int SetEQValue(int gain_val_buf[]); - int GetEQValue(int gain_val_buf[]); - - int SetSrsSurroundSwitch(int switch_val); - int SetSrsInputOutputGain(int input_gain_val, int output_gain_val); - int SetSrsSurroundGain(int gain_val); - int SetSrsTruBassSwitch(int switch_val); - int SetSrsTruBassGain(int gain_val); - int SetSrsDialogClaritySwitch(int switch_val); - int SetSrsDialogClarityGain(int gain_val); - int SetSrsDefinitionGain(int gain_val); - int SetSrsTrubassSpeakerSize(int tmp_val); - int DbxTv_SetMode(int mode, int son_value, int vol_value, int sur_value); - -private: -}; -#endif //__TV_AUDIO_EFFECT_H__ diff --git a/tvapi/libtv/include/amstream.h b/tvapi/libtv/include/amstream.h deleted file mode 100644 index 434c028..0000000 --- a/tvapi/libtv/include/amstream.h +++ b/dev/null @@ -1,263 +0,0 @@ -#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/tvapi/libtv/include/amvecm.h b/tvapi/libtv/include/amvecm.h deleted file mode 100644 index 1b488f6..0000000 --- a/tvapi/libtv/include/amvecm.h +++ b/dev/null @@ -1,68 +0,0 @@ -#ifndef __AMVECM_H -#define __AMVECM_H - -#include "ve.h" -#include "cm.h" -#include "amstream.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) - -#endif /* __AMVECM_H */ - diff --git a/tvapi/libtv/include/cm.h b/tvapi/libtv/include/cm.h deleted file mode 100644 index bb516db..0000000 --- a/tvapi/libtv/include/cm.h +++ b/dev/null @@ -1,155 +0,0 @@ -#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; - -/* 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; -#endif - -#endif // _TVOUT_CM_H diff --git a/tvapi/libtv/include/hdmirx_cec.h b/tvapi/libtv/include/hdmirx_cec.h deleted file mode 100644 index e7bfd06..0000000 --- a/tvapi/libtv/include/hdmirx_cec.h +++ b/dev/null @@ -1,331 +0,0 @@ -/* - * hdmirx_drv.h for HDMI device driver, and declare IO function, - * structure, enum, used in TVIN AFE sub-module processing - * - * Copyright (C) 2013 AMLOGIC, INC. All Rights Reserved. - * - * This program is free software; you can redistribute it and/or modify - * it under the smems of the GNU General Public License as published by - * the Free Software Foundation; version 2 of the License. - */ - -#ifndef _HDMICEC_H -#define _HDMICEC_H - -#define CEC_MSG_QUEUE_SIZE 20 - -typedef enum _cec_logic_addr { - E_LA_TV = 0, - E_LA_RECORDER1 = 1, - E_LA_RECORDER2 = 2, - E_LA_TUNER1 = 3, - E_LA_PLAYBACK1 = 4, - E_LA_AUDIO_SYS = 5, - E_LA_TUNER2 = 6, - E_LA_TUNER3 = 7, - E_LA_PLAYBACK2 = 8, - E_LA_RECORER3 = 9, - E_LA_TUNER4 = 10, - E_LA_PLYBACK3 = 11, - RESERVED_1 = 12, - RESERVED_2 = 13, - E_LA_FREE_USE = 14, - E_LA_UNREGISTERED = 15, - E_LA_BROADCAST = 15, - E_LA_MAX = 15, -} _cec_logic_addr; - -typedef enum _cec_dev_type { - E_DEVICE_TYPE_TV = 0, - E_DEVICE_TYPE_RECORDING_DEVICE = 1, - E_DEVICE_TYPE_RESERVED = 2, - E_DEVICE_TYPE_TUNER = 3, - E_DEVICE_TYPE_PLAYBACK_DEVICE = 4, - E_DEVICE_TYPE_AUDIO_SYSTEM = 5, - E_DEVICE_TYPE_PURE_CEC_SWITCH = 6, - E_DEVICE_TYPE_VIDEO_PROCESSOR = 7 -} _cec_dev_type; - -typedef enum _cec_cmd { - //----- One Touch Play ---------------------------- - E_MSG_ACTIVE_SOURCE = 0x82, - E_MSG_IMAGE_VIEW_ON = 0x04, - E_MSG_TEXT_VIEW_ON = 0x0D, - //----- Routing Control --------------------------- - //E_MSG_RC_ACTIVE_SOURCE = 0x82, - E_MSG_INACTIVE_SOURCE = 0x9D, - E_MSG_REQUEST_ACTIVE_SOURCE = 0x85, - E_MSG_ROUTING_CHANGE = 0x80, - E_MSG_ROUTING_INFO = 0x81, - E_MSG_SET_STREM_PATH = 0x86, - //----- Standby Command --------------------------- - E_MSG_STANDBY = 0x36, - //----- One Touch Record--------------------------- - E_MSG_RECORD_ON = 0x09, - E_MSG_RECORD_OFF = 0x0B, - E_MSG_RECORD_STATUS = 0x0A, - E_MSG_RECORD_TV_SCREEN = 0x0F, - //----- Timer programmer -------------------------- CEC1.3a - E_MSG_CLEAR_ANALOG_TIMER = 0x33, - E_MSG_CLEAR_DIGITAL_TIMER = 0x99, - E_MSG_CLEAR_EXT_TIMER = 0xA1, - E_MSG_SET_ANALOG_TIMER = 0x34, - E_MSG_SET_DIGITAL_TIMER = 0x97, - E_MSG_SET_EXT_TIMER = 0xA2, - E_MSG_SET_TIMER_PROGRAM_TITLE = 0x67, - E_MSG_TIMER_CLEARD_STATUS = 0x43, - E_MSG_TIMER_STATUS = 0x35, - //----- System Information ------------------------ - E_MSG_CEC_VERSION = 0x9E, //1.3a - E_MSG_GET_CEC_VERSION = 0x9F, //1.3a - E_MSG_GIVE_PHYSICAL_ADDRESS = 0x83, - E_MSG_REPORT_PHYSICAL_ADDRESS = 0x84, - E_MSG_GET_MENU_LANGUAGE = 0x91, - E_MSG_SET_MENU_LANGUAGE = 0x32, - //E_MSG_POLLING_MESSAGE = ?, - //E_MSG_REC_TYPE_PRESET = 0x00, //parameter ? - //E_MSG_REC_TYPE_OWNSRC = 0x01, //parameter ? - //----- Deck Control Feature----------------------- - E_MSG_DECK_CTRL = 0x42, - E_MSG_DECK_STATUS = 0x1B, - E_MSG_GIVE_DECK_STATUS = 0x1A, - E_MSG_PLAY = 0x41, - //----- Tuner Control ------------------------------ - E_MSG_GIVE_TUNER_STATUS = 0x08, - E_MSG_SEL_ANALOG_SERVICE = 0x92, - E_MSG_SEL_DIGITAL_SERVICE = 0x93, - E_MSG_TUNER_DEVICE_STATUS = 0x07, - E_MSG_TUNER_STEP_DEC = 0x06, - E_MSG_TUNER_STEP_INC = 0x05, - //---------Vendor Specific ------------------------- - //E_MSG_CEC_VERSION = 0x9E, //1.3a - //E_MSG_GET_CEC_VERSION = 0x9F, //1.3a - E_MSG_DEVICE_VENDOR_ID = 0x87, - E_MSG_GIVE_DEVICE_VENDOR_ID = 0x8C, - E_MSG_VENDOR_COMMAND = 0x89, - E_MSG_VENDOR_COMMAND_WITH_ID = 0xA0, //1.3a - E_MSG_VENDOR_RC_BUT_DOWN = 0x8A, - E_MSG_VENDOR_RC_BUT_UP = 0x8B, - //----- OSD Display -------------------------------- - E_MSG_SET_OSD_STRING = 0x64, - //----- Device OSD Name Transfer ------------------------- - E_MSG_OSDNT_GIVE_OSD_NAME = 0x46, - E_MSG_OSDNT_SET_OSD_NAME = 0x47, - //----- Device Menu Control ------------------------ - E_MSG_DMC_MENU_REQUEST = 0x8D, - E_MSG_DMC_MENU_STATUS = 0x8E, - E_MSG_UI_PRESS = 0x44, - E_MSG_UI_RELEASE = 0x45, - //----- Remote Control Passthrough ---------------- - //E_MSG_UI_PRESS = 0x44, - //E_MSG_UI_RELEASE = 0x45, - //----- Power Status ------------------------------ - E_MSG_GIVE_DEVICE_POWER_STATUS = 0x8F, - E_MSG_REPORT_POWER_STATUS = 0x90, - //----- General Protocal Message ------------------ - E_MSG_ABORT_MESSAGE = 0xFF, //Abort msg - E_MSG_FEATURE_ABORT = 0x00, //Feature Abort - //----- System Audio Control ---------------------- - E_MSG_ARC_GIVE_AUDIO_STATUS = 0x71, - E_MSG_ARC_GIVE_SYSTEM_AUDIO_MODE_STATUS = 0x7D, - E_MSG_ARC_REPORT_AUDIO_STATUS = 0x7A, - E_MSG_ARC_SET_SYSTEM_AUDIO_MODE = 0x72, - E_MSG_ARC_SYSTEM_AUDIO_MODE_REQUEST = 0x70, - E_MSG_ARC_SYSTEM_AUDIO_MODE_STATUS = 0x7E, - E_MSG_ARC_SET_AUDIO_RATE = 0x9A, - //----- Audio Return Channel Control ------------- - E_MSG_ARC_INITIATE_ARC = 0xC0, - E_MSG_ARC_REPORT_ARC_INITIATED = 0xC1, - E_MSG_ARC_REPORT_ARC_TERMINATED = 0xC2, - E_MSG_ARC_REQUEST_ARC_INITATION = 0xC3, - E_MSG_ARC_REQUEST_ARC_TERMINATION = 0xC4, - E_MSG_ARC_TERMINATED_ARC = 0xC5, - - E_MSG_CDC_MESSAGE = 0xF8, - //amlogic cmd - //TCL - CMD_TCL_WIFI = 0x01, - CMD_TCL_ETHERNET = 0x02, - CMD_TCL_3D = 0x03, - CMD_TCL_PANEL_REVERSE = 0x04, - CMD_RESERVE1 = 0x05, - CMD_RESERVE2 = 0x06, - CMD_RESERVE3 = 0x07, - //VPU - CMD_VPU_INIT = 0x08, - CMD_VPU_ENABLE = 0x09, - CMD_VPU_BYPASS = 0x0a, - CMD_VPU_OUTPUT_MUX = 0x0b, - CMD_VPU_TIMING = 0x0c, - CMD_VPU_SOURCE = 0x0d, - CMD_RESERVE4 = 0x0e, - CMD_RESERVE5 = 0x0f, - //TCL || AML - CMD_TCL_BRIDGE_SW_VER = 0x10, - //CMD_G9_MAINCODE_VER = 0x10, - CMD_TCL_DEVICE_ID = 0x11, - //CMD_G9_BOOTCODE_VER = 0x11, - CMD_TCL_CLIENT_TYPE = 0x12, - //CMD_INFO_G9_TO_FBC = 0x12, - CMD_TCL_DEVICE_NUM = 0x13, - //CMD_INFO_FBC_TO_G9 = 0x13, - CMD_TCL_ACTIVE_KEY = 0x14, - //CMD_TIME_SYNC = 0x14, - CMD_TCL_ACTIVE_STATUS = 0x15, - //CMD_KEY_TRANSLATION = 0x15, - CMD_RESERVE6 = 0x16, - CMD_RESERVE7 = 0x17, - //DEBUG READ - CMD_DBG_RD_REGISTER_ACCESS = 0x18, - CMD_DBG_RD_MEMORY_ACCESS = 0x19, - CMD_DBG_RD_SPI_ACCESS = 0x1a, - CMD_DBG_RD_VPU_MEMORY_ACCESS = 0x1b, - CMD_DBG_RD_MEMORY_TRANSFER = 0x1c, - CMD_DBG_INPUT_KEY_DOWN = 0x1d, - CMD_DBG_INPUT_KEY_UP = 0x1e, - CMD_DBG_INPUT_REBOOT = 0x1f, - //DEBUG WRITE - CMD_DBG_WR_REGISTER_ACCESS = 0x98, - CMD_DBG_WR_MEMORY_ACCESS = 0x99, - CMD_DBG_WR_SPI_ACCESS = 0x9a, - CMD_DBG_WR_VPU_MEMORY_ACCESS = 0x9b, - CMD_DBG_WR_MEMORY_TRANSFER = 0x9c, - //USER - CMD_NATURE_LIGHT_ONOFF = 0x20, - CMD_USR_BACKLIGHT_ONOFF = 0x21, - CMD_USR_BRIGHTNESS = 0x22, - CMD_USR_CONTRAST = 0x23, - CMD_USR_BACKLIGHT = 0x24, - CMD_RESERVE25 = 0x25, - CMD_USR_SATURATION = 0x26, - CMD_USR_DYNAMIC_CONTRAST = 0x27, - CMD_USR_PICTURE_MODE = 0x28, - CMD_TEST_PATTERN_ONOFF = 0x29, - CMD_TEST_PATTERN_SELECT = 0x2a, - CMD_RESERVE8 = 0x2b, - CMD_RESERVE9 = 0x2c, - CMD_RESERVE10 = 0x2d, - CMD_RESERVE11 = 0x2e, - CMD_USR_GAMMA = 0x2f, - //FACTORY - CMD_DEF_SOUND_MODE = 0x30, - CMD_DEF_COLOR_TEMPERATURE = 0x31, - CMD_DEF_BRIGHTNESS = 0x32, - CMD_DEF_CONTRAST = 0x33, - CMD_DEF_COLOR = 0x34, - CMD_RESERVE12 = 0x35, - CMD_DEF_BACKLIGHT = 0x36, - CMD_RESERVE13 = 0x37, - CMD_AUTO_LUMA_ONOFF = 0x38, - CMD_HISTOGRAM = 0x39, - CMD_BLEND = 0x3a, - CMD_DEMULA = 0x3b, - CMD_COLORSPACE_CONVERSION = 0x3c, - CMD_CM2 = 0x3d, - CMD_RESERVE14 = 0x3e, - CMD_RESERVE15 = 0x3f, - // GAIN & OFFSET & WHITEBLANCE - CMD_DEF_RED_GAIN = 0x40, - CMD_DEF_GREEN_GAIN = 0x41, - CMD_DEF_BLUE_GAIN = 0x42, - CMD_DEF_RED_OFFSET = 0x43, - CMD_DEF_GREEN_OFFSET = 0x44, - CMD_DEF_BLUE_OFFSET = 0x45, - CMD_DEF_PRE_RED_OFFSET = 0x46, - CMD_DEF_PRE_GREEN_OFFSET = 0x47, - CMD_DEF_PRE_BLUE_OFFSET = 0x48, - CMD_RESERVE16 = 0x49, - CMD_WHITEBLANCE = 0x4a, - - CMD_SET_SW_VERSION = 0x57, - CMD_3D = 0xd0, - - CMD_MAX = 0xff -} _cec_cmd; - -typedef struct _cec_msg { - unsigned char addr; //refer as enum _cec_logic_addr - unsigned char cmd; //refer as enum _cec_cmd - unsigned char msg_data[14]; - unsigned char msg_len; -} _cec_msg; - -typedef union tagCECMsgStream { - unsigned char buf[17]; - struct _cec_msg msg; -} CECMsgStream; - -typedef struct _cec_dev_map { - enum _cec_logic_addr logic_addr; - unsigned int phy_addr; - int cec_dev_type; - char cec_dev_name[14]; -} _cec_dev_map; - -typedef struct _cec_msg_queue { - struct _cec_msg cec_msg[CEC_MSG_QUEUE_SIZE]; - int wr_index; - int rd_index; -} _cec_msg_queue; - - - -typedef enum _cec_status { - E_CEC_FEATURE_ABORT = 0x00, - E_CEC_RX_SUCCESS = 0x01, - E_CEC_TX_SUCCESS = 0x02, - E_CEC_RF = 0x04, - E_CEC_LOST_ABT = 0x08, - E_CEC_BIT_SHORT = 0x10, - E_CEC_BIT_LONG = 0x20, - E_CEC_NACK = 0x40, - E_CEC_SYSTEM_BUSY = 0x80, -} _cec_status; - - -typedef enum _cec_map_status { - E_CEC_MAP_UPDATE_START = 0, - E_CEC_MAP_POLLLING = 1, - E_CEC_MAP_GET_VENDOR_ID = 2, - E_CEC_MAP_GET_PHYSICAL_ADDR = 3, - E_CEC_MAP_GET_OSD_NAME = 4, - E_CEC_MAP_GET_CEC_VERSION = 5, - E_CEC_MAP_UPDATE_COMPLETED = 6, -} _cec_map_status; - -#define HDMI_IOC_MAGIC 'H' -#define HDMI_IOC_CEC_ON _IO(HDMI_IOC_MAGIC, 0x01) -#define HDMI_IOC_CEC_OFF _IO(HDMI_IOC_MAGIC, 0x02) -#define HDMI_IOC_CEC_ARC_ON _IO(HDMI_IOC_MAGIC, 0x03) -#define HDMI_IOC_CEC_ARC_OFF _IO(HDMI_IOC_MAGIC, 0x04) -#define HDMI_IOC_CEC_CLEAR_BUFFER _IO(HDMI_IOC_MAGIC, 0x05) -#define HDMI_IOC_CEC_GET_MSG_CNT _IOR(HDMI_IOC_MAGIC, 0x06, int) -#define HDMI_IOC_CEC_GET_MSG _IOR(HDMI_IOC_MAGIC, 0x07, struct _cec_msg) -#define HDMI_IOC_CEC_SENT_MSG _IOW(HDMI_IOC_MAGIC, 0x08, struct _cec_msg) - -//#include <linux/tvin/tvin.h> -//#include "../tvin_global.h" -//#include "../tvin_format_table.h" - -extern void dump_cec_message(int all); -extern void cec_dump_dev_map(void); -extern void clean_cec_message(void); -extern int cec_init(void); -extern void cec_state(bool cec_rx); -extern int cec_handler(bool get_msg, bool get_ack); -extern int hdmirx_cec_rx_monitor(void); -extern int hdmirx_cec_tx_monitor(void); -extern void cec_update_cec_map(void); -extern void cec_post_msg(_cec_logic_addr addr, _cec_cmd cmd, int *data, int length); - -//extern void cec_enable_eom_irq(void); -//tcl -extern void hdmirx_cec_fun_onoff(bool enable); -extern void hdmirx_cec_arc_onoff(bool enable); -extern void hdmirx_cec_clear_rx_buffer(void); -extern void cec_post_msg_to_buf(struct _cec_msg *msg); -extern int hdmirx_get_cec_msg_cnt(void); -extern void clean_cec_message(void); -struct _cec_msg *hdmirx_get_rx_msg(void); - -#endif diff --git a/tvapi/libtv/include/ve.h b/tvapi/libtv/include/ve.h deleted file mode 100644 index 160ad12..0000000 --- a/tvapi/libtv/include/ve.h +++ b/dev/null @@ -1,242 +0,0 @@ -#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 sum; - int width; - int height; - int ave; -} ve_hist_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_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/tvapi/libtv/tv/AutoBackLight.cpp b/tvapi/libtv/tv/AutoBackLight.cpp deleted file mode 100644 index db15955..0000000 --- a/tvapi/libtv/tv/AutoBackLight.cpp +++ b/dev/null @@ -1,207 +0,0 @@ -#define LOG_TAG "AutoBackLight" - -#include "AutoBackLight.h" -#include "../tvsetting/CTvSetting.h" -#include "../tvconfig/tvconfig.h" -#include "../tvutils/tvutils.h" -#include <stdio.h> -#include <unistd.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <sys/ioctl.h> -#include <fcntl.h> -#include <string.h> -#include <errno.h> -#include <dlfcn.h> -#include <linux/fb.h> -#include <stdlib.h> -#include <cutils/properties.h> - -AutoBackLight::AutoBackLight() -{ - mAutoBacklightSource = SOURCE_TYPE_TV; - mCur_source_default_backlight = 100; - mCur_sig_state == SIG_STATE_NOSIG; - mAutoBacklight_OnOff_Flag = false; - mCurrent_backlight = 100; - mCur_dest_backlight = 100; -} - -AutoBackLight::~AutoBackLight() -{ - mAutoBacklight_OnOff_Flag = false; -} - -bool AutoBackLight::isAutoBacklightOn() -{ - return mAutoBacklight_OnOff_Flag; -} - -void AutoBackLight::updateSigState(int state) -{ - mCur_sig_state = state; - LOGD("updateSigState = %d", mCur_sig_state); -} - -void AutoBackLight::startAutoBacklight( tv_source_input_type_t source_type ) -{ - mAutoBacklightSource = source_type; - mCur_source_default_backlight = CVpp::getInstance()->GetBacklight(source_type); - mCurrent_backlight = mCur_source_default_backlight; - CVpp::getInstance()->SetBacklight(mCur_source_default_backlight, source_type, 1); - - /* - mDefault_auto_bl_value = def_source_bl_value; - dynamicGamma = mDefault_auto_bl_value * mCur_source_default_backlight / 100; - // this if should not happen - if (dynamicGamma > mCur_source_default_backlight) { - dynamicGamma = mCur_source_default_backlight; - } - */ - - if (!mAutoBacklight_OnOff_Flag) { - mAutoBacklight_OnOff_Flag = true; - this->run(); - } -} - -void AutoBackLight::stopAutoBacklight() -{ - if (mAutoBacklight_OnOff_Flag) { - mAutoBacklight_OnOff_Flag = false; - CVpp::getInstance()->SetBacklight(mCur_source_default_backlight, mAutoBacklightSource, 1); - } -} - -/** - * @ description: tpv project - * @ return:value - * value <= 20: mCur_dest_backlight is 14 - * 20 < value <= 160: mCur_dest_backlight is 57 - *160 < value: mCur_dest_backlight is 100 - */ -void AutoBackLight::adjustDstBacklight() -{ - if (mCur_sig_state == SIG_STATE_STABLE) { - //the node is used to adjust current ts is static or dynamtic frame - char temp_str = 0; - int fd = open("/sys/module/di/parameters/frame_dynamic", O_RDWR); - if (fd <= 0) { - LOGE("open /sys/module/di/parameters/frame_dynamic ERROR!!\n"); - return; - } - - if (read(fd, &temp_str, 1) > 0) { - - if (temp_str == 'N') { - mCur_dest_backlight = mCur_source_default_backlight; - } else if (temp_str == 'Y') { - int pwm = HistogramGet_AVE(); - if (pwm <= 20) { - mCur_dest_backlight = 14; - } else if (pwm > 20 && pwm <= 160) { - mCur_dest_backlight = 57; - } else { - mCur_dest_backlight = 100; - } - //LOGD("pwm = %d, mCur_dest_backlight = %d", pwm, mCur_dest_backlight); - } - } - close(fd); - } else { - mCurrent_backlight = mCur_dest_backlight = mCur_source_default_backlight; - CVpp::getInstance()->SetBacklight(mCurrent_backlight, mAutoBacklightSource, 0); - } - - /* - if (pwm > 0) - pwm_max = pwm; - else - pwm_min = pwm; - pwm = 255 - pwm; - int average = (pwm_min + pwm_max) / 2; - dynamicGammaOffset = (pwm - average) / 10; - dynamicGammaOffset = dynamicGammaOffset * mDefault_auto_bl_value / 100; - - //the node is used to adjust current ts is static or dynamtic frame - char temp_str = 0; - int fd = open("/sys/module/di/parameters/frame_dynamic", O_RDWR); - if (fd <= 0) { - LOGE("open /sys/module/di/parameters/frame_dynamic ERROR!!\n"); - return; - } - - if (read(fd, &temp_str, 1) > 0) { - if (temp_str== 'N') { - mCur_dest_backlight = mCur_source_default_backlight; - } - else if (temp_str == 'Y') { - mCur_dest_backlight = dynamicGamma + dynamicGammaOffset; - - if (mCur_dest_backlight > mCur_source_default_backlight) { - mCur_dest_backlight = mCur_source_default_backlight; - } - else if (mCur_dest_backlight < 0) { - mCur_dest_backlight = 0; - } - } - } - close(fd); - */ -} - -void AutoBackLight::adjustBacklight() -{ - if (mCurrent_backlight == mCur_dest_backlight) { - return; - } else if ((mCurrent_backlight - mCur_dest_backlight) > -2 && (mCurrent_backlight - mCur_dest_backlight) < 2) { - mCurrent_backlight = mCur_dest_backlight; - CVpp::getInstance()->SetBacklight(mCurrent_backlight, mAutoBacklightSource, 0); - } else if (mCurrent_backlight < mCur_dest_backlight) { - mCurrent_backlight = mCurrent_backlight + 2; - CVpp::getInstance()->SetBacklight(mCurrent_backlight, mAutoBacklightSource, 0); - } else if (mCurrent_backlight > mCur_dest_backlight) { - mCurrent_backlight = mCurrent_backlight - 2; - CVpp::getInstance()->SetBacklight(mCurrent_backlight, mAutoBacklightSource, 0); - } - - //LOGD("mCurrent_backlight = %d", mCurrent_backlight); -} - -/** - * @ description: get current picture's average brightness - * @ return: 0~255,0 is darkest,255 is brightest - */ -int AutoBackLight::HistogramGet_AVE() -{ - int hist_ave = 0; - tvin_parm_t vdinParam; - if (0 == CTvin::getInstance()->VDIN_GetVdinParam(&vdinParam)) { - if (vdinParam.pixel_sum != 0) { - hist_ave = vdinParam.luma_sum / vdinParam.pixel_sum; - LOGD("[hist_ave][%d].", hist_ave); - return hist_ave; - } - LOGE("vdinParam.pixel_sum is zero, so the value is infinity\n"); - return -1; - } - LOGE("VDIN_GetVdinParam get data error!!!\n"); - return -1; -} - -bool AutoBackLight::threadLoop() -{ - int sleeptime = 50;//ms - int adjustBacklightCount = 0; - while ( mAutoBacklight_OnOff_Flag ) { - usleep ( sleeptime * 1000 ); - adjustBacklightCount++; - if (adjustBacklightCount == 24) { - adjustBacklightCount = 0; - adjustDstBacklight(); - } - adjustBacklight(); - } - - return false;//return true, run again, return false,not run. -} diff --git a/tvapi/libtv/tv/AutoBackLight.h b/tvapi/libtv/tv/AutoBackLight.h deleted file mode 100644 index 60e59be..0000000 --- a/tvapi/libtv/tv/AutoBackLight.h +++ b/dev/null @@ -1,46 +0,0 @@ -// -// -// amlogic 2015 -// -// @ Project : tv -// @ File Name : -// @ Date : 2015 -7 -// @ Author : hao.fu -// -// - - -#if !defined(_AUTOBACKLIGHT_H) -#define _AUTOBACKLIGHT_H -#include "../tvin/CTvin.h" -#include "../tvutils/CThread.h" -#include "../vpp/CVpp.h" - -class AutoBackLight: public CThread { -private: - tv_source_input_type_t mAutoBacklightSource; - int mCur_source_default_backlight; - int mCur_sig_state; - bool mAutoBacklight_OnOff_Flag; - int mCurrent_backlight; - int mCur_dest_backlight; - - void adjustDstBacklight(); - void adjustBacklight(); - int HistogramGet_AVE(); - bool threadLoop(); - -public: - enum SIG_STATE { - SIG_STATE_STABLE = 1, - SIG_STATE_NOSIG = 2, - }; - - AutoBackLight(); - ~AutoBackLight(); - void updateSigState(int state); - void startAutoBacklight( tv_source_input_type_t source_type ); - void stopAutoBacklight(); - bool isAutoBacklightOn(); -}; -#endif diff --git a/tvapi/libtv/tv/CAutoPQparam.cpp b/tvapi/libtv/tv/CAutoPQparam.cpp deleted file mode 100644 index fe4fc59..0000000 --- a/tvapi/libtv/tv/CAutoPQparam.cpp +++ b/dev/null @@ -1,142 +0,0 @@ -#define LOG_TAG "CAutoPQ" - -#include "CAutoPQparam.h" -#include "../tvsetting/CTvSetting.h" -#include "../tvconfig/tvconfig.h" -#include "../tvutils/tvutils.h" -#include <stdio.h> -#include <unistd.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <sys/ioctl.h> -#include <fcntl.h> -#include <string.h> -#include <errno.h> -#include <dlfcn.h> -#include <linux/fb.h> -#include <stdlib.h> -#include <cutils/properties.h> - -CAutoPQparam::CAutoPQparam() -{ - preFmtType = 0; - curFmtType = 0; - autofreq_checkcount = 0; - autofreq_checkflag = 0; - mAutoPQ_OnOff_Flag = false; -} - -CAutoPQparam::~CAutoPQparam() -{ - mAutoPQ_OnOff_Flag = false; -} - -bool CAutoPQparam::isAutoPQing() -{ - return mAutoPQ_OnOff_Flag; -} - -void CAutoPQparam::startAutoPQ( tv_source_input_type_t source_type ) -{ -#ifndef CC_PROJECT_DISABLE_AUTO_PQ - mAutoPQSource = source_type; - - LOGD("---------startAutoPQParameters --------mAutoPQ_OnOff_Flag = %d", mAutoPQ_OnOff_Flag); - if (!mAutoPQ_OnOff_Flag) { - mAutoPQ_OnOff_Flag = true; - this->run(); - } -#else - LOGD("AutoPQparam disable.\n"); -#endif -} - -void CAutoPQparam::stopAutoPQ() -{ -#ifndef CC_PROJECT_DISABLE_AUTO_PQ - LOGD("---------stopAutoPQParameters -------- mAutoPQ_OnOff_Flag = %d", mAutoPQ_OnOff_Flag); - if (mAutoPQ_OnOff_Flag) { - mAutoPQ_OnOff_Flag = false; - } -#else - LOGD("AutoPQparam disable.\n"); -#endif -} - -/** -TVIN_SIG_FMT_HDMI_720X480P_60HZ = 0x402 nodeVal<900 -TVIN_SIG_FMT_HDMI_1920X1080P_60HZ = 0x40a 900<nodeVal<2000 -TVIN_SIG_FMT_HDMI_3840_2160_00HZ = 0x445 nodeVal>2000 -*/ -int CAutoPQparam::adjustPQparameters() -{ - int fd = -1; - int nodeVal = 0, ret = 0; - int new_frame_count = 0; - float frame_rate = 0; - float frame_rate_ave = 0; - char s[21]; - char str[10]; - tvin_sig_fmt_e sig_fmt; - is_3d_type_t _3d_type = INDEX_2D; - tvin_trans_fmt trans_fmt = TVIN_TFMT_2D; - - fd = open("/sys/module/amvideo/parameters/new_frame_count", O_RDONLY); - if (fd <= 0) { - LOGE("open /sys/module/amvideo/parameters/new_frame_count ERROR!!error = -%s- \n", strerror ( errno )); - return -1; - } - memset(s, 0, sizeof(s)); - read(fd, s, sizeof(s)); - close(fd); - new_frame_count = atoi(s); - - if (new_frame_count != 0) { - - fd = open(SYS_VIDEO_FRAME_HEIGHT, O_RDONLY); - if (fd <= 0) { - LOGE("open %s ERROR!!error = -%s- \n",SYS_VIDEO_FRAME_HEIGHT, strerror ( errno )); - return -1; - } - memset(s, 0, sizeof(s)); - read(fd, s, sizeof(s)); - close(fd); - nodeVal = atoi(s); - - if (nodeVal <= 576) { - curFmtType = 1; - sig_fmt = TVIN_SIG_FMT_HDMI_720X480P_60HZ; - } else if (nodeVal > 567 && nodeVal <= 1088) { - curFmtType = 2; - sig_fmt = TVIN_SIG_FMT_HDMI_1920X1080P_60HZ; - } else { - curFmtType = 3; - sig_fmt = TVIN_SIG_FMT_HDMI_3840_2160_00HZ; - } - - if (curFmtType != preFmtType) { - LOGD("adjustPQparameters: nodeVal = %d, sig_fmt = %d.", nodeVal, sig_fmt); - ret = CVpp::getInstance()->LoadVppSettings (mAutoPQSource, sig_fmt, _3d_type, trans_fmt); - } - - preFmtType = curFmtType; - - } else { - if (preFmtType != 0 || curFmtType != 0) { - preFmtType = 0; - curFmtType = 0; - } - } - return ret; -} - -bool CAutoPQparam::threadLoop() -{ - int sleeptime = 1000;//ms - while ( mAutoPQ_OnOff_Flag ) { - usleep ( sleeptime * 1000 ); - adjustPQparameters(); - } - - return false;//return true, run again, return false,not run. -} diff --git a/tvapi/libtv/tv/CAutoPQparam.h b/tvapi/libtv/tv/CAutoPQparam.h deleted file mode 100644 index f733d42..0000000 --- a/tvapi/libtv/tv/CAutoPQparam.h +++ b/dev/null @@ -1,36 +0,0 @@ -// -// -// amlogic 2015 -// -// @ Project : tv -// @ File Name : -// @ Date : 2015 -9 -// @ Author : hao.fu -// -// - - -#if !defined(_CAUTOPQPARAM_H) -#define _CAUTOPQPARAM_H -#include "CAv.h" -#include "../tvutils/CThread.h" -#include "../vpp/CVpp.h" -#include "../tvconfig/tvconfig.h" - -class CAutoPQparam: public CThread { -private: - tv_source_input_type_t mAutoPQSource; - bool mAutoPQ_OnOff_Flag; - int preFmtType, curFmtType, autofreq_checkcount, autofreq_checkflag; - int adjustPQparameters(); - bool threadLoop(); - -public: - - CAutoPQparam(); - ~CAutoPQparam(); - void startAutoPQ( tv_source_input_type_t source_type ); - void stopAutoPQ(); - bool isAutoPQing(); -}; -#endif diff --git a/tvapi/libtv/tv/CAv.cpp b/tvapi/libtv/tv/CAv.cpp deleted file mode 100644 index e8421c7..0000000 --- a/tvapi/libtv/tv/CAv.cpp +++ b/dev/null @@ -1,476 +0,0 @@ -#define LOG_TAG "CAv" - -#include "CAv.h" -#include "../tvutils/tvutils.h" -#include "../tvconfig/tvconfig.h" -#include <stdio.h> -#include <unistd.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <sys/ioctl.h> -#include <fcntl.h> -#include <amstream.h> - -CAv::CAv() -{ - mpObserver = NULL; - mTvPlayDevId = 0; - mCurVideoLayerMuteState = -1; - mCurDisableVideoColor = -1; - mFdAmVideo = -1; -} -CAv::~CAv() -{ - -} -int CAv::SetVideoWindow(int x, int y, int w, int h) -{ - return AM_AV_SetVideoWindow (mTvPlayDevId, x, y, w, h ); -} - -int CAv::Open() -{ - AM_AV_OpenPara_t para_av; - memset ( ¶_av, 0, sizeof ( AM_AV_OpenPara_t ) ); - int rt = AM_AV_Open ( mTvPlayDevId, ¶_av ); - if ( rt != AM_SUCCESS ) { - LOGD ( "%s, dvbplayer_open fail %d %d\n!" , __FUNCTION__, mTvPlayDevId, rt ); - return -1; - } - - //open audio channle output - AM_AOUT_OpenPara_t aout_para; - memset ( &aout_para, 0, sizeof ( AM_AOUT_OpenPara_t ) ); - rt = AM_AOUT_Open ( 0, &aout_para ); - - if ( AM_SUCCESS != rt ) { - LOGD ( "%s, BUG: CANN'T OPEN AOUT\n", __FUNCTION__); - } - // - mFdAmVideo = open ( PATH_VIDEO_AMVIDEO, O_RDWR ); - if ( mFdAmVideo < 0 ) { - LOGE ( "mFdAmVideo < 0, error(%s)!\n", strerror ( errno ) ); - return -1; - } - /*Register events*/ - AM_EVT_Subscribe ( mTvPlayDevId, AM_AV_EVT_AV_NO_DATA, av_evt_callback, this ); - AM_EVT_Subscribe ( mTvPlayDevId, AM_AV_EVT_AV_DATA_RESUME, av_evt_callback, this ); - AM_EVT_Subscribe ( mTvPlayDevId, AM_AV_EVT_VIDEO_SCAMBLED, av_evt_callback, this ); - AM_EVT_Subscribe ( mTvPlayDevId, AM_AV_EVT_AUDIO_SCAMBLED, av_evt_callback, this ); - AM_EVT_Subscribe ( mTvPlayDevId, AM_AV_EVT_VIDEO_NOT_SUPPORT, av_evt_callback, this ); - - return rt; -} - -int CAv::Close() -{ - int iRet; - iRet = AM_AV_Close ( mTvPlayDevId ); - iRet = AM_AOUT_Close ( mTvPlayDevId ); - if (mFdAmVideo > 0) { - close(mFdAmVideo); - mFdAmVideo = -1; - } - return iRet; -} - - -int CAv::GetVideoStatus(AM_AV_VideoStatus_t *status) -{ - return AM_AV_GetVideoStatus(mTvPlayDevId, status); -} - -int CAv::SwitchTSAudio(int apid, AM_AV_AFormat_t afmt) -{ - return AM_AV_SwitchTSAudio (mTvPlayDevId, ( uint16_t ) apid, ( AM_AV_AFormat_t ) afmt ); -} - -int CAv::ResetAudioDecoder() -{ - return AM_AV_ResetAudioDecoder ( mTvPlayDevId ); -} - -int CAv::SetTSSource(AM_AV_TSSource_t ts_source) -{ - return AM_AV_SetTSSource ( mTvPlayDevId, ts_source ); -} - -int CAv::StartTS(uint16_t vpid, uint16_t apid, AM_AV_VFormat_t vfmt, AM_AV_AFormat_t afmt) -{ - return AM_AV_StartTS ( mTvPlayDevId, vpid, apid, ( AM_AV_VFormat_t ) vfmt, ( AM_AV_AFormat_t ) afmt ); -} - -int CAv::StopTS() -{ - return AM_AV_StopTS (mTvPlayDevId); -} - -int CAv::AudioGetOutputMode(AM_AOUT_OutputMode_t *mode) -{ - return AM_AOUT_GetOutputMode ( 0, mode ); -} - -int CAv::AudioSetOutputMode(AM_AOUT_OutputMode_t mode) -{ - return AM_AOUT_SetOutputMode ( 0, mode ); -} - -int CAv::EnableVideoBlackout() -{ - return AM_AV_EnableVideoBlackout(mTvPlayDevId); -} - -int CAv::DisableVideoBlackout() -{ - return AM_AV_DisableVideoBlackout(mTvPlayDevId); -} - -int CAv::DisableVideoWithBlueColor() -{ - LOGD("DisableVideoWithBlueColor"); - if (mCurVideoLayerMuteState == 1 && mCurDisableVideoColor == DISABLE_VIDEO_COLOR_BLUE) { - LOGD("video is disable with blue, return"); - return 0; - } - mCurVideoLayerMuteState = 1; - mCurDisableVideoColor = DISABLE_VIDEO_COLOR_BLUE; - SetVideoScreenColor ( 0, 41, 240, 110 ); // Show blue with vdin0, postblending disabled - return AM_AV_DisableVideo(mTvPlayDevId); -} - -int CAv::DisableVideoWithBlackColor() -{ - LOGD("DisableVideoWithBlackColor"); - if (mCurVideoLayerMuteState == 1 && mCurDisableVideoColor == DISABLE_VIDEO_COLOR_BLACK) { - LOGD("video is disable with black, return"); - return 0; - } - mCurDisableVideoColor = DISABLE_VIDEO_COLOR_BLACK; - mCurVideoLayerMuteState = 1; - SetVideoScreenColor ( 0, 16, 128, 128 ); // Show blue with vdin0, postblending disabled - return AM_AV_DisableVideo(mTvPlayDevId); -} -//auto enable, -int CAv::EnableVideoAuto() -{ - LOGD("EnableVideo"); - if (mCurVideoLayerMuteState == 0) { - LOGD("video is enable, return"); - return 0; - } - mCurVideoLayerMuteState = 0; - SetVideoScreenColor ( 0, 16, 128, 128 ); // Show black with vdin0, postblending disabled - ClearVideoBuffer();//disable video 2 - return 0; -} - -//just enable video -int CAv::EnableVideoNow() -{ - LOGD("EnableVideoNow"); - const char *config_value = NULL; - if (mCurVideoLayerMuteState == 0) { - LOGD("video is enable, return"); - return 0; - } - mCurVideoLayerMuteState = 0; - config_value = config_get_str ( CFG_SECTION_TV, CFG_BLUE_SCREEN_COLOR, "null" ); - if ( strcmp ( config_value, "black" ) == 0 ) { - } else { - SetVideoScreenColor ( 0, 16, 128, 128 ); // Show blue with vdin0, postblending disabled - } - return AM_AV_EnableVideo(mTvPlayDevId); -} - -int CAv::WaittingVideoPlaying(int minFrameCount , int waitTime ) -{ - //EnableVideoNow(); - static const int COUNT_FOR_TIME = 20; - int times = waitTime / COUNT_FOR_TIME; - int ret = -1; - int i = 0; - for (i = 0; i < times; i++) { - if (videoIsPlaying(minFrameCount)) { - ret = 0; - break; - } - } - if (i == times) { - LOGD("EnableVideoWhenVideoPlaying time out!!!!!!!!!!!!!"); - ret = -2; - } - return ret; -} - -int CAv::EnableVideoWhenVideoPlaying(int minFrameCount, int waitTime) -{ - int ret = WaittingVideoPlaying(minFrameCount, waitTime); - if (ret == 0) { //ok to playing - EnableVideoNow(); - } - return ret; -} - -bool CAv::videoIsPlaying(int minFrameCount) -{ - int value[3] = {0}; - value[0] = getVideoFrameCount(); - usleep(20 * 1000); - value[1] = getVideoFrameCount(); - //usleep(20*1000); - //value[2] = getVideoFrameCount(); - LOGD("---videoIsPlaying framecount =%d = %d = %d", value[0], value[1], value[2]); - if (value[1] >= minFrameCount && (value[1] > value[0])) return true; - else return false; -} - -int CAv::getVideoFrameCount() -{ - char buf[32]; - int fd = -1; - fd = open(PATH_FRAME_COUNT, O_RDWR); - if (fd < 0) { - LOGW("Open %s error(%s)!\n", PATH_FRAME_COUNT, strerror(errno)); - return -1; - } - read(fd, buf, sizeof(buf)); - int value = 0; - sscanf ( buf, "%d", &value ); - close ( fd ); - return value; -} - -tvin_sig_fmt_t CAv::getVideoResolutionToFmt() -{ - tvin_sig_fmt_e sig_fmt = TVIN_SIG_FMT_HDMI_1920X1080P_60HZ; - int height = CFile::getFileAttrValue(SYS_VIDEO_FRAME_HEIGHT); - LOGD("---------getVideoResolutionToFmt -------- height = %d", height); - if (height <= 576) { - sig_fmt = TVIN_SIG_FMT_HDMI_720X480P_60HZ; - } else if (height > 576 && height <= 1088) { - sig_fmt = TVIN_SIG_FMT_HDMI_1920X1080P_60HZ; - } else { - sig_fmt = TVIN_SIG_FMT_HDMI_3840_2160_00HZ; - } - return sig_fmt; -} -//call disable video 2 -int CAv::ClearVideoBuffer() -{ - LOGD("ClearVideoBuffer"); - return AM_AV_ClearVideoBuffer(mTvPlayDevId); -} -int CAv::SetVideoScreenColor ( int vdin_blending_mask, int y, int u, int v ) -{ - FILE *fp = NULL; - unsigned long value = 0; - - value = vdin_blending_mask << 24; - - value |= ( unsigned int ) ( y << 16 ) | ( unsigned int ) ( u << 8 ) | ( unsigned int ) ( v ); - - fp = fopen ( "/sys/class/video/test_screen", "w" ); - LOGD ( "~~~fopen~~~##VPP_SetVideoScreenColor##%s : vdin_blending_mask:%d,y:%d,u:%d,v:%d ##" , "/sys/class/video/test_screen", vdin_blending_mask, y, u, v); - - - if ( fp == NULL ) { - LOGE ( "Open /sys/class/video/test_screen error(%s)!\n", strerror ( errno ) ); - return -1; - } - - fprintf ( fp, "0x%lx", ( unsigned long ) value ); - - fclose ( fp ); - fp = NULL; - - return 0; -} - -int CAv::getVideoDisableValue() -{ - LOGD("this fun is empty!!!!!!!!"); - return 0; -} - -int CAv::SetVideoLayerDisable ( int value ) -{ - FILE *fp = NULL; - - fp = fopen ( "/sys/class/video/disable_video", "w" ); - LOGD ( "~~~fopen~~~##VPP_SetVideoLayerDisable##%s : %d ##" , "/sys/class/video/disable_video", value); - - if ( fp == NULL ) { - LOGE ( "Open /sys/class/video/disable_video error(%s)!\n", strerror ( errno ) ); - return -1; - } - - fprintf ( fp, "%d", value ); - - fclose ( fp ); - fp = NULL; - - return 0; -} - - -int CAv::setVideoScreenMode ( int value ) -{ - FILE *fp = fopen ( "/sys/class/video/screen_mode", "w" ); - LOGD ( "setVideoScreenMode %d ##" , value); - if ( fp == NULL ) { - LOGE ( "Open /sys/class/video/screen_mode error(%s)!\n", strerror ( errno ) ); - return -1; - } - fprintf ( fp, "%d", value ); - fclose ( fp ); - return 0; -} - -int CAv::setVideoAxis ( int h, int v, int width, int height ) -{ - FILE *fp = NULL; - fp = fopen ( "/sys/class/video/axis", "w" ); - LOGD ( "setVideoAxis##%s : %d %d %d %d ##" , "/sys/class/video/axis", h, v, width, height); - - if ( fp == NULL ) { - LOGE ( "Open /sys/class/video/axis ERROR(%s)!!\n", strerror ( errno ) ); - return -1; - } - fprintf ( fp, "%d %d %d %d", h, v, width, height ); - fclose ( fp ); - return 0; -} - -int CAv::getVideoScreenMode() -{ - int value; - FILE *fp = fopen ( "/sys/class/video/screen_mode", "r+" ); - - if ( fp == NULL ) { - LOGE ( "Open /sys/class/video/screen_mode error(%s)!\n", strerror ( errno ) ); - return -1; - } - fscanf ( fp, "%d", &value ); - fclose ( fp ); - return value; -} - -video_display_resolution_t CAv::getVideoDisplayResolution() -{ - char attrV[64]; - memset (attrV, 0x0, 64); - Tv_Utils_GetFileAttrStr ( "/sys/class/video/device_resolution", 64, attrV ); - video_display_resolution_t resolution; - if (strncasecmp(attrV, "1366x768", strlen ("1366x768")) == 0) { - resolution = VPP_DISPLAY_RESOLUTION_1366X768; - } else if (strncasecmp(attrV, "3840x2160", strlen ("3840x2160")) == 0) { - resolution = VPP_DISPLAY_RESOLUTION_3840X2160; - } else if (strncasecmp(attrV, "1920x1080", strlen ("1920x1080")) == 0) { - resolution = VPP_DISPLAY_RESOLUTION_1920X1080; - } else { - LOGW("video display resolution is = (%s) not define , default it", attrV); - resolution = VPP_DISPLAY_RESOLUTION_1920X1080; - } - - return resolution; -} - -void CAv::av_evt_callback ( long dev_no, int event_type, void *param, void *user_data ) -{ - CAv *pAv = ( CAv * ) user_data; - if (NULL == pAv ) { - LOGD ( "%s, ERROR : av_evt_callback NULL == pTv\n", __FUNCTION__ ); - return ; - } - if ( pAv->mpObserver == NULL ) { - LOGD ( "%s, ERROR : mpObserver NULL == mpObserver\n", __FUNCTION__ ); - return; - } - switch ( event_type ) { - case AM_AV_EVT_AV_NO_DATA: - pAv->mCurAvEvent.type = AVEvent::EVENT_AV_STOP; - pAv->mCurAvEvent.param = ( int )param; - pAv->mpObserver->onEvent(pAv->mCurAvEvent); - break; - case AM_AV_EVT_AV_DATA_RESUME: - pAv->mCurAvEvent.type = AVEvent::EVENT_AV_RESUEM; - pAv->mCurAvEvent.param = ( int )param; - pAv->mpObserver->onEvent(pAv->mCurAvEvent); - break; - case AM_AV_EVT_VIDEO_SCAMBLED: - case AM_AV_EVT_AUDIO_SCAMBLED: - pAv->mCurAvEvent.type = AVEvent::EVENT_AV_SCAMBLED; - pAv->mCurAvEvent.param = ( int )param; - pAv->mpObserver->onEvent(pAv->mCurAvEvent); - break; - case AM_AV_EVT_VIDEO_NOT_SUPPORT: { - pAv->mCurAvEvent.type = AVEvent::EVENT_AV_UNSUPPORT; - pAv->mCurAvEvent.param = ( int )param; - pAv->mpObserver->onEvent(pAv->mCurAvEvent); - break; - } - default: - break; - } - LOGD ( "%s, av_evt_callback : dev_no %ld type %d param = %d\n", - __FUNCTION__, dev_no, pAv->mCurAvEvent.type , (int)param); -} - -int CAv::set3DMode(VIDEO_3D_MODE_T mode, int LR_switch, int mode_3D_TO_2D) -{ - unsigned int cmd = MODE_3D_DISABLE; - switch (mode) { - case VIDEO_3D_MODE_DISABLE: - cmd = MODE_3D_DISABLE; - break; - case VIDEO_3D_MODE_AUTO: - cmd = MODE_3D_ENABLE | MODE_3D_AUTO; - break; - case VIDEO_3D_MODE_LR: - cmd = MODE_3D_ENABLE | MODE_3D_LR; - break; - case VIDEO_3D_MODE_TB: - cmd = MODE_3D_ENABLE | MODE_3D_TB; - break; - case VIDEO_3D_MODE_LA: - cmd = MODE_3D_ENABLE | MODE_3D_LA; - break; - case VIDEO_3D_MODE_FA: - cmd = MODE_3D_ENABLE | MODE_3D_FA; - break; - default: - cmd = MODE_3D_DISABLE; - break; - } - - if (LR_switch == 1) { - cmd = cmd | MODE_3D_LR_SWITCH; - } - - if (mode_3D_TO_2D == 1) { - cmd = cmd | MODE_3D_TO_2D_L; - } - - if (mode_3D_TO_2D == 2) { - cmd = cmd | MODE_3D_TO_2D_R; - } - LOGD("set 3d mode fd = %d cmd = 0x%x", mFdAmVideo, cmd); - int ret = ioctl(mFdAmVideo, AMSTREAM_IOC_SET_3D_TYPE , cmd); - if (ret < 0) { - LOGE("set3DMode error ( %s )", strerror ( errno )); - } - return 0; -} - -int CAv::setLookupPtsForDtmb(int enable) -{ - FILE *fp = fopen ( PATH_MEPG_DTMB_LOOKUP_PTS_FLAG, "w" ); - LOGD ( "setLookupPtsForDtmb %d ##" , enable); - if ( fp == NULL ) { - LOGE ( "Open %s error(%s)!\n", PATH_MEPG_DTMB_LOOKUP_PTS_FLAG, strerror ( errno ) ); - return -1; - } - fprintf ( fp, "%d", enable ); - fclose ( fp ); - return 0; -} diff --git a/tvapi/libtv/tv/CAv.h b/tvapi/libtv/tv/CAv.h deleted file mode 100644 index eb16a1b..0000000 --- a/tvapi/libtv/tv/CAv.h +++ b/dev/null @@ -1,153 +0,0 @@ -#ifndef _C_AV_H -#define _C_AV_H -#include "am_av.h" -#include "am_aout.h" -#include "CTvEv.h" -#include "CTvLog.h" -#include "../tvin/CTvin.h" -static const char *PATH_FRAME_COUNT = "/sys/module/di/parameters/frame_count"; -//3D===================================================================== -static const char *PATH_SET_3D_TYPE = "/sys/class/video/threedim_mode"; -static const char *PATH_VIDEO_AMVIDEO = "/dev/amvideo"; -//3和1是做不同的3dsclaer 0是不做任何scaler -static const char *PATH_3D_SCALER = "/sys/module/amvideo/parameters/force_3d_scaler"; -//0是不做3dscaler 1是做3dscaler -static const char *PATH_VIDEO_SCALER = "/sys/class/video/stereo_scaler"; - -static const char *PATH_MEPG_DTMB_LOOKUP_PTS_FLAG = "/sys/module/amvdec_mpeg12/parameters/dtmb_flag"; -/*cmd use for 3d operation*/ -#define MODE_3D_DISABLE 0x00000000 -#define MODE_3D_ENABLE 0x00000001 -#define MODE_3D_AUTO 0x00000002 -#define MODE_3D_LR 0x00000004 -#define MODE_3D_TB 0x00000008 -#define MODE_3D_LA 0x00000010 -#define MODE_3D_FA 0x00000020 -#define MODE_3D_LR_SWITCH 0x00000100 -#define MODE_3D_TO_2D_L 0x00000200 -#define MODE_3D_TO_2D_R 0x00000400 -#define MODE_3D_MVC 0x00000800 -#define MODE_3D_OUT_TB 0x00010000 -#define MODE_3D_OUT_LR 0x00020000 - -/*when the output mode is field alterlative*/ -//LRLRLRLRL mode -#define MODE_3D_OUT_FA_L_FIRST 0x00001000 -#define MODE_3D_OUT_FA_R_FIRST 0x00002000 -//LBRBLBRB -#define MODE_3D_OUT_FA_LB_FIRST 0x00004000 -#define MODE_3D_OUT_FA_RB_FIRST 0x00008000 - - -typedef enum VIDEO_3D_MODE_E { - VIDEO_3D_MODE_DISABLE, - VIDEO_3D_MODE_AUTO, - VIDEO_3D_MODE_LR, - VIDEO_3D_MODE_TB, - VIDEO_3D_MODE_LA, - VIDEO_3D_MODE_FA -} VIDEO_3D_MODE_T; - -//end 3D=================================================================== -typedef enum video_display_resolution_e { - VPP_DISPLAY_RESOLUTION_1366X768, - VPP_DISPLAY_RESOLUTION_1920X1080, - VPP_DISPLAY_RESOLUTION_3840X2160, - VPP_DISPLAY_RESOLUTION_MAX, -} video_display_resolution_t; - - -class CAv { -public: - CAv(); - ~CAv(); - //video screen_mode - static const int VIDEO_WIDEOPTION_NORMAL = 0; - static const int VIDEO_WIDEOPTION_FULL_STRETCH = 1; - static const int VIDEO_WIDEOPTION_4_3 = 2; - static const int VIDEO_WIDEOPTION_16_9 = 3; - static const int VIDEO_WIDEOPTION_NONLINEAR = 4; - static const int VIDEO_WIDEOPTION_NORMAL_NOSCALEUP = 5; - static const int VIDEO_WIDEOPTION_CROP_FULL = 6; - static const int VIDEO_WIDEOPTION_CROP = 7; - // - static const int DISABLE_VIDEO_COLOR_BLUE = 1; - static const int DISABLE_VIDEO_COLOR_BLACK = 2; - class AVEvent : public CTvEv { - public: - AVEvent(): CTvEv(CTvEv::TV_EVENT_AV) - { - - }; - ~AVEvent() - {}; - static const int EVENT_AV_STOP = 1; - static const int EVENT_AV_RESUEM = 2; - static const int EVENT_AV_SCAMBLED = 3; - static const int EVENT_AV_UNSUPPORT = 4; - int type; - int param; - }; - - class IObserver { - public: - IObserver() {}; - virtual ~IObserver() {}; - virtual void onEvent(const AVEvent &ev) = 0; - }; - //1 VS n - //int addObserver(IObserver* ob); - //int removeObserver(IObserver* ob); - - //1 VS 1 - int setObserver(IObserver *ob) - { - mpObserver = ob; - return 0; - } - - int Open(); - int Close(); - int SetVideoWindow(int x, int y, int w, int h); - int GetVideoStatus(AM_AV_VideoStatus_t *status); - int SwitchTSAudio(int apid, AM_AV_AFormat_t afmt); - int ResetAudioDecoder(); - int SetTSSource(AM_AV_TSSource_t ts_source); - int StartTS(uint16_t vpid, uint16_t apid, AM_AV_VFormat_t vfmt, AM_AV_AFormat_t afmt); - int StopTS(); - int AudioGetOutputMode(AM_AOUT_OutputMode_t *mode); - int AudioSetOutputMode(AM_AOUT_OutputMode_t mode); - int SetVideoScreenColor (int vdin_blending_mask, int y, int u, int v); - int DisableVideoWithBlueColor(); - int DisableVideoWithBlackColor(); - int EnableVideoAuto(); - int EnableVideoNow(); - int EnableVideoWhenVideoPlaying(int minFrameCount = 8, int waitTime = 5000); - int WaittingVideoPlaying(int minFrameCount = 8, int waitTime = 5000); - int EnableVideoBlackout(); - int DisableVideoBlackout(); - int getVideoDisableValue(); - int SetVideoLayerDisable ( int value ); - int ClearVideoBuffer(); - bool videoIsPlaying(int minFrameCount = 8); - int setVideoScreenMode ( int value ); - int getVideoScreenMode(); - int setVideoAxis ( int h, int v, int width, int height ); - video_display_resolution_t getVideoDisplayResolution(); - //LR_switch: 1 is enable, 3D_TO_2D:1 is L , 2 is R - int set3DMode(VIDEO_3D_MODE_T mode, int LR_switch, int mode_3D_TO_2D); - // - int setLookupPtsForDtmb(int enable); - tvin_sig_fmt_t getVideoResolutionToFmt(); -private: - static void av_evt_callback ( long dev_no, int event_type, void *param, void *user_data ); - int getVideoFrameCount(); - int mTvPlayDevId; - IObserver *mpObserver; - AVEvent mCurAvEvent; - int mCurVideoLayerMuteState; - int mCurDisableVideoColor; - - int mFdAmVideo; -}; -#endif diff --git a/tvapi/libtv/tv/CFbcCommunication.cpp b/tvapi/libtv/tv/CFbcCommunication.cpp deleted file mode 100644 index 8ca5391..0000000 --- a/tvapi/libtv/tv/CFbcCommunication.cpp +++ b/dev/null @@ -1,1931 +0,0 @@ -#define LOG_TAG "FBC" - -#include <time.h> -#include "CFbcCommunication.h" -#include "CTvLog.h" -#include "../tvconfig/tvconfig.h" -#include "../tvutils/tvutils.h" - -static CFbcCommunication *gSingletonFBC = NULL; -CFbcCommunication *GetSingletonFBC() -{ - if (gSingletonFBC == NULL) { - gSingletonFBC = new CFbcCommunication(); - gSingletonFBC->start(); - } - - return gSingletonFBC; - -} - -CFbcCommunication::CFbcCommunication() -{ - initCrc32Table(); - - m_event.data.fd = -1; - m_event.events = EPOLLIN | EPOLLET; - - mpRevDataBuf = new unsigned char[512]; - - mUpgradeFlag = 0; - mbDownHaveSend = 0;//false - //mFbcMsgQueue.startMsgQueue(); - mbFbcKeyEnterDown = 0;//false - mFbcEnterKeyDownTime = -1; -} - -CFbcCommunication::~CFbcCommunication() -{ - m_event.data.fd = mSerialPort.getFd(); - m_event.events = EPOLLIN | EPOLLET; - mEpoll.del(mSerialPort.getFd(), &m_event); - closeAll(); - delete[] mpRevDataBuf; -} - -int CFbcCommunication::start() -{ -#if 1 - //int serial_port = config_get_int("TV", "fbc.communication.serial", SERIAL_C); - if (mSerialPort.OpenDevice(SERIAL_C) < 0) { - } else { -#if 0 - LOGD("%s %d be called......\n", __FUNCTION__, __LINE__); - mSerialPort.set_opt(115200, 8, 1, 'N', 5000, 1); -#else - LOGD("%s %d be called......\n", __FUNCTION__, __LINE__); - mSerialPort.setup_serial(); -#endif - } - - if (mEpoll.create() < 0) { - return -1; - } - - m_event.data.fd = mSerialPort.getFd(); - m_event.events = EPOLLIN | EPOLLET; - mEpoll.add(mSerialPort.getFd(), &m_event); -#endif - -#if 0 - mHdmiCec.openFile(CEC_PATH); - m_event.data.fd = mHdmiCec.getFd(); - m_event.events = EPOLLIN | EPOLLET; - mEpoll.add(mHdmiCec.getFd(), &m_event); -#endif - - //timeout for long - mEpoll.setTimeout(3000); - - this->run(); - mTvInput.run(); - return 0; -} - -void CFbcCommunication::testUart() -{ - unsigned char write_buf[64], read_buf[64]; - int idx = 0; - memset(write_buf, 0, sizeof(write_buf)); - memset(read_buf, 0, sizeof(read_buf)); - - write_buf[0] = 0x5a; - write_buf[1] = 0x5a; - write_buf[2] = 0xb; - write_buf[3] = 0x0; - write_buf[4] = 0x0; - write_buf[5] = 0x40; - write_buf[6] = 0x0; - - write_buf[7] = 0x2; - write_buf[8] = 0x3c; - write_buf[9] = 0x75; - write_buf[10] = 0x30; - //LOGD("to write ..........\n"); - mSerialPort.writeFile(write_buf, 11); - sleep(1); - //LOGD("to read........\n"); - mSerialPort.readFile(read_buf, 12); - for (idx = 0; idx < 12; idx++) - LOGD("the data is:0x%x\n", read_buf[idx]); - LOGD("end....\n"); -} - -void CFbcCommunication::showTime(struct timeval *_time) -{ - struct timeval curTime; - - if (_time == NULL) { - gettimeofday(&curTime, NULL); - } else { - curTime.tv_sec = _time->tv_sec; - curTime.tv_usec = _time->tv_usec; - } - if (curTime.tv_usec > 100000) { - LOGD("[%ld.%ld]", curTime.tv_sec, curTime.tv_usec); - } else if (curTime.tv_usec > 10000) { - LOGD("[%ld.0%ld]", curTime.tv_sec, curTime.tv_usec); - } else if (curTime.tv_usec > 1000) { - LOGD("[%ld.00%ld]", curTime.tv_sec, curTime.tv_usec); - } else if (curTime.tv_usec > 100) { - LOGD("[%ld.000%ld]", curTime.tv_sec, curTime.tv_usec); - } else if (curTime.tv_usec > 10) { - LOGD("[%ld.0000%ld]", curTime.tv_sec, curTime.tv_usec); - } else if (curTime.tv_usec > 1) { - LOGD("[%ld.00000%ld]", curTime.tv_sec, curTime.tv_usec); - } -} -long CFbcCommunication::getTime(void) -{ - struct timeval tv; - gettimeofday(&tv, NULL); - return tv.tv_sec * 1000 + tv.tv_usec / 1000; -} -void CFbcCommunication::initCrc32Table() -{ - //生成Crc32的查询表 - int i, j; - unsigned int Crc; - for (i = 0; i < 256; i++) { - Crc = i; - for (j = 0; j < 8; j++) { - if (Crc & 1) - Crc = (Crc >> 1) ^ 0xEDB88320; - else - Crc >>= 1; - } - mCrc32Table[i] = Crc; - } -} - -void CFbcCommunication::sendAckCmd(bool isOk) -{ - int crc32value = 0; - unsigned char ackcmd[12]; - ackcmd[0] = 0x5A; - ackcmd[1] = 0x5A; - ackcmd[2] = 12;//little endian - ackcmd[3] = 0x00; - ackcmd[4] = 0x80;//ack flag - ackcmd[5] = 0xff;//cmd id - if (isOk) { - ackcmd[6] = 0xfe; - ackcmd[7] = 0x7f; - } else { - ackcmd[6] = 0x80; - ackcmd[7] = 0x01; - } - //*((unsigned int*) (ackcmd + 8)) = GetCrc32(ackcmd, 8); - crc32value = Calcrc32(0, ackcmd, 8); - ackcmd[8] = (crc32value >> 0) & 0xFF; - ackcmd[9] = (crc32value >> 8) & 0xFF; - ackcmd[10] = (crc32value >> 16) & 0xFF; - ackcmd[11] = (crc32value >> 24) & 0xFF; - LOGD("to send ack and crc is:0x%x\n", crc32value); - sendDataOneway(COMM_DEV_SERIAL, ackcmd, 12, 0x00000000); -} - -/* 函数名:GetCrc32 -* 函数原型:unsigned int GetCrc32(char* InStr,unsigned int len) -* 参数:InStr ---指向需要计算CRC32值的字符? * len ---为InStr的长帿 * 返回值为计算出来的CRC32结果? */ -unsigned int CFbcCommunication::GetCrc32(unsigned char *InStr, unsigned int len) -{ - //开始计算CRC32校验便 - unsigned int Crc = 0xffffffff; - for (int i = 0; i < (int)len; i++) { - Crc = (Crc >> 8) ^ mCrc32Table[(Crc & 0xFF) ^ InStr[i]]; - } - - Crc ^= 0xFFFFFFFF; - return Crc; -} - -unsigned int CFbcCommunication::Calcrc32(unsigned int crc, const unsigned char *ptr, unsigned int buf_len) -{ - static const unsigned int s_crc32[16] = { 0, 0x1db71064, 0x3b6e20c8, 0x26d930ac, 0x76dc4190, 0x6b6b51f4, 0x4db26158, 0x5005713c, - 0xedb88320, 0xf00f9344, 0xd6d6a3e8, 0xcb61b38c, 0x9b64c2b0, 0x86d3d2d4, 0xa00ae278, 0xbdbdf21c - }; - unsigned int crcu32 = crc; - //if (buf_len < 0) - // return 0; - if (!ptr) return 0; - crcu32 = ~crcu32; - while (buf_len--) { - unsigned char b = *ptr++; - crcu32 = (crcu32 >> 4) ^ s_crc32[(crcu32 & 0xF) ^ (b & 0xF)]; - crcu32 = (crcu32 >> 4) ^ s_crc32[(crcu32 & 0xF) ^ (b >> 4)]; - } - return ~crcu32; -} - -int CFbcCommunication::sendDataOneway(int devno, unsigned char *pData, int dataLen, int flags __unused) -{ - int ret = -1; - switch (devno) { - case COMM_DEV_CEC: { - ret = mHdmiCec.writeFile(pData, dataLen); - break; - } - case COMM_DEV_SERIAL: { - ret = mSerialPort.writeFile(pData, dataLen); - break; - } - default: - break; - } - return ret; -} - -int CFbcCommunication::rmFromRequestList() -{ - return 0; -} - -int CFbcCommunication::addToRequestList() -{ - return 0; -} - -//timeout ms -int CFbcCommunication::sendDataAndWaitReply(int devno, int waitForDevno, int waitForCmd, unsigned char *pData, int dataLen, int timeout, unsigned char *pReData, int *reDataLen, int flags) -{ - int ret = sendDataOneway(devno, pData, dataLen, flags); - if (ret < 0) return ret; - - mReplyList.WaitDevNo = waitForDevno; - mReplyList.WaitCmd = waitForCmd; - mReplyList.WaitTimeOut = timeout; - mReplyList.reDataLen = 0; - mReplyList.replyData = mpRevDataBuf; - addToRequestList(); - LOGD("wait dev:%d, cmd:0x%x, timeout:%d", mReplyList.WaitDevNo, mReplyList.WaitCmd, mReplyList.WaitTimeOut); - - mLock.lock(); - ret = mReplyList.WaitReplyCondition.waitRelative(mLock, timeout);//wait reply - LOGD("%s, %d, wait reply return = %d", __FUNCTION__, __LINE__, ret); - mLock.unlock(); - - // - if (mReplyList.reDataLen > 0) { //data have come in - *reDataLen = mReplyList.reDataLen; - memcpy(pReData, mReplyList.replyData, mReplyList.reDataLen); - mReplyList.reDataLen = 0; - return *reDataLen; - } else { - //timeout,not to wait continue - mReplyList.WaitDevNo = -1; - mReplyList.WaitCmd = 0xff; - return -1;//timeout but data not come. - } - return 0; -} - -int CFbcCommunication::closeAll() -{ - mSerialPort.CloseDevice(); - return 0; -} - -int CFbcCommunication::SetUpgradeFlag(int flag) -{ - mUpgradeFlag = flag; - return 0; -} - -/* -** cmd[0] cmd_type; cmd[1] cmd length; cmd[2] para1 cmd[3] para2 ... -*/ -int CFbcCommunication::handleCmd(COMM_DEV_TYPE_E fromDev, int *pData, int *pRetValue) -{ - fbc_command_t cmd_type = VPU_CMD_NULL; - int ret_value = 0; - - if ((fromDev != COMM_DEV_SERIAL && fromDev != COMM_DEV_CEC) || pData == NULL || pRetValue == NULL) { - //LOGD("para error and returned!"); - return -1; - } - - cmd_type = (fbc_command_t)pData[0]; - LOGD("the cmd type is:0x%02x\n", cmd_type); - switch (cmd_type) { - case VPU_CMD_RED_GAIN_DEF: - cfbc_Set_Gain_Red(fromDev, pData[2]); - break; - - /* - //case value '192' not in enumerated type 'fbc_command_t - case (VPU_CMD_RED_GAIN_DEF|0x80): - cfbc_Get_Gain_Red(fromDev, &ret_value); - pRetValue[0] = VPU_CMD_RED_GAIN_DEF | 0x80; - pRetValue[1] = 3; - pRetValue[2] = ret_value; - break;*/ - - case VPU_CMD_PATTEN_SEL: - cfbc_Set_Test_Pattern(fromDev, pData[2]); - break; - - case VPU_CMD_BACKLIGHT_DEF: - cfbc_Set_Backlight(fromDev, pData[2]); - break; - - /* - //case value '170' not in enumerated type 'fbc_command_t - case (VPU_CMD_PATTEN_SEL|0x80): - cfbc_Get_Test_Pattern(fromDev, &ret_value); - pRetValue[0] = VPU_CMD_RED_GAIN_DEF | 0x80; - pRetValue[1] = 3; - pRetValue[2] = ret_value; - break;*/ - - default: - return -1; - } - - return 0; -} - -int CFbcCommunication::uartReadStream(unsigned char *retData, int rd_max_len, int timeout) -{ - int readLen = 0, bufIndex = 0, haveRead = 0; - clock_t start_tm = clock(); - - do { - readLen = mSerialPort.readFile(retData + bufIndex, rd_max_len - haveRead); - haveRead += readLen; - bufIndex += readLen; - if (haveRead == rd_max_len) { - return haveRead; - } - - LOGD("readLen = %d, haveRead = %d\n", readLen, haveRead); - - if (((clock() - start_tm) / (CLOCKS_PER_SEC / 1000)) > timeout) { - return haveRead; - } - } while (true); - - return haveRead; -} - -int CFbcCommunication::uartReadData(unsigned char *retData, int *retLen) -{ - unsigned char tempBuf[512]; - int cmdLen = 0; - int bufIndex = 0; - int readLen = 0; - - if (retData == NULL) { - LOGD("the retData is NULL\n"); - return 0; - } - - //leader codes 2 byte - memset(tempBuf, 0, sizeof(tempBuf)); - do { - readLen = mSerialPort.readFile(tempBuf + 0, 1); - if (tempBuf[0] == 0x5A) { - bufIndex = 1; - readLen = mSerialPort.readFile(tempBuf + 1, 1); - if (tempBuf[1] == 0x5A) { - bufIndex = 2; - LOGD("leading code coming...\n"); - break; - } else { - continue; - } - } else { - continue; - } - } while (true); - - //data len 2 byte - int needRead = 2, haveRead = 0; - do { - readLen = mSerialPort.readFile(tempBuf + bufIndex, needRead - haveRead); - haveRead += readLen; - bufIndex += readLen; - if (haveRead == needRead) { - break; - } - } while (true); - - //little endian - cmdLen = (tempBuf[3] << 8) + tempBuf[2]; - //cmd data cmdLen - 2 -2 - needRead = cmdLen - 4, haveRead = 0; - LOGD("cmdLen is:%d\n", cmdLen); - - do { - readLen = mSerialPort.readFile(tempBuf + bufIndex, needRead - haveRead); - haveRead += readLen; - bufIndex += readLen; - if (readLen > 0) { - LOGD("data readLen is:%d\n", readLen); - } - if (haveRead == needRead) { - break; - } - } while (true); - - unsigned int crc = 0; - if (cmdLen > 4) { - crc = Calcrc32(0, tempBuf, cmdLen - 4);//not include crc 4byte - } - unsigned int bufCrc = tempBuf[cmdLen - 4] | - tempBuf[cmdLen - 3] << 8 | - tempBuf[cmdLen - 2] << 16 | - tempBuf[cmdLen - 1] << 24; - int idx = 0; - - if (crc == bufCrc) { - memcpy(retData, tempBuf, cmdLen % 512); - *retLen = cmdLen; - return cmdLen; - } else { - return -1; - } -} - -int CFbcCommunication::processData(COMM_DEV_TYPE_E fromDev, unsigned char *pData, int dataLen) -{ - switch (fromDev) { - case COMM_DEV_CEC: { - if (mReplyList.WaitDevNo == fromDev && mReplyList.WaitCmd == pData[1]) { - mReplyList.reDataLen = dataLen; - memcpy(mReplyList.replyData, pData, dataLen); - mReplyList.WaitReplyCondition.signal(); - } else if (0) { - } - break; - } - case COMM_DEV_SERIAL: { - LOGD("to signal wait dataLen:0x%x, cmdId:0x%x\n", dataLen, pData[5]); - if (mReplyList.WaitDevNo == fromDev && mReplyList.WaitCmd == pData[5]) { - mReplyList.reDataLen = dataLen; - memcpy(mReplyList.replyData, pData, dataLen); - mReplyList.WaitReplyCondition.signal(); - } else { - unsigned char cmd = pData[5]; - //just test - const char *value; - if (!mbSendKeyCode) { - value = config_get_str(CFG_SECTION_FBCUART, "fbc_key_event_handle", "null"); - if ( strcmp ( value, "true" ) == 0 ) - mbSendKeyCode = true; - else mbSendKeyCode = false; - } -#if(0) - switch (cmd) { - case 0x14: - if (mbSendKeyCode ) { - if (pData[6] >= 12 && pData[6] <= 16 ) { //left ---enter - unsigned char key = pData[6] ; - LOGD(" key:0x%x\n", key); - - //16 key 28 DPAD_CENTER - //12 key 103 DPAD_UP - //13 key 108 DPAD_DOWN - //14 key 105 DPAD_LEFT - //15 key 106 DPAD_RIGHT - int checkKey = 0; - if (key == 16) - checkKey = 28 ; - else if (key == 12) - checkKey = 103 ; - else if (key == 13) - checkKey = 108 ; - else if (key == 14) - checkKey = 105 ; - else if (key == 15) - checkKey = 106 ; - mTvInput.sendkeyCode(checkKey); - } - } - break; - - default: - break; - } -#else - static long curTime, lastTime; - int tmp; - static int st = 0, st_key_up = 0; - static int st_key_down = 0; - static int st_key_left = 0; - static int st_key_right = 0; - static int checkKey = 0, last_checkKey = 0; - - - switch (pData[6]) { //different key - case 12: //DPAD_UP - st_key_up = pData[5]; - if (st_key_up == 0x1D) { //CMD_INPUT_DOWN - last_checkKey = checkKey; - checkKey = 103; - mTvInput.sendkeyCode(checkKey); - } else if (st_key_up == 0x1E) { //CMD_INPUT_UP - //checkKey = 103; - //mTvInput.sendkeyCode_Up(checkKey); - } - break; - - case 13: //DPAD_DOWN - st_key_down = pData[5]; - if (st_key_down == 0x1D) { //CMD_INPUT_DOWN - last_checkKey = checkKey; - checkKey = 108; - mTvInput.sendkeyCode(checkKey); - } else if (st_key_down == 0x1E) { //CMD_INPUT_UP - //checkKey = 108; - //mTvInput.sendkeyCode_Up(checkKey); - } - break; - - case 14: //DPAD_LEFT - st = pData[5]; - if (st == 0x1D) { //CMD_INPUT_DOWN - last_checkKey = checkKey; - checkKey = 105; - lastTime = 0; - mbFbcKeyEnterDown = 1;//true - mFbcEnterKeyDownTime = mTvInput.getNowMs(); - mTvInput.sendKeyRepeatStart(15, 1200, 1500);//code 4, dis 3, repeatTime 2 - } else if (st == 0x1E) { //CMD_INPUT_UP - checkKey = 105; - if (mbFbcKeyEnterDown == 1) { - mbFbcKeyEnterDown = 0;//false - mTvInput.sendKeyRepeatStop(); - int disFbcEnterKeyDown = mTvInput.getNowMs() - mFbcEnterKeyDownTime; - LOGD("disFbcEnterKeyDown = %d", disFbcEnterKeyDown); - if (disFbcEnterKeyDown > 1200) { //long down - } else { - mTvInput.sendkeyCode(105); - } - } - //checkKey = 105; - //mTvInput.sendkeyCode_Up(checkKey); - } - break; - - case 15: //DPAD_RIGHT - st_key_right = pData[5]; - if (st_key_right == 0x1D) { //CMD_INPUT_DOWN - last_checkKey = checkKey; - checkKey = 106; - mTvInput.sendkeyCode(checkKey); - } else if (st_key_right == 0x1E) { //CMD_INPUT_UP - //checkKey = 106; - //mTvInput.sendkeyCode_Up(checkKey); - } - break; - - case 16: //DPAD_ENTER - st = pData[5]; - if (st == 0x1D) { //CMD_INPUT_DOWN - last_checkKey = checkKey; - checkKey = 28; - lastTime = 0; - mbFbcKeyEnterDown = 1;//true - mFbcEnterKeyDownTime = mTvInput.getNowMs(); - mTvInput.sendKeyRepeatStart(158, 1200, 1500);//code 4, dis 3, repeatTime 2 - } else if (st == 0x1E) { //CMD_INPUT_UP - checkKey = 28; - if (mbFbcKeyEnterDown == 1) { - mbFbcKeyEnterDown = 0;//false - mTvInput.sendKeyRepeatStop(); - int disFbcEnterKeyDown = mTvInput.getNowMs() - mFbcEnterKeyDownTime; - LOGD("disFbcEnterKeyDown = %d", disFbcEnterKeyDown); - if (disFbcEnterKeyDown > 1200) { //long down - } else { - mTvInput.sendkeyCode(28); - } - } - } - break; - - case 20: //7key power - st_key_right = pData[5]; - if (st_key_right == 0x1D) { //CMD_INPUT_DOWN - last_checkKey = checkKey; - checkKey = 116; - //mTvInput.sendIRkeyCode_Down(checkKey); - mTvInput.sendIRkeyCode(checkKey); - } else if (st_key_right == 0x1E) { //CMD_INPUT_UP - checkKey = 116; - //mTvInput.sendIRkeyCode_Up(checkKey); - } - break; - - case 26: //7key source - st_key_right = pData[5]; - if (st_key_right == 0x1D) { //CMD_INPUT_DOWN - last_checkKey = checkKey; - checkKey = 466; - mTvInput.sendIRkeyCode_Down(checkKey); - } else if (st_key_right == 0x1E) { //CMD_INPUT_UP - checkKey = 466; - mTvInput.sendIRkeyCode_Up(checkKey); - } - break; - - case 27: //7key menu - st_key_right = pData[5]; - if (st_key_right == 0x1D) { //CMD_INPUT_DOWN - last_checkKey = checkKey; - checkKey = 139; - mTvInput.sendkeyCode(checkKey); - } else if (st_key_right == 0x1E) { //CMD_INPUT_UP - //checkKey = 139; - //mTvInput.sendkeyCode_Up(checkKey); - } - break; - - case 40: //7key vol - - st_key_right = pData[5]; - if (st_key_right == 0x1D) { //CMD_INPUT_DOWN - last_checkKey = checkKey; - checkKey = 114; - mTvInput.sendIRkeyCode_Down(checkKey); - } else if (st_key_right == 0x1E) { //CMD_INPUT_UP - checkKey = 114; - mTvInput.sendIRkeyCode_Up(checkKey); - } - break; - - case 41: //7key vol + - st_key_right = pData[5]; - if (st_key_right == 0x1D) { //CMD_INPUT_DOWN - last_checkKey = checkKey; - checkKey = 115; - mTvInput.sendIRkeyCode_Down(checkKey); - } else if (st_key_right == 0x1E) { //CMD_INPUT_UP - checkKey = 115; - mTvInput.sendIRkeyCode_Up(checkKey); - } - break; - case 201: //SARADC_DPAD_UP - st_key_up = pData[5]; - if (st_key_up == 0x1D) { //CMD_INPUT_DOWN - last_checkKey = checkKey; - checkKey = 950; - mTvInput.sendkeyCode_Down(checkKey); - } else if (st_key_up == 0x1E) { //CMD_INPUT_UP - mTvInput.sendkeyCode_Up(checkKey); - } - break; - - case 202: //SARADC_DOWN - st_key_down = pData[5]; - if (st_key_down == 0x1D) { //CMD_INPUT_DOWN - last_checkKey = checkKey; - checkKey = 951; - mTvInput.sendkeyCode_Down(checkKey); - } else if (st_key_down == 0x1E) { //CMD_INPUT_UP - mTvInput.sendkeyCode_Up(checkKey); - } - break; - - case 203: //SARADC_LEFT - st = pData[5]; - if (st == 0x1D) { //CMD_INPUT_DOWN - last_checkKey = checkKey; - checkKey = 952; - lastTime = 0; - mbFbcKeyEnterDown = 1;//true - mFbcEnterKeyDownTime = mTvInput.getNowMs(); - mTvInput.sendkeyCode_Down(checkKey); - mTvInput.sendKeyRepeatStart(955, 1200, 1500);//code 4, dis 3, repeatTime 2 - } else if (st == 0x1E) { //CMD_INPUT_UP - checkKey = 952; - if (mbFbcKeyEnterDown == 1) { - mbFbcKeyEnterDown = 0;//false - mTvInput.sendKeyRepeatStop(); - int disFbcEnterKeyDown = mTvInput.getNowMs() - mFbcEnterKeyDownTime; - LOGD("disFbcEnterKeyDown = %d", disFbcEnterKeyDown); - if (disFbcEnterKeyDown > 1200) { //long down - mTvInput.sendkeyCode_Up(955); - mTvInput.sendkeyCode_Up(952); - } else { - mTvInput.sendkeyCode_Up(checkKey); - } - } - } - break; - - - case 204: //SARADC_RIGHT - st_key_right = pData[5]; - if (st_key_right == 0x1D) { //CMD_INPUT_DOWN - last_checkKey = checkKey; - checkKey = 953; - mTvInput.sendkeyCode_Down(checkKey); - } else if (st_key_right == 0x1E) { //CMD_INPUT_UP - mTvInput.sendkeyCode_Up(checkKey); - - } - break; - - case 205: //SARADC_ENTER - st_key_right = pData[5]; - if (st_key_right == 0x1D) { //CMD_INPUT_DOWN - last_checkKey = checkKey; - checkKey = 954; - mTvInput.sendkeyCode_Down(checkKey); - } else if (st_key_right == 0x1E) { //CMD_INPUT_UP - mTvInput.sendkeyCode_Up(checkKey); - } - - break; - } -#endif - } - break; - } - default: { - break; - } - } - return 0; -} -bool CFbcCommunication::threadLoop() -{ - unsigned char readFrameBuf[512]; - while (!exitPending()) { //requietexit() or requietexitWait() not call - while (mUpgradeFlag == 1) { - usleep(1000 * 1000); - } - - int num = mEpoll.wait(); - - while (mUpgradeFlag == 1) { - usleep(1000 * 1000); - } - - for (int i = 0; i < num; ++i) { - int fd = (mEpoll)[i].data.fd; - /** - * EPOLLIN event - */ - if ((mEpoll)[i].events & EPOLLIN) { - if (fd == mHdmiCec.getFd()) { //ce-----------------------------c - int bufIndex = 0; - int needRead = 4; - int haveRead = 0; - int idx = 0, readLen = 0; - do { - readLen = mHdmiCec.readFile(readFrameBuf + bufIndex, needRead - haveRead); - haveRead += readLen; - bufIndex += readLen; - //if(haveRead == needRead) break; - } while (0); - - if (readLen > 0) { - processData(COMM_DEV_CEC, readFrameBuf, readLen); - } else { - } - } else if (fd == mSerialPort.getFd()) { - //seria---------------------------l - int cmdLen = 0, idx = 0; - LOGD("serial data come"); - memset(readFrameBuf, 0, 512); - int ret = uartReadData(readFrameBuf, &cmdLen); - - if (ret == -1) { //data error - sendAckCmd(false); - } else if (readFrameBuf[4] == 0x80) { //ack - LOGD("is ack come"); -#ifdef TV_RESEND_UMUTE_TO_FBC - if (((readFrameBuf[7] << 8) | readFrameBuf[6]) == 0x8001 && - readFrameBuf[5] == AUDIO_CMD_SET_MUTE) { - LOGD("resend unmute to 101 avoid 101 receiving unmute timeout\n"); - Fbc_Set_Value_INT8(COMM_DEV_SERIAL, AUDIO_CMD_SET_MUTE, 1); - } -#endif - } else { //not ack - sendAckCmd(true); - processData(COMM_DEV_SERIAL, readFrameBuf, cmdLen); - } - } - } - - /** - * EPOLLOUT event - */ - if ((mEpoll)[i].events & EPOLLOUT) { - - } - } - } - //exit - //return true, run again, return false,not run. - LOGD("thread exited..........\n"); - return false; -} - -int CFbcCommunication::Fbc_Set_Value_INT8(COMM_DEV_TYPE_E toDev, int cmd_type, int value) -{ - if (mUpgradeFlag == 1) { - return 0; - } - LOGD("%s cmd =0x%x, value=%d", __FUNCTION__, cmd_type, value); - if (toDev == COMM_DEV_CEC) { - unsigned char cmd[16], rxbuf[16]; - int rxlen = 0, idx = 0; - memset(cmd, 0, 16); - memset(rxbuf, 0, 16); - cmd[0] = 0x40; - cmd[1] = cmd_type; - cmd[2] = value; - sendDataOneway(COMM_DEV_CEC, cmd, 4, 0); - } else if (toDev == COMM_DEV_SERIAL) { - int crc32value = 0; - unsigned char write_buf[512]; - unsigned char rxbuf[512]; - int rxlen = 0, idx = 0; - - //leading code - write_buf[0] = 0x5a; - write_buf[1] = 0x5a; - //package length from begin to end - write_buf[2] = 0xb; - write_buf[3] = 0x0; - //Ack byte - write_buf[4] = 0x0; - //cmd ID - write_buf[5] = cmd_type; - //parameter - write_buf[6] = value; - //crc32 little Endian - crc32value = Calcrc32(0, write_buf, 7); - write_buf[7] = (crc32value >> 0) & 0xFF; - write_buf[8] = (crc32value >> 8) & 0xFF; - write_buf[9] = (crc32value >> 16) & 0xFF; - write_buf[10] = (crc32value >> 24) & 0xFF; - sendDataOneway(COMM_DEV_SERIAL, write_buf, write_buf[2], 0); - } - return 0; -} -int CFbcCommunication::Fbc_Set_Value_INT32(COMM_DEV_TYPE_E toDev, int cmd_type, int value) -{ - if (mUpgradeFlag == 1) { - return 0; - } - - if (toDev == COMM_DEV_SERIAL) { - int crc32value = 0; - unsigned char write_buf[512]; - unsigned char rxbuf[512]; - int rxlen = 0, idx = 0; - - //leading code - write_buf[0] = 0x5a; - write_buf[1] = 0x5a; - //package length from begin to end - write_buf[2] = 14; - write_buf[3] = 0x0; - //Ack byte - write_buf[4] = 0x0; - //cmd ID - write_buf[5] = cmd_type; - //parameter - write_buf[6] = (value >> 0) & 0xFF; - write_buf[7] = (value >> 8) & 0xFF; - write_buf[8] = (value >> 16) & 0xFF; - write_buf[9] = (value >> 24) & 0xFF; - //crc32 little Endian - crc32value = Calcrc32(0, write_buf, 10); - write_buf[10] = (crc32value >> 0) & 0xFF; - write_buf[11] = (crc32value >> 8) & 0xFF; - write_buf[12] = (crc32value >> 16) & 0xFF; - write_buf[13] = (crc32value >> 24) & 0xFF; - - return sendDataOneway(COMM_DEV_SERIAL, write_buf, write_buf[2], 0); - } - return -1; -} -int CFbcCommunication::Fbc_Get_Value_INT8(COMM_DEV_TYPE_E fromDev, int cmd_type, int *value) -{ - if (mUpgradeFlag == 1) { - return 0; - } - - LOGD("%s cmd =0x%x", __FUNCTION__, cmd_type); - - if (fromDev == COMM_DEV_CEC) { - unsigned char cmd[16], rxbuf[16]; - int rxlen = 0, idx = 0; - memset(cmd, 0, 16); - memset(rxbuf, 0, 16); - cmd[0] = 0x40; - cmd[1] = cmd_type; - sendDataAndWaitReply(COMM_DEV_CEC, COMM_DEV_CEC, cmd[1], cmd, 4, 0, rxbuf, &rxlen, 0); - *value = rxbuf[6]; - } else if (fromDev == COMM_DEV_SERIAL) { - int crc32value = 0, idx = 0, rxlen = 0; - unsigned char write_buf[16]; - unsigned char rxbuf[16]; - memset(rxbuf, 0, 16); - - //leading code - idx = 0; - write_buf[idx++] = 0x5a; - write_buf[idx++] = 0x5a; - //package length from begin to end - write_buf[idx++] = 0xa; - write_buf[idx++] = 0x0; - //Ack byte - write_buf[idx++] = 0x0; - //cmd ID - write_buf[idx++] = cmd_type; - //crc32 little Endian - crc32value = Calcrc32(0, write_buf, idx); - write_buf[idx++] = (crc32value >> 0) & 0xFF; - write_buf[idx++] = (crc32value >> 8) & 0xFF; - write_buf[idx++] = (crc32value >> 16) & 0xFF; - write_buf[idx++] = (crc32value >> 24) & 0xFF; - - sendDataAndWaitReply(COMM_DEV_SERIAL, COMM_DEV_SERIAL, write_buf[5], write_buf, write_buf[2], 2000, rxbuf, &rxlen, 0); - *value = rxbuf[6]; - } - return 0; -} - -int CFbcCommunication::Fbc_Set_BatchValue(COMM_DEV_TYPE_E toDev, unsigned char *cmd_buf, int count) -{ - if (mUpgradeFlag == 1) { - return 0; - } - - if ( 512 <= count) { - return -1; - } - - if (toDev == COMM_DEV_CEC) { - unsigned char cmd[512], rxbuf[512]; - int rxlen = 0, idx = 0; - memset(cmd, 0, 512); - memset(rxbuf, 0, 512); - cmd[0] = 0x40; - for (idx = 0; idx < count; idx++) { - cmd[idx + 1] = cmd_buf[idx]; - } - sendDataOneway(COMM_DEV_CEC, cmd, count + 1, 0); - } else if (toDev == COMM_DEV_SERIAL) { - int crc32value = 0; - unsigned char write_buf[512]; - unsigned char rxbuf[512]; - int rxlen = 0, idx = 0; - - //leading code - write_buf[0] = 0x5a; - write_buf[1] = 0x5a; - //package length from begin to end - write_buf[2] = (count + 9) & 0xFF; - write_buf[3] = ((count + 9) >> 8) & 0xFF; - //Ack byte : 0x80-> ack package;0x00->normal package; - write_buf[4] = 0x00; - - for (idx = 0; idx < count; idx++) { - write_buf[idx + 5] = cmd_buf[idx]; - } - //crc32 little Endian - crc32value = Calcrc32(0, write_buf, count + 5); - write_buf[count + 5] = (crc32value >> 0) & 0xFF; - write_buf[count + 6] = (crc32value >> 8) & 0xFF; - write_buf[count + 7] = (crc32value >> 16) & 0xFF; - write_buf[count + 8] = (crc32value >> 24) & 0xFF; - sendDataOneway(COMM_DEV_SERIAL, write_buf, count + 9, 0); - } - return 0; -} - -int CFbcCommunication::Fbc_Get_BatchValue(COMM_DEV_TYPE_E fromDev, unsigned char *cmd_buf, int count) -{ - if (mUpgradeFlag == 1) { - return 0; - } - - if ( 512 <= count) { - return -1; - } - int ret = 0; - // TODO: read value - if (fromDev == COMM_DEV_CEC) { - unsigned char cmd[512], rxbuf[512]; - int rxlen = 0, idx = 0; - memset(cmd, 0, 512); - memset(rxbuf, 0, 512); - cmd[0] = 0x40; - cmd[1] = cmd_buf[0]; - sendDataAndWaitReply(COMM_DEV_CEC, COMM_DEV_CEC, cmd[1], cmd, count + 1, 0, rxbuf, &rxlen, 0); - - if (rxlen > 2) { - for (idx = 0; idx < rxlen; idx++) { - cmd_buf[idx] = cmd[idx + 1]; - } - } - } else if (fromDev == COMM_DEV_SERIAL) { - int crc32value = 0, idx = 0, rxlen = 0; - unsigned char write_buf[512]; - unsigned char rxbuf[512]; - memset(write_buf, 0, 512); - memset(rxbuf, 0, 512); - - //leading code - write_buf[0] = 0x5a; - write_buf[1] = 0x5a; - //package length from begin to end - write_buf[2] = (count + 9) & 0xFF; - write_buf[3] = ((count + 9) >> 8) & 0xFF; - //Ack byte - write_buf[4] = 0x00; - //cmd ID - for (idx = 0; idx < count; idx++) { - write_buf[idx + 5] = cmd_buf[idx]; - } - //crc32 little Endian - crc32value = Calcrc32(0, write_buf, count + 5); - write_buf[count + 5] = (crc32value >> 0) & 0xFF; - write_buf[count + 6] = (crc32value >> 8) & 0xFF; - write_buf[count + 7] = (crc32value >> 16) & 0xFF; - write_buf[count + 8] = (crc32value >> 24) & 0xFF; - sendDataAndWaitReply(COMM_DEV_SERIAL, COMM_DEV_SERIAL, write_buf[5], write_buf, write_buf[2], 2000, rxbuf, &rxlen, 0); - - if (rxlen > 9) { - for (idx = 0; idx < (rxlen - 9); idx++) { - cmd_buf[idx] = rxbuf[idx + 5]; - } - } - ret = rxlen; - } - - return ret; -} - -int CFbcCommunication::cfbc_Set_Gain_Red(COMM_DEV_TYPE_E fromDev, int value) -{ - return Fbc_Set_Value_INT8(fromDev, VPU_CMD_RED_GAIN_DEF, value); -} - -int CFbcCommunication::cfbc_Get_Gain_Red(COMM_DEV_TYPE_E fromDev, int *value) -{ - return Fbc_Get_Value_INT8(fromDev, VPU_CMD_RED_GAIN_DEF | 0x80, value); -} - -int CFbcCommunication::cfbc_Set_Gain_Green(COMM_DEV_TYPE_E fromDev, int value) -{ - return Fbc_Set_Value_INT8(fromDev, VPU_CMD_GREEN_GAIN_DEF, value); -} - -int CFbcCommunication::cfbc_Get_Gain_Green(COMM_DEV_TYPE_E fromDev, int *value) -{ - return Fbc_Get_Value_INT8(fromDev, VPU_CMD_GREEN_GAIN_DEF | 0x80, value); -} - -int CFbcCommunication::cfbc_Set_Gain_Blue(COMM_DEV_TYPE_E fromDev, int value) -{ - return Fbc_Set_Value_INT8(fromDev, VPU_CMD_BLUE_GAIN_DEF, value); -} - -int CFbcCommunication::cfbc_Get_Gain_Blue(COMM_DEV_TYPE_E fromDev, int *value) -{ - return Fbc_Get_Value_INT8(fromDev, VPU_CMD_BLUE_GAIN_DEF | 0x80, value); -} - -int CFbcCommunication::cfbc_Set_Offset_Red(COMM_DEV_TYPE_E fromDev, int value) -{ - return Fbc_Set_Value_INT8(fromDev, VPU_CMD_PRE_RED_OFFSET_DEF, value); -} - -int CFbcCommunication::cfbc_Get_Offset_Red(COMM_DEV_TYPE_E fromDev, int *value) -{ - return Fbc_Get_Value_INT8(fromDev, VPU_CMD_PRE_RED_OFFSET_DEF | 0x80, value); -} - -int CFbcCommunication::cfbc_Set_Offset_Green(COMM_DEV_TYPE_E fromDev, int value) -{ - return Fbc_Set_Value_INT8(fromDev, VPU_CMD_PRE_GREEN_OFFSET_DEF, value); -} - -int CFbcCommunication::cfbc_Get_Offset_Green(COMM_DEV_TYPE_E fromDev, int *value) -{ - return Fbc_Get_Value_INT8(fromDev, VPU_CMD_PRE_GREEN_OFFSET_DEF | 0x80, value); -} - -int CFbcCommunication::cfbc_Set_Offset_Blue(COMM_DEV_TYPE_E fromDev, int value) -{ - return Fbc_Set_Value_INT8(fromDev, VPU_CMD_PRE_BLUE_OFFSET_DEF, value); -} - -int CFbcCommunication::cfbc_Get_Offset_Blue(COMM_DEV_TYPE_E fromDev, int *value) -{ - return Fbc_Get_Value_INT8(fromDev, VPU_CMD_PRE_BLUE_OFFSET_DEF | 0x80, value); -} - -int CFbcCommunication::cfbc_Set_WB_Initial(COMM_DEV_TYPE_E fromDev, int value) -{ - return Fbc_Set_Value_INT8(fromDev, VPU_CMD_WB, value); -} - -int CFbcCommunication::cfbc_Get_WB_Initial(COMM_DEV_TYPE_E fromDev, int *value) -{ - return Fbc_Get_Value_INT8(fromDev, VPU_CMD_WB | 0x80, value); -} - -int CFbcCommunication::cfbc_Set_ColorTemp_Mode(COMM_DEV_TYPE_E fromDev, int value) -{ - int fbcValue = value; - switch (value) { - case 0: //standard - fbcValue = 1; - break; - case 1: //warm - fbcValue = 2; - break; - case 2: //cold - fbcValue = 0; - break; - default: - break; - } - LOGD("before set fbcValue = %d", fbcValue); - return Fbc_Set_Value_INT8(fromDev, VPU_CMD_COLOR_TEMPERATURE_DEF, fbcValue); -} - -int CFbcCommunication::cfbc_Get_ColorTemp_Mode(COMM_DEV_TYPE_E fromDev, int *value) -{ - Fbc_Get_Value_INT8(fromDev, VPU_CMD_COLOR_TEMPERATURE_DEF | 0x80, value); - - switch (*value) { - case 0: //cold - *value = 2; - break; - case 1: //standard - *value = 0; - break; - case 2: //warm - *value = 1; - break; - default: - break; - } - - return 0; -} - -int CFbcCommunication::cfbc_Set_Test_Pattern(COMM_DEV_TYPE_E fromDev, int value) -{ - return Fbc_Set_Value_INT8(fromDev, VPU_CMD_PATTEN_SEL, value); -} - -int CFbcCommunication::cfbc_Get_Test_Pattern(COMM_DEV_TYPE_E fromDev, int *value) -{ - return Fbc_Get_Value_INT8(fromDev, VPU_CMD_PATTEN_SEL | 0x80, value); -} - -int CFbcCommunication::cfbc_Set_Picture_Mode(COMM_DEV_TYPE_E fromDev, int value) -{ - return Fbc_Set_Value_INT8(fromDev, VPU_CMD_PICTURE_MODE, value); -} - -int CFbcCommunication::cfbc_Get_Picture_Mode(COMM_DEV_TYPE_E fromDev, int *value) -{ - return Fbc_Get_Value_INT8(fromDev, VPU_CMD_PICTURE_MODE | 0x80, value); -} - -int CFbcCommunication::cfbc_Set_Contrast(COMM_DEV_TYPE_E fromDev, int value) -{ - return Fbc_Set_Value_INT8(fromDev, VPU_CMD_CONTRAST_DEF, value); -} - -int CFbcCommunication::cfbc_Get_Contrast(COMM_DEV_TYPE_E fromDev, int *value) -{ - return Fbc_Get_Value_INT8(fromDev, VPU_CMD_CONTRAST_DEF | 0x80, value); -} - -int CFbcCommunication::cfbc_Set_Brightness(COMM_DEV_TYPE_E fromDev, int value) -{ - return Fbc_Set_Value_INT8(fromDev, VPU_CMD_BRIGHTNESS_DEF, value); -} - -int CFbcCommunication::cfbc_Get_Brightness(COMM_DEV_TYPE_E fromDev, int *value) -{ - return Fbc_Get_Value_INT8(fromDev, VPU_CMD_BRIGHTNESS_DEF | 0x80, value); -} - -int CFbcCommunication::cfbc_Set_Saturation(COMM_DEV_TYPE_E fromDev, int value) -{ - return Fbc_Set_Value_INT8(fromDev, VPU_CMD_COLOR_DEF, value); -} - -int CFbcCommunication::cfbc_Get_Saturation(COMM_DEV_TYPE_E fromDev, int *value) -{ - return Fbc_Get_Value_INT8(fromDev, VPU_CMD_COLOR_DEF | 0x80, value); -} - -int CFbcCommunication::cfbc_Set_HueColorTint(COMM_DEV_TYPE_E fromDev, int value) -{ - return Fbc_Set_Value_INT8(fromDev, VPU_CMD_HUE_DEF, value); -} - -int CFbcCommunication::cfbc_Get_HueColorTint(COMM_DEV_TYPE_E fromDev, int *value) -{ - return Fbc_Get_Value_INT8(fromDev, VPU_CMD_HUE_DEF | 0x80, value); -} - -int CFbcCommunication::cfbc_Set_Backlight(COMM_DEV_TYPE_E fromDev, int value) -{ - return Fbc_Set_Value_INT8(fromDev, VPU_CMD_BACKLIGHT_DEF, value); -} - -int CFbcCommunication::cfbc_Get_Backlight(COMM_DEV_TYPE_E fromDev, int *value) -{ - return Fbc_Get_Value_INT8(fromDev, VPU_CMD_BACKLIGHT_DEF | 0x80, value); -} - -int CFbcCommunication::cfbc_Set_Source(COMM_DEV_TYPE_E fromDev, int value) -{ - return Fbc_Set_Value_INT8(fromDev, VPU_CMD_SOURCE, value); -} - -int CFbcCommunication::cfbc_Get_Source(COMM_DEV_TYPE_E fromDev, int *value) -{ - return Fbc_Get_Value_INT8(fromDev, VPU_CMD_SOURCE | 0x80, value); -} - -int CFbcCommunication::cfbc_Set_Mute(COMM_DEV_TYPE_E fromDev, int value) -{ - LOGD("cfbc_Set_Mute = %d", value); - return Fbc_Set_Value_INT8(fromDev, AUDIO_CMD_SET_MUTE, value); -} -int CFbcCommunication::cfbc_Set_FBC_Audio_Source(COMM_DEV_TYPE_E fromDev, int value) -{ - return Fbc_Set_Value_INT8(fromDev, AUDIO_CMD_SET_SOURCE, value); -} - -int CFbcCommunication::cfbc_Get_Mute(COMM_DEV_TYPE_E fromDev, int *value) -{ - return Fbc_Get_Value_INT8(fromDev, AUDIO_CMD_GET_MUTE, value); -} - -int CFbcCommunication::cfbc_Set_Volume_Bar(COMM_DEV_TYPE_E fromDev, int value) -{ - return Fbc_Set_Value_INT8(fromDev, AUDIO_CMD_SET_VOLUME_BAR, value); -} - -int CFbcCommunication::cfbc_Get_Volume_Bar(COMM_DEV_TYPE_E fromDev, int *value) -{ - return Fbc_Get_Value_INT8(fromDev, AUDIO_CMD_GET_VOLUME_BAR, value); -} - -int CFbcCommunication::cfbc_Set_Balance(COMM_DEV_TYPE_E fromDev, int value) -{ - return Fbc_Set_Value_INT8(fromDev, AUDIO_CMD_SET_BALANCE, value); -} - -int CFbcCommunication::cfbc_Get_Balance(COMM_DEV_TYPE_E fromDev, int *value) -{ - return Fbc_Get_Value_INT8(fromDev, AUDIO_CMD_GET_BALANCE, value); -} - -int CFbcCommunication::cfbc_Set_Master_Volume(COMM_DEV_TYPE_E fromDev, int value) -{ - return Fbc_Set_Value_INT8(fromDev, AUDIO_CMD_SET_MASTER_VOLUME, value); -} - -int CFbcCommunication::cfbc_Get_Master_Volume(COMM_DEV_TYPE_E fromDev, int *value) -{ - return Fbc_Get_Value_INT8(fromDev, AUDIO_CMD_GET_MASTER_VOLUME, value); -} - -int CFbcCommunication::cfbc_Set_CM(COMM_DEV_TYPE_E fromDev, unsigned char value) -{ - unsigned char cmd[512]; - memset(cmd, 0, 512); - - cmd[0] = VPU_CMD_ENABLE; - cmd[1] = VPU_MODULE_CM2; - cmd[2] = value;//value:0~1 - return Fbc_Set_BatchValue(fromDev, cmd, 3); -} - -int CFbcCommunication::cfbc_Get_CM(COMM_DEV_TYPE_E fromDev, int *value) -{ - unsigned char cmd[512]; - memset(cmd, 0, 512); - - cmd[0] = VPU_CMD_ENABLE | 0x80; - cmd[1] = VPU_MODULE_CM2; - - Fbc_Get_BatchValue(fromDev, cmd, 2); - *value = cmd[2]; - - return 0; -} -int CFbcCommunication::cfbc_Set_DNLP(COMM_DEV_TYPE_E fromDev, unsigned char value) -{ - unsigned char cmd[512]; - memset(cmd, 0, 512); - - cmd[0] = VPU_CMD_ENABLE; - cmd[1] = VPU_MODULE_DNLP; - cmd[2] = value;//value:0~1 - - return Fbc_Set_BatchValue(fromDev, cmd, 3); -} - -int CFbcCommunication::cfbc_Get_DNLP(COMM_DEV_TYPE_E fromDev, int *value) -{ - unsigned char cmd[512]; - memset(cmd, 0, 512); - - cmd[0] = VPU_CMD_ENABLE | 0x80; - cmd[1] = VPU_MODULE_DNLP; - - Fbc_Get_BatchValue(fromDev, cmd, 2); - *value = cmd[2]; - - return 0; -} - -int CFbcCommunication::cfbc_Get_FBC_MAINCODE_Version(COMM_DEV_TYPE_E fromDev, char sw_ver[], char build_time[], char git_ver[], char git_branch[], char build_name[]) -{ - int rx_len = 0, tmp_ind = 0; - unsigned char cmd[512]; - - if (sw_ver == NULL || build_time == NULL || git_ver == NULL || git_branch == NULL || build_name == NULL) { - return -1; - } - - memset(cmd, 0, 512); - cmd[0] = CMD_FBC_MAIN_CODE_VERSION; - rx_len = Fbc_Get_BatchValue(fromDev, cmd, 1); - - sw_ver[0] = 0; - build_time[0] = 0; - git_ver[0] = 0; - git_branch[0] = 0; - build_name[0] = 0; - - if (rx_len <= 0) { - return -1; - } - - if (cmd[0] != CMD_FBC_MAIN_CODE_VERSION || cmd[1] != 0x88 || cmd[2] != 0x99) { - return -1; - } - - tmp_ind = 3; - - strcpy(sw_ver, (char *)(cmd + tmp_ind)); - tmp_ind += strlen(sw_ver); - tmp_ind += 1; - - strcpy(build_time, (char *)(cmd + tmp_ind)); - tmp_ind += strlen(build_time); - tmp_ind += 1; - - strcpy(git_ver, (char *)(cmd + tmp_ind)); - tmp_ind += strlen(git_ver); - tmp_ind += 1; - - strcpy(git_branch, (char *)(cmd + tmp_ind)); - tmp_ind += strlen(git_branch); - tmp_ind += 1; - - strcpy(build_name, (char *)(cmd + tmp_ind)); - tmp_ind += strlen(build_name); - tmp_ind += 1; - LOGD("sw_ver=%s, buildt=%s, gitv=%s, gitb=%s,bn=%s", sw_ver, build_time, git_ver, git_branch, build_name); - return 0; -} - -int CFbcCommunication::cfbc_Set_FBC_Factory_SN(COMM_DEV_TYPE_E fromDev, const char *pSNval) -{ - unsigned char cmd[512]; - int len = strlen(pSNval); - - memset(cmd, 0, 512); - - cmd[0] = CMD_SET_FACTORY_SN; - - memcpy(cmd + 1, pSNval, len); - - LOGD("cmd : %s\n", cmd); - - return Fbc_Set_BatchValue(fromDev, cmd, len + 1); -} - -int CFbcCommunication::cfbc_Get_FBC_Factory_SN(COMM_DEV_TYPE_E fromDev, char FactorySN[]) -{ - int rx_len = 0; - unsigned char cmd[512]; - memset(cmd, 0, 512); - cmd[0] = CMD_GET_FACTORY_SN; - rx_len = Fbc_Get_BatchValue(fromDev, cmd, 1); - if (rx_len <= 0) { - return -1; - } - strncpy(FactorySN, (char *)(cmd + 1), rx_len); - - LOGD("panelModel=%s", FactorySN); - return 0; -} - -int CFbcCommunication::cfbc_Get_FBC_Get_PANel_INFO(COMM_DEV_TYPE_E fromDev, char panel_model[]) -{ - int rx_len = 0; - unsigned char cmd[512]; - memset(cmd, 0, 512); - cmd[0] = CMD_DEVICE_ID; - rx_len = Fbc_Get_BatchValue(fromDev, cmd, 1); - if (rx_len <= 0) { - return -1; - } - strcpy(panel_model, (char *)(cmd + 1)); - - LOGD("panelModel=%s", panel_model); - return 0; -} - -int CFbcCommunication::cfbc_Set_FBC_panel_power_switch(COMM_DEV_TYPE_E fromDev, int switch_val) -{ - unsigned char cmd[512]; - - memset(cmd, 0, 512); - - cmd[0] = FBC_PANEL_POWER; - cmd[1] = switch_val; //0 is fbc panel power off, 1 is panel power on. - - return Fbc_Set_BatchValue(fromDev, cmd, 2); -} - -int CFbcCommunication::cfbc_Set_FBC_suspend(COMM_DEV_TYPE_E fromDev, int switch_val) -{ - unsigned char cmd[512]; - - memset(cmd, 0, 512); - - cmd[0] = FBC_SUSPEND_POWER; - cmd[1] = switch_val; //0 - - return Fbc_Set_BatchValue(fromDev, cmd, 2); -} -int CFbcCommunication::cfbc_Set_FBC_User_Setting_Default(COMM_DEV_TYPE_E fromDev, int param) -{ - unsigned char cmd[512]; - - memset(cmd, 0, 512); - - cmd[0] = FBC_USER_SETTING_DEFAULT; - cmd[1] = param; //0 - - return Fbc_Set_BatchValue(fromDev, cmd, 2); -} - -int CFbcCommunication::cfbc_SendRebootToUpgradeCmd(COMM_DEV_TYPE_E fromDev, int value) -{ - return Fbc_Set_Value_INT32(fromDev, FBC_REBOOT_UPGRADE, value); -} - -int CFbcCommunication::cfbc_FBC_Send_Key_To_Fbc(COMM_DEV_TYPE_E fromDev, int keycode __unused, int param __unused) -{ - unsigned char cmd[512]; - - memset(cmd, 0, 512); - - cmd[0] = CMD_ACTIVE_KEY; - cmd[1] = keycode; //0 - - return Fbc_Set_BatchValue(fromDev, cmd, 2); -} - -int CFbcCommunication::cfbc_Get_FBC_PANEL_REVERSE(COMM_DEV_TYPE_E fromDev, int *value) -{ - unsigned char cmd[512]; - memset(cmd, 0, 512); - - cmd[0] = CMD_PANEL_INFO; - //0://panel reverse - //1://panel output_mode - //2://panel byte num - cmd[1] = 0; - - Fbc_Get_BatchValue(fromDev, cmd, 2); - //cmd[0] cmdid-PANEL-INFO - //cmd[1] param[0] - panel reverse - *value = cmd[2]; - - return 0; -} - -int CFbcCommunication::cfbc_Get_FBC_PANEL_OUTPUT(COMM_DEV_TYPE_E fromDev, int *value) -{ - unsigned char cmd[512]; - memset(cmd, 0, 512); - - cmd[0] = CMD_PANEL_INFO; - //0://panel reverse - //1://panel output_mode - //2://panel byte num - cmd[1] = 1; - - Fbc_Get_BatchValue(fromDev, cmd, 2); - //cmd[0] cmdid-PANEL-INFO - //cmd[1] param[0] - panel reverse - *value = cmd[2]; - - return 0; -} - -int CFbcCommunication::cfbc_Set_FBC_project_id(COMM_DEV_TYPE_E fromDev, int prj_id) -{ - unsigned char cmd[512]; - - memset(cmd, 0, 512); - - cmd[0] = CMD_SET_PROJECT_SELECT; - cmd[1] = prj_id; - - return Fbc_Set_BatchValue(fromDev, cmd, 2); -} - -int CFbcCommunication::cfbc_Get_FBC_project_id(COMM_DEV_TYPE_E fromDev, int *prj_id) -{ - return Fbc_Get_Value_INT8(fromDev, CMD_GET_PROJECT_SELECT, prj_id); -} - -int CFbcCommunication::cfbc_Set_Gamma(COMM_DEV_TYPE_E fromDev, unsigned char value) -{ - unsigned char cmd[512]; - memset(cmd, 0, 512); - - cmd[0] = VPU_CMD_ENABLE; - cmd[1] = VPU_MODULE_GAMMA; - cmd[2] = value;//value:0~1 - - return Fbc_Set_BatchValue(fromDev, cmd, 3); -} - -int CFbcCommunication::cfbc_Get_Gamma(COMM_DEV_TYPE_E fromDev, int *value) -{ - unsigned char cmd[512]; - memset(cmd, 0, 512); - - cmd[0] = VPU_CMD_ENABLE | 0x80; - cmd[1] = VPU_MODULE_GAMMA; - - Fbc_Get_BatchValue(fromDev, cmd, 2); - *value = cmd[2]; - - return 0; -} - -int CFbcCommunication::cfbc_Set_VMute(COMM_DEV_TYPE_E fromDev, unsigned char value) -{ - unsigned char cmd[512]; - memset(cmd, 0, 512); - - cmd[0] = VPU_CMD_USER_VMUTE; - cmd[1] = value; - LOGD("cfbc_Set_VMute=%d", cmd[1]); - - return Fbc_Set_BatchValue(fromDev, cmd, 2); -} -int CFbcCommunication::cfbc_Set_WhiteBalance_OnOff(COMM_DEV_TYPE_E fromDev, unsigned char value) -{ - unsigned char cmd[512]; - memset(cmd, 0, 512); - - cmd[0] = VPU_CMD_ENABLE; - cmd[1] = VPU_MODULE_WB; - cmd[2] = value;//value:0~1 - - return Fbc_Set_BatchValue(fromDev, cmd, 3); -} - -int CFbcCommunication::cfbc_Get_WhiteBalance_OnOff(COMM_DEV_TYPE_E fromDev, int *value) -{ - unsigned char cmd[512]; - memset(cmd, 0, 512); - - cmd[0] = VPU_CMD_ENABLE | 0x80; - cmd[1] = VPU_MODULE_WB; - - Fbc_Get_BatchValue(fromDev, cmd, 2); - *value = cmd[2]; - - return 0; -} - -int CFbcCommunication::cfbc_Set_WB_Batch(COMM_DEV_TYPE_E fromDev, unsigned char mode, unsigned char r_gain, unsigned char g_gain, unsigned char b_gain, unsigned char r_offset, unsigned char g_offset, unsigned char b_offset) -{ - unsigned char cmd[512]; - memset(cmd, 0, 512); - - cmd[0] = VPU_CMD_WB_VALUE; - cmd[1] = mode; - cmd[2] = r_gain; - cmd[3] = g_gain; - cmd[4] = b_gain; - cmd[5] = r_offset; - cmd[6] = g_offset; - cmd[7] = b_offset; - - return Fbc_Set_BatchValue(fromDev, cmd, 8); -} - -int CFbcCommunication::cfbc_TestPattern_Select(COMM_DEV_TYPE_E fromDev, int value) -{ - int ret = -1; - unsigned char cmd[512]; - memset(cmd, 0, 512); - - LOGD("Call vpp 63 2 1\n"); - cmd[0] = VPU_CMD_SRCIF; - cmd[1] = 2; - cmd[2] = 1; - - ret = Fbc_Set_BatchValue(fromDev, cmd, 3);//close csc0 - - if (ret == 0) { - LOGD("Call vpp 9 11 1\n"); - memset(cmd, 0, 512); - cmd[0] = VPU_CMD_ENABLE; - cmd[1] = 11; - cmd[2] = 1; - ret = Fbc_Set_BatchValue(fromDev, cmd, 3); - if (ret == 0) { - memset(cmd, 0, 512); - LOGD("Call vpp 42 1-17\n"); - Fbc_Set_Value_INT8(fromDev, VPU_CMD_PATTEN_SEL, value); - } - } - - return ret; -} -int CFbcCommunication::cfbc_WhiteBalance_GrayPattern_OnOff(COMM_DEV_TYPE_E fromDev, int onOff) -{ - int ret = -1; - unsigned char cmd[512]; - memset(cmd, 0, 512); - if (onOff == 0) { //On - LOGD("Call vpp 63 2 1"); - cmd[0] = VPU_CMD_SRCIF; - cmd[1] = 2; - cmd[2] = 1; - ret = Fbc_Set_BatchValue(fromDev, cmd, 3);//close csc0 - if (ret == 0) { - LOGD("Call vpp 9 9 0"); - cmd[0] = VPU_CMD_ENABLE; - cmd[1] = 9; - cmd[2] = 0; - ret = Fbc_Set_BatchValue(fromDev, cmd, 3);//close csc1 - if (ret == 0) { - LOGD("Call vpp 9 10 0"); - cmd[0] = VPU_CMD_ENABLE; - cmd[1] = 10; - cmd[2] = 0; - ret = Fbc_Set_BatchValue(fromDev, cmd, 3);//close dnlp - if (ret == 0) { - LOGD("Call vpp 9 8 0"); - cmd[0] = VPU_CMD_ENABLE; - cmd[1] = 8; - cmd[2] = 0; - ret = Fbc_Set_BatchValue(fromDev, cmd, 3);//close cm - } - } - } - - } else { //Off - LOGD("Call vpp 63 2 2"); - cmd[0] = VPU_CMD_SRCIF; - cmd[1] = 2; - cmd[2] = 2; - ret = Fbc_Set_BatchValue(fromDev, cmd, 3); - if (ret == 0) { - LOGD("Call vpp 9 9 1"); - cmd[0] = VPU_CMD_ENABLE; - cmd[1] = 9; - cmd[2] = 1; - ret = Fbc_Set_BatchValue(fromDev, cmd, 3);//open csc1 - if (ret == 0) { - LOGD("Call vpp 9 10 1"); - cmd[0] = VPU_CMD_ENABLE; - cmd[1] = 10; - cmd[2] = 1; - ret = Fbc_Set_BatchValue(fromDev, cmd, 3);//open dnlp - if (ret == 0) { - LOGD("Call vpp 9 8 1"); - cmd[0] = VPU_CMD_ENABLE; - cmd[1] = 8; - cmd[2] = 1; - ret = Fbc_Set_BatchValue(fromDev, cmd, 3);//open cm - } - } - } - } - return ret; -} - -int CFbcCommunication::cfbc_WhiteBalance_SetGrayPattern(COMM_DEV_TYPE_E fromDev, unsigned char value) -{ - int ret = -1; - unsigned char cmd[512]; - memset(cmd, 0, 512); - cmd[0] = VPU_CMD_GRAY_PATTERN; - cmd[1] = value; - cmd[2] = value; - cmd[3] = value; - ret = Fbc_Set_BatchValue(fromDev, cmd, 4); - return ret; -} - -int CFbcCommunication::cfbc_Set_Auto_Backlight_OnOff(COMM_DEV_TYPE_E fromDev, unsigned char value) -{ - unsigned char cmd[512]; - memset(cmd, 0, 512); - - cmd[0] = CMD_SET_AUTO_BACKLIGHT_ONFF; - cmd[1] = value; - LOGD("cfbc_Set_naturelight_onoff\n"); - return Fbc_Set_BatchValue(fromDev, cmd, 2); -} - -int CFbcCommunication::cfbc_Get_Auto_Backlight_OnOff(COMM_DEV_TYPE_E fromDev, int *value) -{ - LOGD("cfbc_get_naturelight_onoff\n"); - return Fbc_Get_Value_INT8(fromDev, CMD_GET_AUTO_BACKLIGHT_ONFF, value); -} -int CFbcCommunication::cfbc_Get_WB_Batch(COMM_DEV_TYPE_E fromDev, unsigned char mode, unsigned char *r_gain, unsigned char *g_gain, unsigned char *b_gain, unsigned char *r_offset, unsigned char *g_offset, unsigned char *b_offset) -{ - unsigned char cmd[512]; - memset(cmd, 0, 512); - - cmd[0] = VPU_CMD_WB_VALUE | 0x80; - cmd[1] = mode; - - Fbc_Get_BatchValue(fromDev, cmd, 2); - //*mode = cmd[1]; - *r_gain = cmd[2]; - *g_gain = cmd[3]; - *b_gain = cmd[4]; - *r_offset = cmd[5]; - *g_offset = cmd[6]; - *b_offset = cmd[7]; - - return 0; -} - -int CFbcCommunication::cfbc_Set_backlight_onoff(COMM_DEV_TYPE_E fromDev, int value) -{ - return Fbc_Set_Value_INT8(fromDev, VPU_CMD_BACKLIGHT_EN, value); -} - -int CFbcCommunication::cfbc_Get_backlight_onoff(COMM_DEV_TYPE_E fromDev, int *value) -{ - return Fbc_Get_Value_INT8(fromDev, VPU_CMD_BACKLIGHT_EN, value); -} - -int CFbcCommunication::cfbc_Set_LVDS_SSG_Set(COMM_DEV_TYPE_E fromDev, int value) -{ - return Fbc_Set_Value_INT8(fromDev, CMD_LVDS_SSG_SET, value); -} - -int CFbcCommunication::cfbc_Set_AUTO_ELEC_MODE(COMM_DEV_TYPE_E fromDev, int value) -{ - LOGD("%s cmd =0x%x, value=%d~~~~~~~~", __FUNCTION__, VPU_CMD_SET_ELEC_MODE, value); - return Fbc_Set_Value_INT8(fromDev, VPU_CMD_SET_ELEC_MODE, value); -} - -int CFbcCommunication::cfbc_Get_AUTO_ELEC_MODE(COMM_DEV_TYPE_E fromDev __unused, int *value __unused) -{ - return 0; -} - -int CFbcCommunication::cfbc_Set_Thermal_state(COMM_DEV_TYPE_E fromDev, int value) -{ - LOGD("%s cmd =0x%x, data%d ~~~~~~~~~\n", __FUNCTION__, CMD_HDMI_STAT, value); - //return Fbc_Set_Value_INT8(fromDev, CMD_HDMI_STAT, value); - return Fbc_Set_Value_INT32(fromDev, CMD_HDMI_STAT, value); -} - -int CFbcCommunication::cfbc_Set_LightSensor_N310(COMM_DEV_TYPE_E fromDev, int value) -{ - return Fbc_Set_Value_INT8(fromDev, 0x84, value); - // return Fbc_Set_Value_INT8(fromDev, CMD_LIGHT_SENSOR, value); -} - -int CFbcCommunication::cfbc_Get_LightSensor_N310(COMM_DEV_TYPE_E fromDev __unused, int *value __unused) -{ - // return Fbc_Get_Value_INT8(fromDev, CMD_LIGHT_SENSOR|0x80, value); - return 0; -} - -int CFbcCommunication::cfbc_Set_Dream_Panel_N310(COMM_DEV_TYPE_E fromDev, int value) -{ - return Fbc_Set_Value_INT8(fromDev, 0x83, value); - // return Fbc_Set_Value_INT8(fromDev, CMD_DREAM_PANEL, value); -} - -int CFbcCommunication::cfbc_Get_Dream_Panel_N310(COMM_DEV_TYPE_E fromDev __unused, int *value __unused) -{ - // return Fbc_Get_Value_INT8(fromDev, CMD_DREAM_PANEL|0x80, value); - return 0; -} - -int CFbcCommunication::cfbc_Set_MULT_PQ_N310(COMM_DEV_TYPE_E fromDev, int value) -{ - return Fbc_Set_Value_INT8(fromDev, 0x81, value); - // return Fbc_Set_Value_INT8(fromDev, CMD_MUTI_PQ, value); -} - -int CFbcCommunication::cfbc_Get_MULT_PQ_N310(COMM_DEV_TYPE_E fromDev __unused, int *value __unused) -{ - // return Fbc_Get_Value_INT8(fromDev, CMD_MUTI_PQ|0x80, value); - return 0; -} - -int CFbcCommunication::cfbc_Set_MEMC_N310(COMM_DEV_TYPE_E fromDev, int value) -{ - return Fbc_Set_Value_INT8(fromDev, 0x82, value); - // return Fbc_Set_Value_INT8(fromDev, CMD_MEMC, value); -} - -int CFbcCommunication::cfbc_Get_MEMC_N310(COMM_DEV_TYPE_E fromDev __unused, int *value __unused) -{ - // return Fbc_Get_Value_INT8(fromDev, CMD_MEMC|0x80, value); - return 0; -} - -int CFbcCommunication::cfbc_Set_Bluetooth_IIS_onoff(COMM_DEV_TYPE_E fromDev, int value) -{ - return Fbc_Set_Value_INT8(fromDev, CMD_BLUETOOTH_I2S_STATUS, value); -} - -int CFbcCommunication::cfbc_Get_Bluetooth_IIS_onoff(COMM_DEV_TYPE_E fromDev, int *value) -{ - return Fbc_Get_Value_INT8(fromDev, CMD_BLUETOOTH_I2S_STATUS | 0x80, value); -} - -int CFbcCommunication::cfbc_Set_Led_onoff(COMM_DEV_TYPE_E fromDev, int val_1, int val_2, int val_3) -{ - unsigned char cmd[512]; - memset(cmd, 0, 512); - - cmd[0] = CMD_SET_LED_MODE; - cmd[1] = val_1; - cmd[2] = val_2; - cmd[3] = val_3; - - return Fbc_Set_BatchValue(fromDev, cmd, 4); -} -int CFbcCommunication::cfbc_Set_LockN_state(COMM_DEV_TYPE_E fromDev, int value) -{ - LOGD("%s cmd =0x%x, data%d ~~~~~~~~~\n", __FUNCTION__, CMD_SET_LOCKN_DISABLE, value); - return Fbc_Set_Value_INT8(fromDev, CMD_SET_LOCKN_DISABLE, value); -} - -int CFbcCommunication::cfbc_SET_SPLIT_SCREEN_DEMO(COMM_DEV_TYPE_E fromDev, int value) -{ - LOGD("%s,cmd[%#x], data[%d]\n", __FUNCTION__, CMD_SET_SPLIT_SCREEN_DEMO, value); - return Fbc_Set_Value_INT8(fromDev, CMD_SET_SPLIT_SCREEN_DEMO, value); -} - -int CFbcCommunication::cfbc_Set_AP_STANDBY_N310(COMM_DEV_TYPE_E fromDev, int value) -{ - return Fbc_Set_Value_INT8(fromDev, CMD_PANEL_ON_OFF, value); - // return 0; -} - -int CFbcCommunication::cfbc_Get_AP_STANDBY_N310(COMM_DEV_TYPE_E fromDev, int *value) -{ - return Fbc_Get_Value_INT8(fromDev, CMD_PANEL_ON_OFF | 0x80, value); - // return 0; -} -int CFbcCommunication::cfbc_Set_Fbc_Uboot_Stage(COMM_DEV_TYPE_E fromDev, int value) -{ - return Fbc_Set_Value_INT8(fromDev, CMD_SET_UBOOT_STAGE, value); -} - -void CFbcCommunication::CFbcMsgQueue::handleMessage ( CMessage &msg ) -{ - LOGD ( "%s, CFbcCommunication::CFbcMsgQueue::handleMessage type = %d", __FUNCTION__, msg.mType ); - - switch ( msg.mType ) { - case TV_MSG_COMMON: - break; - - case TV_MSG_SEND_KEY: { - LOGD("CFbcMsgQueue msg type = %d", msg.mType); - //CFbcCommunication *pFbc = ( CFbcCommunication * ) ( msg.mpData ); - //pFbc->mTvInput.sendkeyCode_Down(4); - //pFbc->mbDownHaveSend = 1;//true - break; - } - - default: - break; - } -} diff --git a/tvapi/libtv/tv/CFbcCommunication.h b/tvapi/libtv/tv/CFbcCommunication.h deleted file mode 100644 index 6bfb055..0000000 --- a/tvapi/libtv/tv/CFbcCommunication.h +++ b/dev/null @@ -1,401 +0,0 @@ -#ifndef C_FBC_COMMUNICATION_H -#define C_FBC_COMMUNICATION_H -#include "tvutils/CHdmiCecCmd.h" -#include "tvutils/CSerialPort.h" -#include "tvutils/zepoll.h" -#include "tvutils/CThread.h" -#include <sys/time.h> -#include "tvutils//CTvInput.h" -#include "../tvutils/CMsgQueue.h" -typedef enum COMM_DEV_TYPE_NO { - COMM_DEV_CEC = 0, - COMM_DEV_SERIAL = 1, -} COMM_DEV_TYPE_E; -typedef enum vpu_modules_e { - VPU_MODULE_NULL = 0, - VPU_MODULE_VPU, //vpu uint - VPU_MODULE_TIMGEN, - VPU_MODULE_PATGEN, - VPU_MODULE_GAMMA, - VPU_MODULE_WB, //WhiteBalance - VPU_MODULE_BC, //Brightness&Contrast - VPU_MODULE_BCRGB, //RGB Brightness&Contrast - VPU_MODULE_CM2, - VPU_MODULE_CSC1, - VPU_MODULE_DNLP, - VPU_MODULE_CSC0, - VPU_MODULE_OSD, - VPU_MODULE_BLEND, - VPU_MODULE_DEMURE, //15 - VPU_MODULE_OUTPUT, //LVDS/VX1 output - VPU_MODULE_OSDDEC, //OSD decoder - VPU_MODULE_MAX, -} vpu_modules_t; - -typedef enum fbc_command_e { - VPU_CMD_NULL = 0, - FBC_REBOOT_UPGRADE = 0x1, - FBC_USER_SETTING_DEFAULT = 0x02, - FBC_USER_SETTING_SET, - FBC_GET_HDCP_KEY, - FBC_PANEL_POWER, - FBC_SUSPEND_POWER, - //TOP CMD num:6 - VPU_CMD_INIT = 0x8, //parameter num 0 - VPU_CMD_ENABLE, //parameter num 1;bit0~6:module;bit7:enable(1) or disable(0) - VPU_CMD_BYPASS, //parameter num 1;bit0~6:module;bit7:bypass(1) or not(0) - VPU_CMD_OUTPUT_MUX, //parameter num 1;1:lvds;2:vx1;3:minilvds - VPU_CMD_TIMING, //parameter num 1;reference vpu_timing_t - VPU_CMD_SOURCE, //parameter num 1;reference vpu_source_t - VPU_CMD_GAMMA_MOD, //parameter num 1;reference vpu_gammamod_t - VPU_CMD_D2D3 = 0xf, //0xf:D2D3 - // - - CMD_BRIDGE_SW_VER = 0x10, - CMD_DEVICE_ID, - CMD_CLIENT_TYPE, - CMD_DEVICE_NUM, - CMD_ACTIVE_KEY, - CMD_ACTIVE_STATUS, - CMD_PANEL_INFO, - CMD_LVDS_SSG_SET, - - CMD_DBG_REGISTER_ACCESS = 0x18, - CMD_DBG_MEMORY_ACCESS, - CMD_DBG_SPI_ACCESS, - CMD_DBG_VPU_MEMORY_ACCESS, - CMD_DBG_MEMORY_TRANSFER, - CMD_INPUT_DOWN, - CMD_INPUT_UP, - CMD_FBC_MAIN_CODE_VERSION, - - //0x1f reserved - //PQ+debug CMD num:32 - VPU_CMD_NATURE_LIGHT_EN = 0x20, //0 or 1;on or off ???? - VPU_CMD_BACKLIGHT_EN, //0 or 1;on or off - VPU_CMD_BRIGHTNESS, //parameter num 2;parameter1:distinguish two modules;parameter2:ui value - VPU_CMD_CONTRAST, //parameter num 2;parameter1:distinguish two modules;parameter2:ui value - VPU_CMD_BACKLIGHT, //parameter num 1; - VPU_CMD_RES1, //reserved - VPU_CMD_SATURATION, //parameter num 1; - VPU_CMD_DYNAMIC_CONTRAST, //0 or 1;?? - VPU_CMD_PICTURE_MODE, //?? - VPU_CMD_PATTERN_EN, //0 or 1;on or off - VPU_CMD_PATTEN_SEL, //0x2a parameter num 1;PATTEN SELECT - VPU_CMD_RES2, - VPU_CMD_RES3, - VPU_CMD_RES4, - VPU_CMD_RES5, - VPU_CMD_USER_VMUTE = 0x2e, - VPU_CMD_USER_GAMMA , - //0x30:sound_mode_def - VPU_CMD_COLOR_TEMPERATURE_DEF = 0x31, //def:factory setting - VPU_CMD_BRIGHTNESS_DEF, - VPU_CMD_CONTRAST_DEF, - VPU_CMD_COLOR_DEF, - VPU_CMD_HUE_DEF, - VPU_CMD_BACKLIGHT_DEF, - VPU_CMD_RES7, - VPU_CMD_AUTO_LUMA_EN = 0x38,//0 or 1;on or off;appoint to backlight? - VPU_CMD_HIST, //parameter num 0;read hist info - VPU_CMD_BLEND, //parameter num ?; - VPU_CMD_DEMURA, //parameter num ?; - VPU_CMD_CSC, //parameter num ?; - VPU_CMD_CM2, //parameter num 1;index - VPU_CMD_GAMMA, //parameter num 1;index - VPU_CMD_SRCIF, - //WB CMD num:10 - VPU_CMD_RED_GAIN_DEF = 0x40, - VPU_CMD_GREEN_GAIN_DEF, - VPU_CMD_BLUE_GAIN_DEF, - VPU_CMD_PRE_RED_OFFSET_DEF, - VPU_CMD_PRE_GREEN_OFFSET_DEF, - VPU_CMD_PRE_BLUE_OFFSET_DEF, - VPU_CMD_POST_RED_OFFSET_DEF, - VPU_CMD_POST_GREEN_OFFSET_DEF, - VPU_CMD_POST_BLUE_OFFSET_DEF, - VPU_CMD_RES9, - VPU_CMD_WB = 0x4a, - //DNLP PARM - VPU_CMD_DNLP_PARM, - VPU_CMD_WB_VALUE, - VPU_CMD_GRAY_PATTERN, - VPU_CMD_BURN, - CMD_HDMI_STAT, - VPU_CMD_READ = 0x80, - //VPU_CMD_HUE_ADJUST, //parameter num 1; - //VPU_CMD_WB, //parameter num 3;one parameter include two items so that six items can all be included - VPU_CMD_MAX = 50,//temp define 50 // - - //audio cmd - AUDIO_CMD_SET_SOURCE = 0x50, - AUDIO_CMD_SET_MASTER_VOLUME, - AUDIO_CMD_SET_CHANNEL_VOLUME, - AUDIO_CMD_SET_SUBCHANNEL_VOLUME, - AUDIO_CMD_SET_MASTER_VOLUME_GAIN, - AUDIO_CMD_SET_CHANNEL_VOLUME_INDEX, - AUDIO_CMD_SET_VOLUME_BAR, - AUDIO_CMD_SET_MUTE, - AUDIO_CMD_SET_EQ_MODE, - AUDIO_CMD_SET_BALANCE, - AUDIO_CMD_GET_SOURCE, - AUDIO_CMD_GET_MASTER_VOLUME, - AUDIO_CMD_GET_CHANNEL_VOLUME, - AUDIO_CMD_GET_SUBCHANNEL_VOLUME, - AUDIO_CMD_GET_MASTER_VOLUME_GAIN, - AUDIO_CMD_GET_CHANNEL_VOLUME_INDEX, - AUDIO_CMD_GET_VOLUME_BAR, - AUDIO_CMD_GET_MUTE, - AUDIO_CMD_GET_EQ_MODE, - AUDIO_CMD_GET_BALANCE, - - VPU_CMD_SET_ELEC_MODE = 0x64, - CMD_SET_LED_MODE = 0x65, - - CMD_SET_FACTORY_SN = 0x66, - CMD_GET_FACTORY_SN, - CMD_COMMUNICATION_TEST, - CMD_CLR_SETTINGS_DEFAULT, - CMD_BLUETOOTH_I2S_STATUS = 0x6a, - CMD_PANEL_ON_OFF = 0x6b, - - CMD_HDMI_REG = 0x70, - CMD_SET_PROJECT_SELECT = 0x71, - CMD_GET_PROJECT_SELECT = 0x72, - CMD_SET_LOCKN_DISABLE = 0x73, //0x73 - CMD_SET_SPLIT_SCREEN_DEMO = 0X74, - CMD_SET_UBOOT_STAGE = 0x7b, - - CMD_SET_AUTO_BACKLIGHT_ONFF = 0x85, - CMD_GET_AUTO_BACKLIGHT_ONFF = 0x86, -} fbc_command_t; - -typedef struct REQUEST_REPLY_CMD { - CCondition WaitReplyCondition; - int WaitDevNo; - int WaitCmd; - int WaitTimeOut; - unsigned char *replyData; - int reDataLen; -} REQUEST_REPLY_S; -class CFbcCommunication: public CThread { -public: - static const unsigned char CEC_CMD_WIFI = 0x01; - static const unsigned char CEC_CMD_ETHERNET = 0x02; - static const unsigned char CEC_CMD_3D_TIMING = 0x03; - static const unsigned char CEC_CMD_PANEL_REVERSE = 0x04; - static const unsigned char CEC_CMD_VPU_INIT = 0x08; - static const unsigned char CEC_CMD_VPU_ENABLE = 0x09; - static const unsigned char CEC_CMD_VPU_BYPASS = 0x0a; - static const unsigned char CEC_CMD_VPU_OUTPUT_MUX = 0x0b; - static const unsigned char CEC_CMD_VPU_TIMING = 0x0c; - static const unsigned char CEC_CMD_VPU_SOURCE = 0x0d; - static const unsigned char CEC_CMD_BRIDGE_SW_VER = 0x10; - static const unsigned char CEC_CMD_DEVICE_ID = 0x11; - static const unsigned char CEC_CMD_CLIENT_TYPE = 0x12; - static const unsigned char CEC_CMD_DEVICE_NUM = 0x13; - static const unsigned char CEC_CMD_ACTIVE_KEY = 0x14; - static const unsigned char CEC_CMD_ACTIVE_STATUS = 0x15; - - - static const unsigned char CEC_CMD_DBG_REGISTER_ACCESS = 0x18; - static const unsigned char CEC_CMD_DBG_MEMORY_ACCESS = 0x19; - static const unsigned char CEC_CMD_DBG_SPI_ACCESS = 0x1a; - static const unsigned char CEC_CMD_DBG_VPU_MEMORY_ACCESS = 0x1b; - static const unsigned char CEC_CMD_DBG_MEMORY_TRANSFER = 0x1c; - static const unsigned char CEC_CMD_INPUT_KEY_DOWN = 0x1d; - static const unsigned char CEC_CMD_INPUT_KEY_UP = 0x1e; - static const unsigned char CEC_CMD_REBOOT = 0x1f; - static const unsigned char CEC_CMD_NATURE_LIGHT_ONOFF = 0x20; - static const unsigned char CEC_CMD_USR_BACKLIGHT_ONOFF = 0x21; - static const unsigned char CEC_CMD_USR_BRIGHTNESS = 0x22; - static const unsigned char CEC_CMD_USR_CONTRAST = 0x23; - static const unsigned char CEC_CMD_USR_BACKLIGHT = 0x24; - static const unsigned char CEC_CMD_USR_SATURATION = 0x26; - static const unsigned char CEC_CMD_USR_DYNAMIC_CONTRAST = 0x27; - static const unsigned char CEC_CMD_USR_PICTURE_MODE = 0x28; - static const unsigned char CEC_CMD_TEST_PATTERN_ONOFF = 0x29; - static const unsigned char CEC_CMD_TEST_PATTERN_SELECT = 0x2a; - static const unsigned char CEC_CMD_USER_GAMMA = 0x2f; - static const unsigned char CEC_CMD_DEF_SOUND_MODE = 0x30; - static const unsigned char CEC_CMD_DEF_COLOR_TEMPERATURE = 0x31; - static const unsigned char CEC_CMD_DEF_BRIGHTNESS = 0x32; - static const unsigned char CEC_CMD_DEF_CONTRAST = 0x33; - static const unsigned char CEC_CMD_DEF_COLOR = 0x34; - static const unsigned char CEC_CMD_DEF_BACKLIGHT = 0x36; - static const unsigned char CEC_CMD_AUTO_LUMA_ONOFF = 0x38; - static const unsigned char CEC_CMD_HISTOGRAM = 0x39; - static const unsigned char CEC_CMD_BLEND = 0x3a; - static const unsigned char CEC_CMD_DEMULA = 0x3b; - static const unsigned char CEC_CMD_COLOR_SPACE_CONVERSION = 0x3c; - static const unsigned char CEC_CMD_CM2 = 0x3d; - static const unsigned char CEC_CMD_DEF_RED_GAIN = 0x40; - static const unsigned char CEC_CMD_DEF_GREEN_GAIN = 0x41; - static const unsigned char CEC_CMD_DEF_BLUE_GAIN = 0x42; - static const unsigned char CEC_CMD_DEF_RED_OFFSET = 0x43; - static const unsigned char CEC_CMD_DEF_GREEN_OFFSET = 0x44; - static const unsigned char CEC_CMD_DEF_BLUE_OFFSET = 0x45; - static const unsigned char CEC_CMD_DEF_PRE_RED_OFFSET = 0x46; - static const unsigned char CEC_CMD_DEF_PRE_GREEN_OFFSET = 0x47; - static const unsigned char CEC_CMD_DEF_PRE_BLUE_OFFSET = 0x48; - static const unsigned char CEC_CMD_WHITEBALANCE = 0x4a; - static const unsigned char CEC_CMD_SET_SW_VERSION = 0x57; - static const unsigned char CEC_CMD_3D = 0xd0; - - friend class CTvMsgQueue; - class CFbcMsgQueue: public CMsgQueueThread { - public: - static const int TV_MSG_COMMON = 0; - static const int TV_MSG_SEND_KEY = 1; - private: - virtual void handleMessage ( CMessage &msg ); - }; - CFbcCommunication(); - ~CFbcCommunication(); - int start(); - //--------------------------------------------- - - //--------------------------------------------- - void testUart(); - int handleCmd(COMM_DEV_TYPE_E fromDev, int cmd[], int *pRetValue); - int sendDataOneway(int devno, unsigned char *pData, int dataLen, int flags); - int sendDataAndWaitReply(int devno, int waitForDevno, int waitForCmd, unsigned char *pData, int dataLen, int timeout, unsigned char *pReData, int *reDataLen, int flags); - int closeAll(); - int SetUpgradeFlag(int flag); - int uartReadStream(unsigned char *retData, int rd_max_len, int timeout); - unsigned int Calcrc32(unsigned int crc, const unsigned char *ptr, unsigned int buf_len); - int cfbc_Set_Gain_Red(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Get_Gain_Red(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_Gain_Green(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Get_Gain_Green(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_Gain_Blue(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Get_Gain_Blue(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_Offset_Red(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Get_Offset_Red(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_Offset_Green(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Get_Offset_Green(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_Offset_Blue(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Get_Offset_Blue(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_WB_Initial(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Get_WB_Initial(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_ColorTemp_Mode(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Get_ColorTemp_Mode(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_Test_Pattern(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Get_Test_Pattern(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_Picture_Mode(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Get_Picture_Mode(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_Contrast(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Get_Contrast(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_Brightness(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Get_Brightness(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_Saturation(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Get_Saturation(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_HueColorTint(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Get_HueColorTint(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_Backlight(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Get_Backlight(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_Source(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Get_Source(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_Mute(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Get_Mute(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_Volume_Bar(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Get_Volume_Bar(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_Balance(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Get_Balance(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_Master_Volume(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Get_Master_Volume(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_CM(COMM_DEV_TYPE_E fromDev, unsigned char value); - int cfbc_Get_CM(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_DNLP(COMM_DEV_TYPE_E fromDev, unsigned char value); - int cfbc_Get_DNLP(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_Gamma(COMM_DEV_TYPE_E fromDev, unsigned char value); - int cfbc_Get_Gamma(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_WhiteBalance_OnOff(COMM_DEV_TYPE_E fromDev, unsigned char value); - int cfbc_Get_WhiteBalance_OnOff(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_Auto_Backlight_OnOff(COMM_DEV_TYPE_E fromDev, unsigned char value); - int cfbc_Get_Auto_Backlight_OnOff(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_WhiteBalance_GrayPattern_OnOff(COMM_DEV_TYPE_E fromDev, int onOff); - int cfbc_TestPattern_Select(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_WhiteBalance_SetGrayPattern(COMM_DEV_TYPE_E fromDev, unsigned char value); - int cfbc_Get_WB_Batch(COMM_DEV_TYPE_E fromDev, unsigned char mode, unsigned char *r_gain, unsigned char *g_gain, unsigned char *b_gain, unsigned char *r_offset, unsigned char *g_offset, unsigned char *b_offset); - int cfbc_Set_WB_Batch(COMM_DEV_TYPE_E fromDev, unsigned char mode, unsigned char r_gain, unsigned char g_gain, unsigned char b_gain, unsigned char r_offset, unsigned char g_offset, unsigned char b_offset); - int cfbc_Set_backlight_onoff(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Get_backlight_onoff(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_LVDS_SSG_Set(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Set_AUTO_ELEC_MODE(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Get_AUTO_ELEC_MODE(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Get_FBC_MAINCODE_Version(COMM_DEV_TYPE_E fromDev, char sw_ver[], char build_time[], char git_ver[], char git_branch[], char build_name[]); - int cfbc_Get_FBC_Get_PANel_INFO(COMM_DEV_TYPE_E fromDev, char panel_model[]); - int cfbc_Set_FBC_panel_power_switch(COMM_DEV_TYPE_E fromDev, int switch_val); - int cfbc_Set_FBC_suspend(COMM_DEV_TYPE_E fromDev, int switch_val); - int cfbc_FBC_Send_Key_To_Fbc(COMM_DEV_TYPE_E fromDev, int keycode, int param); - int cfbc_Get_FBC_PANEL_REVERSE(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Get_FBC_PANEL_OUTPUT(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_FBC_project_id(COMM_DEV_TYPE_E fromDev, int prj_id); - int cfbc_Get_FBC_project_id(COMM_DEV_TYPE_E fromDev, int *prj_id); - int cfbc_SendRebootToUpgradeCmd(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Set_FBC_User_Setting_Default(COMM_DEV_TYPE_E fromDev, int param); - int cfbc_Set_FBC_Factory_SN(COMM_DEV_TYPE_E fromDev, const char *pSNval) ; - int cfbc_Get_FBC_Factory_SN(COMM_DEV_TYPE_E fromDev, char FactorySN[]); - int cfbc_Set_FBC_Audio_Source(COMM_DEV_TYPE_E fromDev, int value); - - int cfbc_Set_Thermal_state(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Set_LightSensor_N310(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Get_LightSensor_N310(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_Dream_Panel_N310(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Get_Dream_Panel_N310(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_MULT_PQ_N310(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Get_MULT_PQ_N310(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_MEMC_N310(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Get_MEMC_N310(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_LockN_state(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Set_VMute(COMM_DEV_TYPE_E fromDev, unsigned char value); - int cfbc_SET_SPLIT_SCREEN_DEMO(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Set_Bluetooth_IIS_onoff(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Get_Bluetooth_IIS_onoff(COMM_DEV_TYPE_E fromDev, int *value); - int cfbc_Set_Led_onoff(COMM_DEV_TYPE_E fromDev, int val_1, int val_2, int val_3); - int cfbc_Set_AP_STANDBY_N310(COMM_DEV_TYPE_E fromDev, int value); - int cfbc_Get_AP_STANDBY_N310(COMM_DEV_TYPE_E fromDev, int *value); - virtual int cfbc_Set_Fbc_Uboot_Stage(COMM_DEV_TYPE_E fromDev, int value); - -private: - //now,just one item in list,haha... - void showTime(struct timeval *_time); - long getTime(void); - int rmFromRequestList(); - int addToRequestList(); - void initCrc32Table(); - void sendAckCmd(bool isOk); - unsigned int GetCrc32(unsigned char *InStr, unsigned int len); - int processData(COMM_DEV_TYPE_E fromDev, unsigned char *PData, int dataLen); - int uartReadData(unsigned char *retData, int *retLen); - int Fbc_Set_Value_INT8(COMM_DEV_TYPE_E toDev, int cmd_type, int value); - int Fbc_Get_Value_INT8(COMM_DEV_TYPE_E fromDev, int cmd_type, int *value); - int Fbc_Set_Value_INT32(COMM_DEV_TYPE_E toDev, int cmd_type, int value); - int Fbc_Get_BatchValue(COMM_DEV_TYPE_E toDev, unsigned char *cmd_buf, int count); - int Fbc_Set_BatchValue(COMM_DEV_TYPE_E fromDev, unsigned char *cmd_buf, int count); - int cfbc_Set_Get_BatchValue(COMM_DEV_TYPE_E fromDev, unsigned char *cmd_buf, int count, int isSet); - bool threadLoop(); - - int mUpgradeFlag; - CHdmiCec mHdmiCec; - CSerialPort mSerialPort; - Epoll mEpoll; - mutable CMutex mLock; - REQUEST_REPLY_S mReplyList; - //list - epoll_event m_event; - unsigned char *mpRevDataBuf; - unsigned int mCrc32Table[256]; - bool mbSendKeyCode; - CTvInput mTvInput; - CFbcMsgQueue mFbcMsgQueue; - int mbDownHaveSend; - - int mbFbcKeyEnterDown; - nsecs_t mFbcEnterKeyDownTime; -}; - -extern CFbcCommunication *GetSingletonFBC(); - -#endif diff --git a/tvapi/libtv/tv/CFrontEnd.cpp b/tvapi/libtv/tv/CFrontEnd.cpp deleted file mode 100644 index c45e62b..0000000 --- a/tvapi/libtv/tv/CFrontEnd.cpp +++ b/dev/null @@ -1,667 +0,0 @@ -#define LOG_TAG "CFrontEnd" - -#include <stdio.h> -#include <unistd.h> -#include <string.h> -#include <fcntl.h> -#include <errno.h> -#include <sys/ioctl.h> -#include <stdlib.h> -#include <malloc.h> -#include <sys/types.h> -#include <dlfcn.h> -#include <time.h> -#include "am_misc.h" -#include "am_debug.h" -#include "CFrontEnd.h" -#include "util.h" -#include "tvin/CTvin.h" -extern "C" { -#include "am_av.h" -#include "am_dmx.h" -#include "linux/videodev2.h" -#include "am_fend_ctrl.h" -} - -CFrontEnd::CFrontEnd() -{ - mFrontDevID = FE_DEV_ID; - mpObserver = NULL; - mCurFineFreq = 0; - mCurMode = FE_ANALOG; - mCurFreq = -1; - mCurPara1 = -1; - mCurPara2 = -1; - mbFEOpened = false; -} - -CFrontEnd::~CFrontEnd() -{ - AM_EVT_Unsubscribe(mFrontDevID, AM_FEND_EVT_STATUS_CHANGED, dmd_fend_callback, NULL); - if (mFrontDevID == FE_DEV_ID) - AM_FEND_Close(mFrontDevID); - mFrontDevID = -1; -} - -int CFrontEnd::Open(int mode) -{ - AM_FEND_OpenPara_t para; - int rc = 0; - - if (mbFEOpened) { - LOGD("FrontEnd have opened, return"); - return 0; - } - mbFEOpened = true; - memset(¶, 0, sizeof(AM_FEND_OpenPara_t)); - para.mode = mode; - rc = AM_FEND_Open(mFrontDevID, ¶); - if ((rc == AM_FEND_ERR_BUSY) || (rc == 0)) { - AM_EVT_Subscribe(mFrontDevID, AM_FEND_EVT_STATUS_CHANGED, dmd_fend_callback, this); - LOGD("%s,frontend dev open success!\n", __FUNCTION__); - return 0; - } else { - LOGD("%s,frontend dev open failed! dvb error id is %d\n", __FUNCTION__, rc); - return -1; - } - mCurMode = mode; - mCurFreq = -1; - mCurPara1 = -1; - mCurPara2 = -1; -} - -int CFrontEnd::Close() -{ - int rc = 0; - if (!mbFEOpened) { - LOGD("FrontEnd have close, but not return"); - } - rc = AM_FEND_Close(mFrontDevID); - mbFEOpened = false; - mCurMode = -1; - mCurFreq = -1; - mCurPara1 = -1; - mCurPara2 = -1; - if (rc != 0) { - LOGD("%s,frontend_close fail! dvb error id is %d\n", __FUNCTION__, rc); - return -1; - } else { - LOGD("%s,close frontend is ok\n", __FUNCTION__); - } - return 0; -} - -int CFrontEnd::setMode(int mode) -{ - int rc = 0; - if (mCurMode == mode) return 0; - rc = AM_FEND_SetMode(mFrontDevID, mode); - - if (rc != 0) { - LOGD("%s,front dev set mode failed! dvb error id is %d\n", __FUNCTION__, rc); - return -1; - } - return 0; -} - -int CFrontEnd::setPara(int mode, int freq, int para1, int para2) -{ - int ret = 0; - int buff_size = 32; - char VideoStdBuff[buff_size]; - char audioStdBuff[buff_size]; - if (mCurMode == mode && mCurFreq == freq && mCurPara1 == para1 && mCurPara2 == para2) { - LOGD("fe setpara is same return"); - return 0; - } - mCurMode = mode; - mCurFreq = freq; - mCurPara1 = para1; - mCurPara2 = para2; - - AM_FENDCTRL_DVBFrontendParameters_t dvbfepara; - memset(&dvbfepara, 0, sizeof(AM_FENDCTRL_DVBFrontendParameters_t)); - LOGD("%s,set fe para mode = %d freq=%d p1=%d p2=%d", __FUNCTION__, mode, freq, para1, para2); - dvbfepara.m_type = mode; - switch (mode) { - case FE_OFDM: - dvbfepara.terrestrial.para.frequency = freq; - dvbfepara.terrestrial.para.u.ofdm.bandwidth = (fe_bandwidth_t)para1; - break; - case FE_DTMB: - LOGD("%s,FE_DTMB is support\n", __FUNCTION__); - LOGD("%s,freq = %d, bandwidth = %d\n", __FUNCTION__, freq, para1); - dvbfepara.dtmb.para.frequency = freq; - dvbfepara.dtmb.para.u.ofdm.bandwidth = (fe_bandwidth_t)para1; - break; - case FE_ATSC: - dvbfepara.atsc.para.frequency = freq; - dvbfepara.atsc.para.u.vsb.modulation = (fe_modulation_t)para1; - break; - case FE_QAM: - dvbfepara.cable.para.frequency = freq; - dvbfepara.cable.para.u.qam.symbol_rate = para1; - dvbfepara.cable.para.u.qam.modulation = (fe_modulation_t)para2; - break; - case FE_ANALOG: - LOGD("%s,FE_ANALOG is support\n", __FUNCTION__); - /*para2 is finetune data */ - dvbfepara.analog.para.frequency = freq; - dvbfepara.analog.para.u.analog.std = para1; - dvbfepara.analog.para.u.analog.afc_range = AFC_RANGE; - if (para2 == 0) { - dvbfepara.analog.para.u.analog.flag |= ANALOG_FLAG_ENABLE_AFC; - } else { - dvbfepara.analog.para.u.analog.flag &= ~ANALOG_FLAG_ENABLE_AFC; - dvbfepara.analog.para.u.analog.afc_range = 0; - } - - printAudioStdStr(para1, audioStdBuff, buff_size); - printVideoStdStr(para1, VideoStdBuff, buff_size); - LOGD("%s,freq = %dHz, video_std = %s, audio_std = %s, fineFreqOffset = %dHz\n", __FUNCTION__, - freq, VideoStdBuff, audioStdBuff, para2); - - break; - } - - ret = AM_FENDCTRL_SetPara(mFrontDevID, &dvbfepara); - - if (ret != 0) { - LOGD("%s,fend set para failed! dvb error id is %d\n", __FUNCTION__, ret); - return -1; - } - return 0; -} - -int CFrontEnd::fineTune(int fineFreq) -{ - int ret = 0; - if (mCurFineFreq == fineFreq) return -1; - - mCurFineFreq = fineFreq; - ret = AM_FEND_FineTune(FE_DEV_ID, fineFreq); - - if (ret != 0) { - LOGD("%s, fail! dvb error id is %d", __FUNCTION__, ret); - return -1; - } - return 0; -} - -int CFrontEnd::GetTSSource(AM_DMX_Source_t *src) -{ - AM_FEND_GetTSSource(mFrontDevID, src); - return 0; -} - -void CFrontEnd::dmd_fend_callback(long dev_no __unused, int event_type __unused, void *param, void *user_data) -{ - CFrontEnd *pFront = (CFrontEnd *)user_data; - if (NULL == pFront) { - LOGD("%s,warnning : dmd_fend_callback NULL == pFront\n", __FUNCTION__); - return ; - } - if (pFront->mpObserver == NULL) { - LOGD("%s,warnning : mpObserver NULL == mpObserver\n", __FUNCTION__); - return; - } - struct dvb_frontend_event *evt = (struct dvb_frontend_event *) param; - if (!evt) - return; - - if (evt->status & FE_HAS_LOCK) { - pFront->mCurSigEv.mCurSigStaus = FEEvent::EVENT_FE_HAS_SIG; - pFront->mCurSigEv.mCurFreq = evt->parameters.frequency; - pFront->mpObserver->onEvent(pFront->mCurSigEv); - } else if (evt->status & FE_TIMEDOUT) { - pFront->mCurSigEv.mCurSigStaus = FEEvent::EVENT_FE_NO_SIG; - pFront->mCurSigEv.mCurFreq = evt->parameters.frequency; - pFront->mpObserver->onEvent(pFront->mCurSigEv); - } -} - -int CFrontEnd::stdAndColorToAudioEnum(int data) -{ - atv_audio_std_t std = CC_ATV_AUDIO_STD_DK; - if (((data & V4L2_STD_PAL_DK) == V4L2_STD_PAL_DK) || - ((data & V4L2_STD_SECAM_DK) == V4L2_STD_SECAM_DK)) { - std = CC_ATV_AUDIO_STD_DK; - } else if ((data & V4L2_STD_PAL_I) == V4L2_STD_PAL_I) { - std = CC_ATV_AUDIO_STD_I; - } else if (((data & V4L2_STD_PAL_BG) == V4L2_STD_PAL_BG) || - ((data & V4L2_STD_SECAM_B) == V4L2_STD_SECAM_B) || - ((data & V4L2_STD_SECAM_G) == V4L2_STD_SECAM_G )) { - std = CC_ATV_AUDIO_STD_BG; - } else if (((data & V4L2_STD_PAL_M) == V4L2_STD_PAL_M) || - ((data & V4L2_STD_NTSC_M) == V4L2_STD_NTSC_M)) { - std = CC_ATV_AUDIO_STD_M; - } else if ((data & V4L2_STD_SECAM_L) == V4L2_STD_SECAM_L) { - std = CC_ATV_AUDIO_STD_L; - } - return std ; -} - -int CFrontEnd::stdAndColorToVideoEnum(int std) -{ - atv_video_std_t video_standard = CC_ATV_VIDEO_STD_PAL; - if ((std & V4L2_COLOR_STD_PAL) == V4L2_COLOR_STD_PAL) { - video_standard = CC_ATV_VIDEO_STD_PAL; - } else if ((std & V4L2_COLOR_STD_NTSC) == V4L2_COLOR_STD_NTSC) { - video_standard = CC_ATV_VIDEO_STD_NTSC; - } else if ((std & V4L2_COLOR_STD_SECAM) == V4L2_COLOR_STD_SECAM) { - video_standard = CC_ATV_VIDEO_STD_SECAM; - } - return video_standard; -} - -bool CFrontEnd::stdIsColorAuto(int std) -{ - return ((std & V4L2_COLOR_STD_AUTO) == V4L2_COLOR_STD_AUTO) ? true : false; -} - -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) { - tmpTunerStd |= V4L2_STD_PAL_DK; - } else if (audioStd == CC_ATV_AUDIO_STD_I) { - tmpTunerStd |= V4L2_STD_PAL_I; - } else if (audioStd == CC_ATV_AUDIO_STD_BG) { - tmpTunerStd |= V4L2_STD_PAL_BG; - } 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) { - tmpTunerStd |= V4L2_COLOR_STD_NTSC; - if (audioStd == CC_ATV_AUDIO_STD_DK) { - tmpTunerStd |= V4L2_STD_PAL_DK; - } else if (audioStd == CC_ATV_AUDIO_STD_I) { - tmpTunerStd |= V4L2_STD_PAL_I; - } else if (audioStd == CC_ATV_AUDIO_STD_BG) { - tmpTunerStd |= V4L2_STD_PAL_BG; - } else if (audioStd == CC_ATV_AUDIO_STD_M) { - tmpTunerStd |= V4L2_STD_NTSC_M; - } - } else if (videoStd == CC_ATV_VIDEO_STD_SECAM) { - tmpTunerStd |= V4L2_COLOR_STD_SECAM; - if (audioStd == CC_ATV_AUDIO_STD_DK) { - tmpTunerStd |= V4L2_STD_SECAM_DK; - } else if (audioStd == CC_ATV_AUDIO_STD_I) { - tmpTunerStd |= V4L2_STD_PAL_I; - } else if (audioStd == CC_ATV_AUDIO_STD_BG) { - tmpTunerStd |= (V4L2_STD_SECAM_B | V4L2_STD_SECAM_G); - } else if (audioStd == CC_ATV_AUDIO_STD_M) { - tmpTunerStd |= V4L2_STD_NTSC_M; - } else if (audioStd == CC_ATV_AUDIO_STD_L) { - tmpTunerStd |= V4L2_STD_SECAM_L; - } - - } - return tmpTunerStd; -} - -int CFrontEnd::getPara(int *mode, int *freq, int *para1, int *para2) -{ - - struct dvb_frontend_parameters para; - memset(¶, 0, sizeof(struct dvb_frontend_parameters)); - /*if((ret1=AM_FEND_GetPara(mFrontDevID, ¶))<0) { - LOGD("%s,getPara faiture\n", __FUNCTION__ ); - return -1; - - //fpara->mode = fend_mode ; - - }*/ - *mode = mCurMode; - *freq = mCurFreq; - *para1 = mCurPara1; - *para2 = mCurPara2; - return 0; -} - -int CFrontEnd::getSNR() -{ - int snr = 0; - AM_FEND_GetSNR(mFrontDevID, &snr); - return snr; -} - -int CFrontEnd::getBER() -{ - int ber = 0; - AM_FEND_GetBER(mFrontDevID, &ber); - return ber; -} - -int CFrontEnd::getStrength() -{ - int Strength = 0; - AM_FEND_GetStrength(mFrontDevID, &Strength); - return Strength; -} - -int CFrontEnd::formatATVFreq(int tmp_freq) -{ - const int ATV_1MHZ = 1000000; - const int ATV_50KHZ = 50 * 1000; - const int ATV_25KHZ = 25 * 1000; - int mastar = (tmp_freq / ATV_50KHZ) * ATV_50KHZ; - int follow = tmp_freq % ATV_50KHZ; - if (follow >= ATV_25KHZ) { - follow = ATV_50KHZ; - } else { - follow = 0; - } - return mastar + follow; -} - -int CFrontEnd::printVideoStdStr(int compStd, char strBuffer[], int buff_size) -{ - memset(strBuffer, 0, buff_size); - int videoStd = stdAndColorToVideoEnum(compStd); - switch (videoStd) { - case CC_ATV_VIDEO_STD_AUTO: - strcpy(strBuffer, "AUTO"); - break; - case CC_ATV_VIDEO_STD_PAL: - strcpy(strBuffer, "PAL"); - break; - case CC_ATV_VIDEO_STD_NTSC: - strcpy(strBuffer, "NTSC"); - break; - case CC_ATV_VIDEO_STD_SECAM: - strcpy(strBuffer, "SECAM"); - break; - default: - strcpy(strBuffer, "UnkownVideo"); - break; - } - - return 0; -} - -int CFrontEnd::printAudioStdStr(int compStd, char strBuffer[], int buff_size) -{ - memset(strBuffer, 0, buff_size); - int audioStd = stdAndColorToAudioEnum(compStd); - switch (audioStd) { - case CC_ATV_AUDIO_STD_DK: - strcpy(strBuffer, "DK"); - break; - case CC_ATV_AUDIO_STD_I: - strcpy(strBuffer, "I"); - break; - case CC_ATV_AUDIO_STD_BG: - strcpy(strBuffer, "BG"); - break; - case CC_ATV_AUDIO_STD_M: - strcpy(strBuffer, "M"); - break; - case CC_ATV_AUDIO_STD_L: - strcpy(strBuffer, "L"); - break; - case CC_ATV_AUDIO_STD_AUTO: - strcpy(strBuffer, "AUTO"); - break; - default: - strcpy(strBuffer, "UnkownAudio"); - break; - } - - return 0; -} - -int CFrontEnd::autoLoadFE() -{ - FILE *fp = NULL; - int ret = -1; - - fp = fopen ( "/sys/class/amlfe/setting", "w" ); - - if ( fp == NULL ) { - LOGW ( "Open /sys/class/amlfe/setting error(%s)!\n", strerror ( errno ) ); - return -1; - } - - ret = fprintf ( fp, "%s", "autoload" ); - - if ( ret < 0 ) { - LOGW ( "autoload FE error(%s)!\n", strerror ( errno ) ); - } - LOGD("autoLoadFE"); - fclose ( fp ); - fp = NULL; - - return ret; -} - -int CFrontEnd::setCvbsAmpOut(int tmp) -{ - int rc = AM_SUCCESS; - rc = AM_FEND_SetCvbsAmpOut(mFrontDevID, tmp); - if (rc == AM_SUCCESS) { - LOGD("%s, sucessful!", __FUNCTION__); - rc = 0; - } else { - LOGD("%s, fail!", __FUNCTION__); - rc = -1; - } - return rc; -} - -int CFrontEnd::setThreadDelay(int delay) -{ - int rc = AM_SUCCESS; - - rc = AM_FEND_SetThreadDelay(mFrontDevID, delay); - if (rc == AM_SUCCESS) { - LOGD("frontend_setThreadDelay sucessful!\n"); - return 0; - } else { - LOGD("frontend_setThreadDelay fail! %d\n\n", rc); - return -1; - } -} - -int CFrontEnd::lock(int frequency, int symbol_rate, int modulation, int bandwidth __unused) -{ - int rt = -1; - struct dvb_frontend_parameters fparam; - struct dvb_frontend_info finfo; - - memset(&fparam, 0, sizeof(struct dvb_frontend_parameters)); - memset(&finfo, 0, sizeof(struct dvb_frontend_info)); - - AM_FEND_GetInfo(mFrontDevID, &finfo); - - if (frequency == 0) - return -1; - fparam.frequency = frequency; - - switch (finfo.type) { - - case FE_QAM: - default: - - if (symbol_rate == 0) - return -1; - fparam.u.qam.symbol_rate = symbol_rate; - - - if (modulation == 0) - return -1; - fparam.u.qam.modulation = (fe_modulation_t)modulation; - - LOGD("mFrontDevID = %d;fre=%d;sym=%d;qam=%d ", - mFrontDevID, fparam.frequency, fparam.u.qam.symbol_rate, fparam.u.qam.modulation); - break; - case FE_OFDM: - case FE_ATSC: - LOGD("mFrontDevID = %d;fre=%d;bw=%d\n ", - mFrontDevID, fparam.frequency, fparam.u.ofdm.bandwidth); - break; - case FE_QPSK: - LOGD("QPSK are not supported.\n "); - break; - case FE_ANALOG: - LOGD("ANALOG is supported.\n "); - fparam.u.analog.std = V4L2_STD_PAL_I; - break; - } - - fe_status_t status; - - rt = AM_FEND_Lock(FE_DEV_ID, &fparam, &status); - - if ((!rt) && (status & FE_HAS_LOCK)) { - LOGD("frontend_lock sucessful!\n"); - return true; - } else { - LOGD("frontend_lock fail %d!\n", rt); - return false; - } -} - -int CFrontEnd::getInfo() -{ - struct dvb_frontend_info finfo; - - AM_FEND_GetInfo(mFrontDevID, &finfo); - - //return fend_info; noitfy FrontEnd message - return 0; -} - -int CFrontEnd::setTunerAfc(int afc) -{ - AM_FEND_SetAfc(FE_DEV_ID, afc); - return 0; -} - -int CFrontEnd::getStatus() -{ - fe_status_t status; - AM_FEND_GetStatus(mFrontDevID, &status); - - return status; -} -int CFrontEnd::checkStatusOnce() -{ - fe_status_t status; - AM_FEND_GetStatus(mFrontDevID, &status); - LOGD("%s,get status = %x", __FUNCTION__, status); - if (status & FE_HAS_LOCK) { - mCurSigEv.mCurSigStaus = FEEvent::EVENT_FE_HAS_SIG; - mCurSigEv.mCurFreq = 0; - mpObserver->onEvent(mCurSigEv); - } else if (status & FE_TIMEDOUT) { - mCurSigEv.mCurSigStaus = FEEvent::EVENT_FE_NO_SIG; - mCurSigEv.mCurFreq = 0; - mpObserver->onEvent(mCurSigEv); - } - return 0; -} - -int CFrontEnd::stdEnumToCvbsFmt (int videoStd, int audioStd) -{ - tvin_sig_fmt_e cvbs_fmt = TVIN_SIG_FMT_NULL; - - if ( videoStd == CC_ATV_VIDEO_STD_PAL ) { - cvbs_fmt = TVIN_SIG_FMT_CVBS_PAL_I; - if ( audioStd == CC_ATV_AUDIO_STD_DK ) { - cvbs_fmt = TVIN_SIG_FMT_CVBS_PAL_I; - } else if ( audioStd == CC_ATV_AUDIO_STD_I ) { - cvbs_fmt = TVIN_SIG_FMT_CVBS_PAL_I; - } else if ( audioStd == CC_ATV_AUDIO_STD_BG ) { - cvbs_fmt = TVIN_SIG_FMT_CVBS_PAL_I; - } else if ( audioStd == CC_ATV_AUDIO_STD_M ) { - cvbs_fmt = TVIN_SIG_FMT_CVBS_PAL_M; - } - } else if ( videoStd == CC_ATV_VIDEO_STD_NTSC ) { - cvbs_fmt = TVIN_SIG_FMT_CVBS_NTSC_M; - if ( audioStd == CC_ATV_AUDIO_STD_DK ) { - cvbs_fmt = TVIN_SIG_FMT_CVBS_NTSC_M; - } else if ( audioStd == CC_ATV_AUDIO_STD_I ) { - cvbs_fmt = TVIN_SIG_FMT_CVBS_NTSC_M; - } else if ( audioStd == CC_ATV_AUDIO_STD_BG ) { - cvbs_fmt = TVIN_SIG_FMT_CVBS_NTSC_M; - } else if ( audioStd == CC_ATV_AUDIO_STD_M ) { - cvbs_fmt = TVIN_SIG_FMT_CVBS_NTSC_M; - } - } else if ( videoStd == CC_ATV_VIDEO_STD_SECAM ) { - if ( audioStd == CC_ATV_AUDIO_STD_DK ) { - cvbs_fmt = TVIN_SIG_FMT_CVBS_SECAM; - } else if ( audioStd == CC_ATV_AUDIO_STD_I ) { - cvbs_fmt = TVIN_SIG_FMT_CVBS_SECAM; - } else if ( audioStd == CC_ATV_AUDIO_STD_BG ) { - cvbs_fmt = TVIN_SIG_FMT_CVBS_SECAM; - } else if ( audioStd == CC_ATV_AUDIO_STD_M ) { - cvbs_fmt = TVIN_SIG_FMT_CVBS_SECAM; - } else if ( audioStd == CC_ATV_AUDIO_STD_L ) { - cvbs_fmt = TVIN_SIG_FMT_CVBS_SECAM; - } - } - return cvbs_fmt; -} - -int CFrontEnd::ClearAnalogFrontEnd() -{ - return this->setPara ( FE_ANALOG, 44250000, V4L2_COLOR_STD_PAL | V4L2_STD_PAL_DK, 0 ); -} - -/*to control afc function*/ -int CFrontEnd::SetAnalogFrontEndTimerSwitch(int onOff) -{ - FILE *fp = NULL; - int ret = -1; - - fp = fopen ( "/sys/module/aml_fe/parameters/aml_timer_en", "w" ); - - if ( fp == NULL ) { - LOGW ( "Open /sys/module/aml_fe/parameters/aml_timer_en error(%s)!\n", strerror ( errno ) ); - return -1; - } - if (onOff) - ret = fprintf(fp, "%s", "1"); - else - ret = fprintf(fp, "%s", "0"); - if ( ret < 0 ) { - LOGW ( "set aml_timer_en error(%s)!\n", strerror ( errno ) ); - } - LOGD("SetAnalogFrontEndTimerSwitch %d", onOff); - fclose ( fp ); - fp = NULL; - - return ret; -} - -int CFrontEnd::SetAnalogFrontEndSearhSlowMode(int onOff) -{ - FILE *fp = NULL; - int ret = -1; - - fp = fopen ( "/sys/module/aml_fe/parameters/slow_mode", "w" ); - - if ( fp == NULL ) { - LOGW ( "Open /sys/module/aml_fe/parameters/slow_mode error(%s)!\n", strerror ( errno ) ); - return -1; - } - if (onOff) - ret = fprintf(fp, "%s", "1"); - else - ret = fprintf(fp, "%s", "0"); - if ( ret < 0 ) { - LOGW ( "set aml_timer_en error(%s)!\n", strerror ( errno ) ); - } - LOGD("SetAnalogFrontEndSearhSlowMode %d", onOff); - fclose ( fp ); - fp = NULL; - - return ret; -} diff --git a/tvapi/libtv/tv/CFrontEnd.h b/tvapi/libtv/tv/CFrontEnd.h deleted file mode 100644 index 81b8caf..0000000 --- a/tvapi/libtv/tv/CFrontEnd.h +++ b/dev/null @@ -1,166 +0,0 @@ -#ifndef ANDROID_FRONTEND_H -#define ANDROID_FRONTEND_H -#include <stdio.h> -#include <stdlib.h> -#include <unistd.h> -#include <string.h> -#include "CTvLog.h" -#include "CTvEv.h" -extern "C" { -#include "am_fend.h" -#include "am_vout.h" -#include "linux/dvb/frontend.h" -} -//for app -typedef enum atv_audo_std_s { - CC_ATV_AUDIO_STD_START = 0, - CC_ATV_AUDIO_STD_DK = 0, - CC_ATV_AUDIO_STD_I, - CC_ATV_AUDIO_STD_BG, - CC_ATV_AUDIO_STD_M, - CC_ATV_AUDIO_STD_L, - CC_ATV_AUDIO_STD_AUTO, - CC_ATV_AUDIO_STD_END = CC_ATV_AUDIO_STD_AUTO, - CC_ATV_AUDIO_STD_MUTE, -} atv_audio_std_t; -//for app -typedef enum atv_video_std_s { - CC_ATV_VIDEO_STD_START = 0, - CC_ATV_VIDEO_STD_AUTO = 0, - CC_ATV_VIDEO_STD_PAL, - CC_ATV_VIDEO_STD_NTSC, - CC_ATV_VIDEO_STD_SECAM, - CC_ATV_VIDEO_STD_END = CC_ATV_VIDEO_STD_SECAM, -} atv_video_std_t; - - -//from kernel -/*COLOR MODULATION TYPE*/ -static const v4l2_std_id V4L2_COLOR_STD_PAL = ((v4l2_std_id)0x04000000); -static const v4l2_std_id V4L2_COLOR_STD_NTSC = ((v4l2_std_id)0x08000000); -static const v4l2_std_id V4L2_COLOR_STD_SECAM = ((v4l2_std_id)0x10000000); -//virtual -static const v4l2_std_id V4L2_COLOR_STD_AUTO = ((v4l2_std_id)0x02000000); - -typedef struct frontend_para_set_s { - fe_type_t mode; - int freq; - atv_video_std_t videoStd; - atv_audio_std_t audioStd; - int para1; - int para2; -} frontend_para_set_t; - -typedef struct atv_channel_info_s { - int finefreq; - atv_video_std_t videoStd; - atv_audio_std_t audioStd; - int isAutoStd; -} atv_channel_info_t; - -typedef struct dtv_channel_info_s { - int strength; - int quality; - int ber; -} dtv_channel_info_t; - -typedef struct channel_info_s { - int freq; - union { - atv_channel_info_t atvChanInfo; - dtv_channel_info_t dtvChanInfo; - } uInfo; -} channel_info_t; - -class CFrontEnd { -public: - - static const int FE_DEV_ID = 0; - static const int AFC_RANGE = 1000000; - - CFrontEnd(); - ~CFrontEnd(); - - int Open(int mode); - int Close(); - int setMode(int mode); - int fineTune(int freq); - static int formatATVFreq(int freq); - int GetTSSource(AM_DMX_Source_t *src); - int setPara(int mode, int freq, int para1, int para2); - int ClearAnalogFrontEnd(); - int autoLoadFE(); - int SetAnalogFrontEndTimerSwitch(int onOff); - int SetAnalogFrontEndSearhSlowMode(int onOff); - - static int stdAndColorToAudioEnum(int std); - static int stdAndColorToVideoEnum(int std); - static bool stdIsColorAuto(int std); - static int addColorAutoFlag(int std); - static int printVideoStdStr(int videoStd, char strBuffer[], int buff_size); - static int printAudioStdStr(int audioStd, char strBuffer[], int buff_size); - static v4l2_std_id enumToStdAndColor(int videoStd, int audioStd); - static int stdEnumToCvbsFmt (int videoStd, int audioStd); - class FEEvent: public CTvEv { - public: - //static const int EVENT_FE_HAS_SIG = 0X01; /* found something above the noise level */ - //static const int EVENT_FE_HAS_CARRIER = 0x02; /* found a DVB signal */ - //static const int EVENT_FE_HAS_VITERBI = 0X04; /* FEC is stable */ - //static const int EVENT_FE_HAS_SYNC = 0X08; /* found sync bytes */ - // static const int EVENT_FE_HAS_LOCK = 0X10; /* everything's working... */ - //static const int EVENT_FE_HAS_TIMEOUT = 0X20; /* no lock within the last ~2 seconds */ - //static const int EVENT_FE_REINIT = 0X40; /* frontend was reinitialized, */ - static const int EVENT_FE_HAS_SIG = 0x01; - static const int EVENT_FE_NO_SIG = 0x02; - static const int EVENT_FE_INIT = 0x03; - - FEEvent(): CTvEv(CTvEv::TV_EVENT_SIGLE_DETECT) - { - } - ~FEEvent() - { - } - int mCurSigStaus; - int mCurFreq; - }; - - class IObserver { - public: - IObserver() {}; - virtual ~IObserver() {}; - virtual void onEvent(const FEEvent &ev) = 0; - }; - - int setObserver(IObserver *ob) - { - mpObserver = ob; - return 0; - } - - int getSNR(); - int getBER(); - int getInfo(); - int getStatus(); - int checkStatusOnce(); - int getStrength(); - int setCvbsAmpOut(int amp); - int setThreadDelay(int delay) ; - int getPara(int *mode, int *freq, int *para1, int *para2); - int lock(int frequency, int symbol_rate, int modulation, int bandwidth); - int setTunerAfc(int afc); -private: - int mFrontDevID; - int mDemuxDevID; - int mTvPlayDevID; - int mCurFineFreq; - IObserver *mpObserver; - FEEvent mCurSigEv; - int mCurMode; - int mCurFreq; - int mCurPara1; - int mCurPara2; - bool mbFEOpened; - static void dmd_fend_callback(long dev_no, int event_type, void *param, void *user_data); -}; -#endif // ANDROID_FRONTEND_H - diff --git a/tvapi/libtv/tv/CTv.cpp b/tvapi/libtv/tv/CTv.cpp deleted file mode 100644 index e435be7..0000000 --- a/tvapi/libtv/tv/CTv.cpp +++ b/dev/null @@ -1,7254 +0,0 @@ -// -// -// amlogic 2013 -// -// @ Project : tv -// @ File Name : CTv.cpp -// @ Date : 2013-11 -// @ Author : -#define LOG_TAG "CTv" - -#include <stdio.h> -#include <unistd.h> -#include <fcntl.h> -#include <dirent.h> -#include <am_epg.h> -#include <am_mem.h> -#include "CTvDatabase.h" -#include <stdlib.h> -#include <string.h> -#include <malloc.h> -#include <pthread.h> -#include <sys/types.h> -#include <errno.h> -#include <dlfcn.h> -#include <cutils/properties.h> -#include <cutils/log.h> -#include <cutils/android_reboot.h> -#include <utils/threads.h> -#include <time.h> -#include <sys/prctl.h> -#include <getopt.h> -#include <errno.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <fcntl.h> -#include <stdlib.h> -#ifdef ANDROID -#include <termios.h> -#endif -#include <string.h> -#include <signal.h> - -#include "../version/version.h" -#include "../tvsetting/CTvSetting.h" -#include "../tvutils/tvutils.h" -#include "../tvconfig/tvconfig.h" -#include "../tvutils/CFile.h" -#include <hardware_legacy/power.h> -#include "../tvutils/serial_operate.h" - -extern "C" { -#include "am_ver.h" -#include "am_misc.h" -#include "am_debug.h" -#include "am_fend.h" -} - -#include <math.h> -#include <sys/ioctl.h> - -#include "CTv.h" - -using namespace android; - -// Called each time a message is logged. -static void sqliteLogCallback(void *data, int iErrCode, const char *zMsg) -{ - data = data; - LOGD( "showbo sqlite (%d) %s\n", iErrCode, zMsg); -} - -CTv::CTv() : - mTvMsgQueue(this), - mTvScannerDetectObserver(this) -{ - mAudioMuteStatusForTv = CC_AUDIO_UNMUTE; - mAudioMuteStatusForSystem = CC_AUDIO_UNMUTE; - //mpClient = pClient; - //copy file to param - if (Tv_Utils_IsFileExist ( TV_CONFIG_FILE_SYSTEM_PATH )) { - if (!Tv_Utils_IsFileExist ( TV_CONFIG_FILE_PARAM_PATH )) { - CFile file ( TV_CONFIG_FILE_SYSTEM_PATH ); - - if ( file.copyTo ( TV_CONFIG_FILE_PARAM_PATH ) != 0 ) { - LOGE ( "%s, copy file = %s , error", __FUNCTION__, TV_CONFIG_FILE_PARAM_PATH ); - } - } - } - - if (Tv_Utils_IsFileExist ( TV_CHANNEL_LIST_SYSTEM_PATH )) { - if (!Tv_Utils_IsFileExist ( TV_CHANNEL_LIST_PARAM_PATH )) { - CFile file ( TV_CHANNEL_LIST_SYSTEM_PATH ); - - if ( file.copyTo ( TV_CHANNEL_LIST_PARAM_PATH ) != 0 ) { - LOGE ( "%s, copy file = %s , error", __FUNCTION__, TV_CHANNEL_LIST_PARAM_PATH ); - } - } - } - - //ssm - if (Tv_Utils_IsFileExist ( TV_SSM_DATA_SYSTEM_PATH )) { - if (!Tv_Utils_IsFileExist ( TV_SSM_DATA_PARAM_PATH )) { - CFile file ( TV_SSM_DATA_SYSTEM_PATH ); - - if ( file.copyTo ( TV_SSM_DATA_PARAM_PATH ) != 0 ) { - LOGE ( "%s, copy file = %s , error", __FUNCTION__, TV_SSM_DATA_PARAM_PATH ); - } - } - } - - AM_EVT_Init(); - //mTvEpg.setObserver ( &mTvMsgQueue ); - mpObserver = NULL; - fbcIns = NULL; - dtv_auto_3d_flag = 0; - mAutoSetDisplayFreq = false; - - tv_config_load ( TV_CONFIG_FILE_PATH ); - sqlite3_config (SQLITE_CONFIG_SERIALIZED); - //sqlite3_config(SQLITE_CONFIG_LOG, &sqliteLogCallback, (void*)1); - sqlite3_soft_heap_limit(8 * 1024 * 1024); - // Initialize SQLite. - sqlite3_initialize(); - CTvDatabase::GetTvDb()->InitTvDb ( TV_DB_PATH ); - - if ( CTvDimension::isDimensionTblExist() == false ) { - CTvDimension::builtinAtscDimensions(); - } - - CTvSettingLoad(); - - mDtvScanRunningStatus = DTV_SCAN_RUNNING_NORMAL; - if (hdmiOutWithFbc()) { - mHdmiOutFbc = true; - } else { - mHdmiOutFbc = false; - } - - m_sig_stable_nums = 0; - mSetHdmiEdid = false; - m_cur_playing_prog_id = -1; - - m_hdmi_audio_data = 0; - mSigDetectThread.setObserver ( this ); - mSourceConnectDetectThread.setObserver ( this ); - mHDMIRxCEC.setObserver(this); - mFrontDev.setObserver ( &mTvMsgQueue ); - mpUpgradeFBC = NULL; - if (mHdmiOutFbc) { - fbcIns = GetSingletonFBC(); - - mpUpgradeFBC = new CUpgradeFBC(); - mpUpgradeFBC->setObserver(this); - } - mSerialA.setObserver(this); - mSerialB.setObserver(this); - mSerialC.setObserver(this); - mSubtitle.setObserver(this); - mHeadSet.setObserver(this); - mTvScanner.setGlobalScanerObject(&mTvScanner); - mAv.setObserver(&mTvMsgQueue); - mMainVolLutTableExtraName[0] = '\0'; - //----------------------------------------------------------- - mCurAudioMasterVolume = CC_DEF_SOUND_VOL; - mCurAudioBalance = CC_DEF_SOUND_BALANCE_VAL; - mCurAudioSupperBassVolume = CC_DEF_SUPPERBASS_VOL; - mCurAudioSupperBassSwitch = CC_SWITCH_OFF; - mCurAudioSRSSurround = CC_SWITCH_OFF; - mCurAudioSrsDialogClarity = CC_SWITCH_OFF; - mCurAudioSrsTruBass = CC_SWITCH_OFF; - mCurAudioSPDIFSwitch = CC_SWITCH_ON; - mCurAudioSPDIFMode = CC_SPDIF_MODE_PCM; - mCurAudioBassVolume = CC_DEF_BASS_TREBLE_VOL; - mCurAudioTrebleVolume = CC_DEF_BASS_TREBLE_VOL; - mCurAudioSoundMode = CC_SOUND_MODE_END; - mCurAudioWallEffect = CC_SWITCH_OFF; - mCurAudioEQMode = CC_EQ_MODE_START; - mCustomAudioMasterVolume = CC_DEF_SOUND_VOL; - mCustomAudioBalance = CC_DEF_SOUND_BALANCE_VAL; - mCustomAudioSupperBassVolume = CC_DEF_SUPPERBASS_VOL; - mCustomAudioSupperBassSwitch = CC_SWITCH_OFF; - mCustomAudioSRSSurround = CC_SWITCH_OFF; - mCustomAudioSrsDialogClarity = CC_SWITCH_OFF; - mCustomAudioSrsTruBass = CC_SWITCH_OFF; - mCustomAudioBassVolume = CC_DEF_BASS_TREBLE_VOL; - mCustomAudioTrebleVolume = CC_DEF_BASS_TREBLE_VOL; - mCustomAudioSoundMode = CC_SOUND_MODE_END; - mCustomAudioWallEffect = CC_SWITCH_OFF; - mCustomAudioEQMode = CC_EQ_MODE_START; - mCustomAudioSoundEnhancementSwitch = CC_SWITCH_OFF; - mVolumeCompensationVal = 0; - - mMainVolumeBalanceVal = 0; - for (int i = 0; i < CC_BAND_ITEM_CNT; i++) { - mCustomEQGainBuf[i] = 0; - mCurEQGainBuf[i] = 0; - mCurEQGainChBuf[i] = 0; - } - static const int WALL_EFFECT_VALUE[CC_BAND_ITEM_CNT] = { 0, 0, 1, 2, 2, 0 }; - for (int i = 0; i < CC_BAND_ITEM_CNT; i++) { - mWallEffectValueBuf[i] = WALL_EFFECT_VALUE[i]; - } - mTvAction &= TV_ACTION_NULL; - mTvStatus = TV_INIT_ED; - print_version_info(); -}; - -CTv::~CTv() -{ - mpObserver = NULL; - CTvSettingunLoad(); - CTvDatabase::deleteTvDb(); - tv_config_unload(); - mAv.Close(); - mTvStatus = TV_INIT_ED; - mFrontDev.Close(); - - if (mpUpgradeFBC != NULL) { - delete mpUpgradeFBC; - mpUpgradeFBC = NULL; - } -} - -void CTv::onEvent ( const CTvScanner::ScannerEvent &ev ) -{ - LOGD ( "%s, CTv::onEvent lockStatus = %d type = %d\n", __FUNCTION__, ev.mLockedStatus, ev.mType ); - - if ( mDtvScanRunningStatus == DTV_SCAN_RUNNING_ANALYZE_CHANNEL ) { - if ( ev.mType == CTvScanner::ScannerEvent::EVENT_SCAN_END ) { - CMessage msg; - msg.mType = CTvMsgQueue::TV_MSG_STOP_ANALYZE_TS; - msg.mpData = this; - mTvMsgQueue.sendMsg ( msg ); - } else if ( ev.mType == CTvScanner::ScannerEvent::EVENT_STORE_END ) { - CTvEpg::EpgEvent epgev; - epgev.type = CTvEpg::EpgEvent::EVENT_CHANNEL_UPDATE_END; - mDtvScanRunningStatus = DTV_SCAN_RUNNING_NORMAL; - sendTvEvent ( epgev ); - } - } else { - sendTvEvent ( ev ); - } -} - -void CTv::onEvent ( const CFrontEnd::FEEvent &ev ) -{ - const char *config_value = NULL; - LOGD ( "%s, FE event type = %d tvaction=%x", __FUNCTION__, ev.mCurSigStaus, mTvAction); - if (mTvAction & TV_ACTION_SCANNING) return; - - //前端事件响应处理 - if ( ev.mCurSigStaus == CFrontEnd::FEEvent::EVENT_FE_HAS_SIG ) { //作为信号稳定 - if (/*m_source_input == SOURCE_TV || */m_source_input == SOURCE_DTV && (mTvAction & TV_ACTION_PLAYING)) { //atv and other tvin source not to use it, and if not playing, not use have sig - if ( m_win_mode == PREVIEW_WONDOW ) { - //mAv.setVideoAxis(m_win_pos.x1, m_win_pos.y1, m_win_pos.x2, m_win_pos.y2); - mAv.setVideoScreenMode ( CAv::VIDEO_WIDEOPTION_FULL_STRETCH ); - } - - if ( mAutoSetDisplayFreq) { - CTvin::getInstance()->VDIN_SetDisplayVFreq (50, mAv.getVideoDisplayResolution() , mHdmiOutFbc); - } - TvEvent::SignalInfoEvent ev; - ev.mStatus = TVIN_SIG_STATUS_STABLE; - ev.mTrans_fmt = TVIN_TFMT_2D; - ev.mFmt = TVIN_SIG_FMT_NULL; - ev.mReserved = 0; - sendTvEvent ( ev ); - //if (mAv.WaittingVideoPlaying() == 0) { - SetDisplayMode ( CVpp::getInstance()->GetDisplayMode ( CTvin::Tvin_SourceInputToSourceInputType(m_source_input) ), CTvin::Tvin_SourceInputToSourceInputType(m_source_input), mAv.getVideoResolutionToFmt()); - usleep(50 * 1000); - mAv.EnableVideoNow(); - SetAudioMuteForTv ( CC_AUDIO_UNMUTE ); - //} - Tv_SetAudioInSource(SOURCE_DTV); - } - } else if ( ev.mCurSigStaus == CFrontEnd::FEEvent::EVENT_FE_NO_SIG ) { //作为信号消失 - if (/*m_source_input == SOURCE_TV || */m_source_input == SOURCE_DTV && (mTvAction & TV_ACTION_PLAYING)) { //just playing - config_value = config_get_str ( CFG_SECTION_TV, CFG_BLUE_SCREEN_COLOR, "null" ); - if ( strcmp ( config_value, "black" ) == 0 ) { - mAv.DisableVideoWithBlackColor(); - } else { - mAv.DisableVideoWithBlueColor(); - } - SetAudioMuteForTv ( CC_AUDIO_MUTE ); - - TvEvent::SignalInfoEvent ev; - ev.mStatus = TVIN_SIG_STATUS_NOSIG; - ev.mTrans_fmt = TVIN_TFMT_2D; - ev.mFmt = TVIN_SIG_FMT_NULL; - ev.mReserved = 0; - sendTvEvent ( ev ); - } - } -} - -void CTv::onEvent ( const CTvEpg::EpgEvent &ev ) -{ - switch ( ev.type ) { - case CTvEpg::EpgEvent::EVENT_TDT_END: - LOGD ( "%s, CTv::onEvent epg time = %ld", __FUNCTION__, ev.time ); - mTvTime.setTime ( ev.time ); - break; - - case CTvEpg::EpgEvent::EVENT_CHANNEL_UPDATE: { - LOGD ( "%s, CTv:: onEvent channel update", __FUNCTION__ ); - CMessage msg; - msg.mType = CTvMsgQueue::TV_MSG_START_ANALYZE_TS; - msg.mpData = this; - mCurAnalyzeTsChannelID = ev.channelID; - mTvMsgQueue.sendMsg ( msg ); - break; - } - - default: - break; - } - - sendTvEvent ( ev ); -} - -void CTv::onEvent(const CAv::AVEvent &ev) -{ - const char *config_value = NULL; - LOGD("AVEvent = %d", ev.type); - switch ( ev.type ) { - case CAv::AVEvent::EVENT_AV_STOP: { - config_value = config_get_str ( CFG_SECTION_TV, CFG_BLUE_SCREEN_COLOR, "null" ); - if ( strcmp ( config_value, "black" ) == 0 ) { - mAv.DisableVideoWithBlackColor(); - } else { - mAv.DisableVideoWithBlueColor(); - } - SetAudioMuteForTv ( CC_AUDIO_MUTE ); - - TvEvent::SignalInfoEvent ev; - ev.mStatus = TVIN_SIG_STATUS_NOSIG; - ev.mTrans_fmt = TVIN_TFMT_2D; - ev.mFmt = TVIN_SIG_FMT_NULL; - ev.mReserved = 0; - sendTvEvent ( ev ); - break; - } - - case CAv::AVEvent::EVENT_AV_RESUEM: { - //if (mAv.WaittingVideoPlaying() == 0) { - SetDisplayMode ( CVpp::getInstance()->GetDisplayMode ( CTvin::Tvin_SourceInputToSourceInputType(m_source_input) ), - CTvin::Tvin_SourceInputToSourceInputType(m_source_input), - mAv.getVideoResolutionToFmt()); - usleep(50 * 1000); - mAv.EnableVideoNow(); - SetAudioMuteForTv ( CC_AUDIO_UNMUTE ); - //} - TvEvent::AVPlaybackEvent AvPlayBackEvt; - AvPlayBackEvt.mMsgType = TvEvent::AVPlaybackEvent::EVENT_AV_PLAYBACK_RESUME; - AvPlayBackEvt.mProgramId = ( int ) ev.param; - sendTvEvent(AvPlayBackEvt ); - break; - } - - case CAv::AVEvent::EVENT_AV_SCAMBLED: { - config_value = config_get_str ( CFG_SECTION_TV, CFG_BLUE_SCREEN_COLOR, "null" ); - if ( strcmp ( config_value, "black" ) == 0 ) { - mAv.DisableVideoWithBlackColor(); - } else { - mAv.DisableVideoWithBlueColor(); - } - TvEvent::AVPlaybackEvent AvPlayBackEvt; - AvPlayBackEvt.mMsgType = TvEvent::AVPlaybackEvent::EVENT_AV_SCAMBLED; - AvPlayBackEvt.mProgramId = ( int ) ev.param; - sendTvEvent(AvPlayBackEvt ); - break; - } - - case CAv::AVEvent::EVENT_AV_UNSUPPORT: { - LOGD("To AVS or AVS+ format");//just avs format, not unsupport, and avs avs+ - break; - } - - default: - break; - } -} - -CTv::CTvMsgQueue::CTvMsgQueue(CTv *tv) -{ - mpTv = tv; -} - -CTv::CTvMsgQueue::~CTvMsgQueue() -{ -} - -void CTv::CTvMsgQueue::handleMessage ( CMessage &msg ) -{ - LOGD ("%s, CTv::CTvMsgQueue::handleMessage type = %d", __FUNCTION__, msg.mType); - - switch ( msg.mType ) { - case TV_MSG_COMMON: - break; - - case TV_MSG_STOP_ANALYZE_TS: - //mpTv->Tv_Stop_Analyze_Ts(); - break; - - case TV_MSG_START_ANALYZE_TS: - //mpTv->Tv_Start_Analyze_Ts ( pTv->mCurAnalyzeTsChannelID ); - break; - - case TV_MSG_CHECK_FE_DELAY: { - mpTv->mFrontDev.checkStatusOnce(); - break; - } - - case TV_MSG_AV_EVENT: { - mpTv->onEvent(*((CAv::AVEvent *)(msg.mpPara))); - break; - } - - case TV_MSG_FE_EVENT: { - mpTv->onEvent(*((CFrontEnd::FEEvent *)(msg.mpPara))); - break; - } - - case TV_MSG_SCAN_EVENT: { - mpTv->onEvent(*((CTvScanner::ScannerEvent *)(msg.mpPara))); - break; - } - - case TV_MSG_EPG_EVENT: { - mpTv->onEvent(*((CTvEpg::EpgEvent *)(msg.mpPara))); - break; - } - - case TV_MSG_HDMI_SR_CHANGED: { - int sr = ((int *)(msg.mpPara))[0]; - mpTv->onHdmiSrChanged(sr, (((int *)(msg.mpPara))[1] == 0) ? true : false); - break; - } - - case TV_MSG_ENABLE_VIDEO_LATER: { - int fc = msg.mpPara[0]; - mpTv->onEnableVideoLater(fc); - break; - } - - default: - break; - } -} - -void CTv::CTvMsgQueue::onEvent ( const CTvScanner::ScannerEvent &ev ) -{ - CMessage msg; - msg.mDelayMs = 0; - msg.mType = CTvMsgQueue::TV_MSG_SCAN_EVENT; - memcpy(msg.mpPara, &ev, sizeof(ev)); - this->sendMsg ( msg ); -} - -void CTv::CTvMsgQueue::onEvent ( const CFrontEnd::FEEvent &ev ) -{ - CMessage msg; - msg.mDelayMs = 0; - msg.mType = CTvMsgQueue::TV_MSG_FE_EVENT; - memcpy(msg.mpPara, &ev, sizeof(ev)); - this->sendMsg ( msg ); -} - -void CTv::CTvMsgQueue::onEvent ( const CTvEpg::EpgEvent &ev ) -{ - CMessage msg; - msg.mDelayMs = 0; - msg.mType = CTvMsgQueue::TV_MSG_EPG_EVENT; - memcpy(msg.mpPara, &ev, sizeof(ev)); - this->sendMsg ( msg ); -} - -void CTv::CTvMsgQueue::onEvent(const CAv::AVEvent &ev) -{ - CMessage msg; - msg.mDelayMs = 0; - msg.mType = CTvMsgQueue::TV_MSG_AV_EVENT; - memcpy(msg.mpPara, &ev, sizeof(ev)); - this->sendMsg ( msg ); -} - -void CTv::onHdmiSrChanged(int sr, bool bInit) -{ - if (bInit) { - LOGD ( "%s, Init HDMI audio, sampling rate:%d", __FUNCTION__, sr ); - sr = HanldeAudioInputSr(sr); - InitTvAudio (sr, CC_IN_USE_SPDIF_DEVICE); - } else { - LOGD ( "%s, Reset HDMI sampling rate to %d", __FUNCTION__, sr ); - AudioChangeSampleRate ( sr ); - } -} - -void CTv::onHMDIAudioStatusChanged(int status) -{ - if (status == 0) {//change to no audio data - SetAudioMuteForTv ( CC_AUDIO_MUTE ); - } else if (status == 1) {//change to audio data come - Tv_SetAudioInSource(m_source_input); - usleep(200 * 1000); - SetAudioMuteForTv ( CC_AUDIO_UNMUTE ); - } -} - -int CTv::setTvObserver ( TvIObserver *ob ) -{ - mpObserver = ob; - return 0; -} - -void CTv::sendTvEvent ( const CTvEv &ev ) -{ - //AutoMutex lock(mLock); - /* send sigstate to AutoBackLight */ - if (ev.getEvType() == CTvEv::TV_EVENT_SIGLE_DETECT) { - TvEvent::SignalInfoEvent *pEv = (TvEvent::SignalInfoEvent *)(&ev); - if (pEv->mStatus == TVIN_SIG_STATUS_STABLE) { - mAutoBackLight.updateSigState(mAutoBackLight.SIG_STATE_STABLE); - } else { - mAutoBackLight.updateSigState(mAutoBackLight.SIG_STATE_NOSIG); - } - } - - LOGD ( "%s, tvaction=%x", __FUNCTION__, mTvAction); - if ((mTvAction & TV_ACTION_SCANNING) && (ev.getEvType() == CTvEv::TV_EVENT_SIGLE_DETECT)) { - LOGD("%s, when scanning, not send sig detect event", __FUNCTION__); - return; - } - if ( mpObserver != NULL ) { - mpObserver->onTvEvent ( ev ); - } -} - -int CTv::ClearAnalogFrontEnd() -{ - return mFrontDev.ClearAnalogFrontEnd (); -} - -int CTv::dtvAutoScan() -{ - AutoMutex lock ( mLock ); - mTvAction |= TV_ACTION_SCANNING; - //mTvEpg.leaveChannel(); - mAv.StopTS (); - mAv.DisableVideoWithBlueColor(); - CTvProgram::CleanAllProgramBySrvType ( CTvProgram::TYPE_DTV ); - CTvProgram::CleanAllProgramBySrvType ( CTvProgram::TYPE_RADIO ); - CTvEvent::CleanAllEvent(); - mTvScanner.setObserver ( &mTvMsgQueue ); - mDtvScanRunningStatus = DTV_SCAN_RUNNING_NORMAL; - mFrontDev.Open(FE_DTMB); - mTvScanner.autoDtmbScan();//dtmb - return 0; -} - -int CTv::dtvCleanProgramByFreq ( int freq ) -{ - int iOutRet = 0; - CTvChannel channel; - iOutRet = CTvChannel::SelectByFreq ( freq, channel ); - if ( -1 == iOutRet ) { - LOGD ( "%s, Warnning: Current Freq not have program info in the ts_table\n", __FUNCTION__ ); - } - - iOutRet == CTvProgram::deleteChannelsProgram ( channel ); - return iOutRet; -} - -int CTv::dtvManualScan (int beginFreq, int endFreq, int modulation) -{ - AutoMutex lock ( mLock ); - mTvAction |= TV_ACTION_SCANNING; - //mTvEpg.leaveChannel(); - mAv.StopTS (); - mAv.DisableVideoWithBlueColor(); - CTvChannel::DeleteBetweenFreq(beginFreq, endFreq); - mTvScanner.setObserver ( &mTvMsgQueue ); - mDtvScanRunningStatus = DTV_SCAN_RUNNING_NORMAL; - mFrontDev.Open(FE_DTMB); - int iOutRet = mTvScanner.manualDtmbScan (beginFreq, endFreq, modulation); //dtmb - return iOutRet; -} - -int CTv::dtvAutoScanAtscLock(int attenna, int videoStd, int audioStd) -{ - //for warning - attenna = attenna; - videoStd = videoStd; - audioStd = audioStd; - //showboz - /* int minScanFreq, maxScanFreq, vStd, aStd; - vStd = CC_ATV_VIDEO_STD_PAL; - aStd = CC_ATV_AUDIO_STD_DK; - v4l2_std_id stdAndColor = mFrontDev.enumToStdAndColor(vStd, aStd); - - AutoMutex lock ( mLock ); - mTvAction |= TV_ACTION_SCANNING; - mTvEpg.leaveChannel(); - mAv.StopTS (); - mAv.DisableVideoWithBlueColor(); - CTvProgram::CleanAllProgramBySrvType ( CTvProgram::TYPE_DTV ); - CTvProgram::CleanAllProgramBySrvType ( CTvProgram::TYPE_RADIO ); - CTvEvent::CleanAllEvent(); - mTvScanner.setObserver ( &mTvMsgQueue ); - mDtvScanRunningStatus = DTV_SCAN_RUNNING_NORMAL; - mFrontDev.Open(FE_ATSC); - mTvScanner.autoAtscScan(CTvScanner::AM_ATSC_ATTENNA_TYPE_AIR, stdAndColor);//dtmb*/ - return 0; -} - -//searchType 0:not 256 1:is 256 Program -int CTv::atvAutoScan(int videoStd __unused, int audioStd __unused, int searchType) -{ - int minScanFreq, maxScanFreq, vStd, aStd; - AutoMutex lock ( mLock ); - mAv.DisableVideoWithBlueColor(); - mTvAction |= TV_ACTION_SCANNING; - stopPlaying(); - mTvScanner.setObserver ( &mTvMsgQueue ); - SetAudioMuteForTv ( CC_AUDIO_MUTE ); - getATVMinMaxFreq (&minScanFreq, &maxScanFreq ); - if ( minScanFreq == 0 || maxScanFreq == 0 || minScanFreq > maxScanFreq ) { - LOGE ( "%s, auto scan freq set is error min=%d, max=%d", __FUNCTION__, minScanFreq, maxScanFreq ); - return -1; - } - mSigDetectThread.setVdinNoSigCheckKeepTimes(1000, false); - mSigDetectThread.requestAndWaitPauseDetect(); - mSigDetectThread.setObserver(&mTvScannerDetectObserver); - CTvin::getInstance()->Tvin_StopDecoder(); - //if set std null AUTO, use default PAL/DK - //if(videoStd == CC_ATV_VIDEO_STD_AUTO) { - // vStd = CC_ATV_VIDEO_STD_PAL; - // aStd = CC_ATV_AUDIO_STD_DK; - //} else { - vStd = CC_ATV_VIDEO_STD_PAL; - aStd = CC_ATV_AUDIO_STD_DK; - //} - tvin_port_t source_port = CTvin::getInstance()->Tvin_GetSourcePortBySourceInput(SOURCE_TV); - CTvin::getInstance()->VDIN_OpenPort ( source_port ); - v4l2_std_id stdAndColor = mFrontDev.enumToStdAndColor(vStd, aStd); - - int fmt = CFrontEnd::stdEnumToCvbsFmt (vStd, aStd); - CTvin::getInstance()->AFE_SetCVBSStd ( ( tvin_sig_fmt_t ) TVIN_SIG_FMT_NULL ); - - if (searchType == 0) { - CTvProgram::CleanAllProgramBySrvType ( CTvProgram::TYPE_ATV ); - } else if (searchType == 1) { //type for skyworth, and insert 256 prog, and just update ts table - } - minScanFreq = mFrontDev.formatATVFreq ( minScanFreq ); - maxScanFreq = mFrontDev.formatATVFreq ( maxScanFreq ); - LOGD("%s, atv auto scan vstd=%d, astd=%d stdandcolor=%lld", __FUNCTION__, vStd, aStd, stdAndColor); - mFrontDev.Open(FE_ANALOG); - mSigDetectThread.initSigState(); - mSigDetectThread.resumeDetect(); - mTvScanner.autoAtvScan ( minScanFreq, maxScanFreq, stdAndColor, searchType); - return 0; -} - -int CTv::clearAllProgram(int arg0 __unused) -{ - CTvProgram::CleanAllProgramBySrvType ( CTvProgram::TYPE_ATV ); - CTvProgram::CleanAllProgramBySrvType ( CTvProgram::TYPE_TV ); - CTvProgram::CleanAllProgramBySrvType ( CTvProgram::TYPE_DTV ); - CTvProgram::CleanAllProgramBySrvType ( CTvProgram::TYPE_RADIO); - return 0; -} - -int CTv::atvMunualScan ( int startFreq, int endFreq, int videoStd, int audioStd, - int store_Type , int channel_num ) -{ - int minScanFreq, maxScanFreq, vStd, aStd; - - minScanFreq = mFrontDev.formatATVFreq ( startFreq ); - maxScanFreq = mFrontDev.formatATVFreq ( endFreq ); - if ( minScanFreq == 0 || maxScanFreq == 0 ) { - LOGE ( "%s, munual scan freq set is error min=%d, max=%d", __FUNCTION__, minScanFreq, maxScanFreq ); - return -1; - } - - //if set std null AUTO, use default PAL/DK - //if(videoStd == CC_ATV_VIDEO_STD_AUTO) { - // vStd = CC_ATV_VIDEO_STD_PAL; - // aStd = CC_ATV_AUDIO_STD_DK; - // } else { - vStd = videoStd; - aStd = audioStd; - // } - - AutoMutex lock ( mLock ); - mAv.DisableVideoWithBlueColor(); - mTvAction |= TV_ACTION_SCANNING; - mTvScanner.setObserver ( &mTvMsgQueue ); - - SetAudioMuteForTv ( CC_AUDIO_MUTE ); - v4l2_std_id stdAndColor = mFrontDev.enumToStdAndColor(vStd, aStd); - - tvin_port_t source_port = CTvin::getInstance()->Tvin_GetSourcePortBySourceInput(SOURCE_TV); - CTvin::getInstance()->VDIN_OpenPort ( source_port ); - - int fmt = CFrontEnd::stdEnumToCvbsFmt (vStd, aStd); - CTvin::getInstance()->AFE_SetCVBSStd ( ( tvin_sig_fmt_t ) TVIN_SIG_FMT_NULL ); - LOGD("%s, atv manual scan vstd=%d, astd=%d stdandcolor=%lld", __FUNCTION__, vStd, aStd, stdAndColor); - mFrontDev.Open(FE_ANALOG); - return mTvScanner.ATVManualScan ( minScanFreq, maxScanFreq, stdAndColor, store_Type, channel_num); -} - -int CTv::getVideoFormatInfo ( int *pWidth, int *pHeight, int *pFPS, int *pInterlace ) -{ - int iOutRet = -1; - AM_AV_VideoStatus_t video_status; - - do { - if ( NULL == pWidth || NULL == pHeight || NULL == pFPS || NULL == pInterlace ) { - break; - } - - iOutRet = mAv.GetVideoStatus (&video_status ); - - if ( AM_SUCCESS != iOutRet ) { - LOGD ( "%s, ERROR: Cann't Get video format info\n", __FUNCTION__); - break; - } - - *pWidth = video_status.src_w; - *pHeight = video_status.src_h; - *pFPS = video_status.fps; - *pInterlace = video_status.interlaced; - //LOGD("%s, w : %d h : %d fps : %d interlaced: %d\n", __FUNCTION__, video_status.src_w,video_status.src_h,video_status.fps,video_status.interlaced); - } while ( false ); - - return iOutRet; -} - -int CTv::stopScanLock() -{ - AutoMutex lock ( mLock ); - return stopScan(); -} - -int CTv::stopScan() -{ - const char *config_value = NULL; - if (!(mTvAction & TV_ACTION_SCANNING)) { - LOGD("%s, tv not scanning ,return\n", __FUNCTION__); - return 0; - } - - LOGD("%s, tv scanning , stop it\n", __FUNCTION__); - config_value = config_get_str ( CFG_SECTION_TV, CFG_BLUE_SCREEN_COLOR, "null" ); - if ( strcmp ( config_value, "black" ) == 0 ) { - mAv.DisableVideoWithBlackColor(); - } else { - mAv.DisableVideoWithBlueColor(); - } - mSigDetectThread.requestAndWaitPauseDetect(); - mSigDetectThread.setObserver(this); - //mTvEpg.leaveChannel(); - mTvScanner.stopScan(); - mFrontDev.Close(); - mTvAction &= ~TV_ACTION_SCANNING; - return 0; -} - -int CTv::playProgramLock ( int progId ) -{ - /*AutoMutex lock ( mLock ); - CTvProgram prog; - int ret = CTvProgram::selectByID ( progId, prog ); - - if ( ret != 0 ) { - return -1; - } - int type = prog.getProgType(); - LOGD ( "%s, blackout = %dprog type = %d id = %d name = %s\n", __FUNCTION__, m_blackout_enable, type, progId, prog.getName().string() ); - if (m_blackout_enable == 1) { - mAv.EnableVideoBlackout(); - }else if (m_blackout_enable == 0){ - mAv.DisableVideoBlackout(); - } - - mTvAction |= TV_ACTION_PLAYING; - m_cur_playing_prog_id = progId; - mFrontDev.Open(FE_ANALOG); - if ( m_source_input == SOURCE_TV && type == CTvProgram::TYPE_ATV ) { - playAtvProgram ( progId ); - } else if ( m_source_input == SOURCE_DTV && ( type == CTvProgram::TYPE_DTV || type == CTvProgram::TYPE_RADIO ) ) { - playDtmbProgram ( progId ); - } else { - LOGD ( "%s, source(%d) != type(%d),not play\n", __FUNCTION__, m_source_input, type ); - } - //just for ui,left/right/stereo - int audio_ch = prog.getAudioChannel(); - AM_AOUT_OutputMode_t channel = AM_AOUT_OUTPUT_STEREO; - if (audio_ch == 1) { - channel = AM_AOUT_OUTPUT_STEREO; - } else if (audio_ch == 2) { - channel = AM_AOUT_OUTPUT_DUAL_LEFT; - } else if (audio_ch == 3) { - channel = AM_AOUT_OUTPUT_DUAL_RIGHT; - } - setAudioChannel((int)channel);*/ - - progId = progId; - return 0; -} - -int CTv::playDvbcProgram ( int progId ) -{ - LOGD ( "%s, progId = %d\n", __FUNCTION__, progId ); - - CTvProgram prog; - int ret = CTvProgram::selectByID ( progId, prog ); - if ( ret != 0 ) { - return -1; - } - - LOGD ( "%s, prog name = %s\n", __FUNCTION__, prog.getName().string() ); - CTvChannel channel; - prog.getChannel ( channel ); - - mFrontDev.setPara ( channel.getMode(), channel.getFrequency(), channel.getSymbolRate(), channel.getModulation() ); - - int vpid = 0x1fff, apid = 0x1fff, vfmt = -1, afmt = -1; - - CTvProgram::Video *pV = prog.getVideo(); - if ( pV != NULL ) { - vpid = pV->getPID(); - vfmt = pV->getFormat(); - } - - int aindex = prog.getCurrentAudio ( String8 ( "eng" ) ); - if ( aindex >= 0 ) { - CTvProgram::Audio *pA = prog.getAudio ( aindex ); - if ( pA != NULL ) { - apid = pA->getPID(); - afmt = pA->getFormat(); - } - } - mTvEpg.leaveProgram(); - mTvEpg.leaveChannel(); - startPlayTv ( SOURCE_DTV, vpid, apid, vfmt, afmt ); - - mTvEpg.enterChannel ( channel.getID() ); - mTvEpg.enterProgram ( prog.getID() ); - return 0; -} - -int CTv::getAudioTrackNum ( int progId ) -{ - int iRet, iOutCnt = 0; - CTvProgram prog; - - do { - if ( 0 > progId ) { - break; - } - - iRet = CTvProgram::selectByID ( progId, prog ); - if ( 0 != iRet ) { - break; - } - - iOutCnt = prog.getAudioTrackSize(); - } while ( false ); - - return iOutCnt; -} - -int CTv::getAudioInfoByIndex ( int progId, int idx, int *pAFmt, String8 &lang ) -{ - int iRet, iOutRet = -1; - CTvProgram prog; - CTvProgram::Audio *pA = NULL; - - do { - if ( NULL == pAFmt || idx < 0 ) { - break; - } - - iRet = CTvProgram::selectByID ( progId, prog ); - if ( 0 != iRet ) { - break; - } - - if ( idx >= prog.getAudioTrackSize() ) { - break; - } - - pA = prog.getAudio ( idx ); - if ( NULL == pA ) { - break; - } - - *pAFmt = pA->getFormat(); - lang = pA->getLang(); - } while ( false ); - - return iOutRet; -} - -int CTv::switchAudioTrack (int aPid, int aFmt, int aParam __unused) -{ - int iOutRet = 0; - do { - if ( aPid < 0 || aFmt < 0 ) { - break; - } - - iOutRet = mAv.SwitchTSAudio (( uint16_t ) aPid, ( AM_AV_AFormat_t ) aFmt ); - LOGD ( "%s, iOutRet = %d AM_AV_SwitchTSAudio\n", __FUNCTION__, iOutRet ); - } while ( false ); - - return iOutRet; -} - -int CTv::switchAudioTrack ( int progId, int idx ) -{ - int iOutRet = 0; - CTvProgram prog; - CTvProgram::Audio *pAudio = NULL; - int aPid = -1; - int aFmt = -1; - - do { - if ( idx < 0 ) { - break; - } - - iOutRet = CTvProgram::selectByID ( progId, prog ); - if ( 0 != iOutRet ) { - break; - } - if (prog.getAudioTrackSize() <= 1) { - LOGD("%s, just one audio track, not to switch", __FUNCTION__); - break; - } - if ( idx >= prog.getAudioTrackSize() ) { - break; - } - - pAudio = prog.getAudio ( idx ); - if ( NULL == pAudio ) { - break; - } - - aPid = pAudio->getPID(); - aFmt = pAudio->getFormat(); - if ( aPid < 0 || aFmt < 0 ) { - break; - } - - iOutRet = mAv.SwitchTSAudio (( uint16_t ) aPid, ( AM_AV_AFormat_t ) aFmt ); - LOGD ( "%s, iOutRet = %d AM_AV_SwitchTSAudio\n", __FUNCTION__, iOutRet ); - } while ( false ); - - return iOutRet; -} - -int CTv::ResetAudioDecoderForPCMOutput() -{ - int iOutRet = 0; - - iOutRet = mAv.ResetAudioDecoder (); - LOGD ( "%s, iOutRet = %d AM_AV_ResetAudioDecoder\n", __FUNCTION__, iOutRet ); - return iOutRet; -} - -int CTv::playDtvProgram ( int mode, int freq, int para1, int para2, - int vpid, int vfmt, int apid, int afmt, int pcr __unused, int audioCompetation) -{ - AutoMutex lock ( mLock ); - mTvAction |= TV_ACTION_PLAYING; - if ( m_blackout_enable == 1 ) { - mAv.EnableVideoBlackout(); - } else if ( m_blackout_enable == 0 ) { - mAv.DisableVideoBlackout(); - } - mFrontDev.Open(FE_ANALOG); - mFrontDev.setPara ( mode, freq, para1, para2); - mTvAction |= TV_ACTION_PLAYING; - startPlayTv ( SOURCE_DTV, vpid, apid, vfmt, afmt ); - - CMessage msg; - msg.mDelayMs = 2000; - msg.mType = CTvMsgQueue::TV_MSG_CHECK_FE_DELAY; - mTvMsgQueue.sendMsg ( msg ); - SetCurProgramAudioVolumeCompensationVal ( audioCompetation ); - return 0; -} - -int CTv::playDtmbProgram ( int progId ) -{ - CTvProgram prog; - CTvChannel channel; - int vpid = 0x1fff, apid = 0x1fff, vfmt = -1, afmt = -1; - int aindex; - CTvProgram::Audio *pA; - CTvProgram::Video *pV; - int ret = CTvProgram::selectByID ( progId, prog ); - - SetAudioMuteForTv ( CC_AUDIO_MUTE ); - saveDTVProgramID ( progId ); - prog.getChannel ( channel ); - //音量补偿 - int chanVolCompValue = 0; - chanVolCompValue = GetAudioVolumeCompensationVal(progId); - SetCurProgramAudioVolumeCompensationVal ( chanVolCompValue ); - - mFrontDev.setPara ( channel.getMode(), channel.getFrequency(), channel.getBandwidth(), 0 ); - - pV = prog.getVideo(); - if ( pV != NULL ) { - vpid = pV->getPID(); - vfmt = pV->getFormat(); - } - - aindex = prog.getCurrAudioTrackIndex(); - if ( -1 == aindex ) { //db is default - aindex = prog.getCurrentAudio ( String8 ( "eng" ) ); - if ( aindex >= 0 ) { - prog.setCurrAudioTrackIndex ( progId, aindex ); - } - } - - if ( aindex >= 0 ) { - pA = prog.getAudio ( aindex ); - if ( pA != NULL ) { - apid = pA->getPID(); - afmt = pA->getFormat(); - } - } - - mTvEpg.leaveProgram(); - mTvEpg.leaveChannel(); - startPlayTv ( SOURCE_DTV, vpid, apid, vfmt, afmt ); - mTvEpg.enterChannel ( channel.getID() ); - mTvEpg.enterProgram ( prog.getID() ); - return 0; -} - -int CTv::playAtvProgram (int freq, int videoStd, int audioStd, int fineTune __unused, int audioCompetation) -{ - mTvAction |= TV_ACTION_PLAYING; - if ( m_blackout_enable == 1 ) { - mAv.EnableVideoBlackout(); - } else if ( m_blackout_enable == 0 ) { - mAv.DisableVideoBlackout(); - } - SetAudioMuteForTv ( CC_AUDIO_MUTE ); - //image selecting channel - mSigDetectThread.requestAndWaitPauseDetect(); - CTvin::getInstance()->Tvin_StopDecoder(); - mFrontDev.Open(FE_ANALOG); - //set CVBS - int fmt = CFrontEnd::stdEnumToCvbsFmt (videoStd, audioStd); - CTvin::getInstance()->AFE_SetCVBSStd ( ( tvin_sig_fmt_t ) fmt ); - - v4l2_std_id stdAndColor = mFrontDev.enumToStdAndColor (videoStd, audioStd); - //set TUNER - mFrontDev.setPara (FE_ANALOG, freq, stdAndColor, 1); - - mSigDetectThread.setObserver ( this ); - mSigDetectThread.initSigState(); - mSigDetectThread.resumeDetect(1000); - - SetCurProgramAudioVolumeCompensationVal ( audioCompetation ); - return 0; -} - -int CTv::resetFrontEndPara ( frontend_para_set_t feParms ) -{ - if ( feParms.mode == FE_ANALOG ) { - int progID = -1; - int tmpFreq = feParms.freq; - int tmpfineFreq = feParms.para2; - int mode = feParms.mode; - - //get tunerStd from videoStd and audioStd - v4l2_std_id stdAndColor = mFrontDev.enumToStdAndColor (feParms.videoStd, feParms.audioStd); - - LOGD("%s, resetFrontEndPara- vstd=%d astd=%d stdandcolor=%lld", __FUNCTION__, feParms.videoStd, feParms.audioStd, stdAndColor); - - //set frontend parameters to tuner dev - mSigDetectThread.requestAndWaitPauseDetect(); - CTvin::getInstance()->Tvin_StopDecoder(); - - //set CVBS - int fmt = CFrontEnd::stdEnumToCvbsFmt (feParms.videoStd, feParms.audioStd ); - CTvin::getInstance()->AFE_SetCVBSStd ( ( tvin_sig_fmt_t ) fmt ); - - //set TUNER - usleep(400 * 1000); - mFrontDev.setPara ( FE_ANALOG, tmpFreq, stdAndColor, 1 ); - usleep(400 * 1000); - if ( tmpfineFreq != 0 ) { - mFrontDev.fineTune ( tmpfineFreq / 1000 ); - } - - mSigDetectThread.initSigState(); - mSigDetectThread.resumeDetect(); - } else if ( feParms.mode == FE_DTMB ) { - mFrontDev.setPara ( FE_DTMB, feParms.freq, feParms.para1, feParms.para2 ); - } - - return 0; -} - -int CTv::resetDmxAndAvSource() -{ - AM_DMX_Source_t curdmxSource; - mFrontDev.GetTSSource ( &curdmxSource ); - LOGD ( "%s, AM_FEND_GetTSSource %d", __FUNCTION__, curdmxSource ); - mTvDmx.Close(); - AM_DMX_OpenPara_t para; - memset ( ¶, 0, sizeof ( para ) ); - mTvDmx.Open (para); - mTvDmx.SetSource(curdmxSource ); - AM_AV_TSSource_t ts_source = ( AM_AV_TSSource_t ) curdmxSource; - mAv.SetTSSource (ts_source ); - return 0; -} - -int CTv::SetCurProgramAudioVolumeCompensationVal ( int tmpVal ) -{ - SetAudioVolumeCompensationVal ( tmpVal ); - SetAudioMasterVolume (GetAudioMasterVolume() ); - - LOGD ( "%s, VolumeCompensationVal = %d, id = %d\n", __FUNCTION__, tmpVal, m_cur_playing_prog_id ); - CTvProgram prog; - if ( CTvProgram::selectByID ( m_cur_playing_prog_id, prog ) != 0 ) { - LOGE ( "%s, atv progID is not matching the db's ret = 0\n", __FUNCTION__ ); - return -1; - } - - if (prog.updateVolComp ( m_cur_playing_prog_id, tmpVal ) != 0 ) { - LOGE ( "%s, atv progID is not matching the db's\n", __FUNCTION__); - return -1; - } - return 0; -} - -int CTv::GetAudioVolumeCompensationVal(int progxxId __unused) -{ - int tmpVolValue = 0; - CTvProgram prog; - if ( CTvProgram::selectByID ( m_cur_playing_prog_id, prog ) != 0 ) { - LOGE ( "%s, atv progID is not matching the db's ret = 0\n", __FUNCTION__ ); - return tmpVolValue; - } - tmpVolValue = prog.getChanVolume (); - LOGD ( "%s,progid = %d CompensationVal = %d\n", __FUNCTION__, m_cur_playing_prog_id, tmpVolValue ); - if (tmpVolValue > 20 || tmpVolValue < -20) tmpVolValue = 0; - return tmpVolValue; -} - -int CTv::startPlayTv ( int source, int vid, int aid, int vfat, int afat ) -{ - if ( source == SOURCE_DTV ) { - AM_FileEcho ( DEVICE_CLASS_TSYNC_AV_THRESHOLD_MIN, AV_THRESHOLD_MIN_MS ); - LOGD ( "%s, startPlayTv", __FUNCTION__); - mAv.StartTS (vid, aid, ( AM_AV_VFormat_t ) vfat, ( AM_AV_AFormat_t ) afat ); - } - return 0; -} - -int CTv::stopPlayingLock() -{ - AutoMutex lock ( mLock ); - if (getSubSwitchStatus() == 1) - stopSubtitle(); - return stopPlaying(); -} - -int CTv::stopPlaying() -{ - const char *config_value = NULL; - if (!(mTvAction & TV_ACTION_PLAYING)) { - LOGD("%s, stopplay cur action = %x not playing , return", __FUNCTION__, mTvAction); - return 0; - } - mSigDetectThread.requestAndWaitPauseDetect(); - mAv.EnableVideoBlackout(); - if (m_source_input == SOURCE_TV) { - //first mute - SetAudioMuteForTv(CC_AUDIO_MUTE); - ClearAnalogFrontEnd(); - } else if (m_source_input == SOURCE_DTV) { - //mFrontDev.setPara(FE_DTMB, 51000000, 0, 0); - mAv.StopTS (); - //mTvEpg.leaveChannel(); - //mTvEpg.leaveProgram(); - } - config_value = config_get_str ( CFG_SECTION_TV, CFG_BLUE_SCREEN_COLOR, "null" ); - if ( strcmp ( config_value, "black" ) == 0 ) { - mAv.DisableVideoWithBlackColor(); - } else { - mAv.DisableVideoWithBlueColor(); - } - mTvAction &= ~TV_ACTION_PLAYING; - return 0; -} - -int CTv::GetATVAFCType() -{ - return 1; -} - -int CTv::GetATVSourceTimerSwitch() -{ - return 1; -} - -int CTv::getAudioChannel() -{ - int iRet = -1; - AM_AOUT_OutputMode_t audioChanneleMod; - do { - iRet = mAv.AudioGetOutputMode (&audioChanneleMod ); - if ( AM_SUCCESS != iRet ) { - LOGD ( "%s, audio GetOutputMode is FAILED %d\n", __FUNCTION__, iRet ); - break; - } - LOGD ( "%s, jianfei.lan getAudioChannel iRet : %d audioChanneleMod %d\n", __FUNCTION__, iRet, audioChanneleMod ); - } while ( 0 ); - return audioChanneleMod; -} - -int CTv::setAudioChannel ( int channelIdx ) -{ - int iOutRet = 0; - AM_AOUT_OutputMode_t audioChanneleMod; - LOGD ( "%s, channelIdx : %d\n", __FUNCTION__, channelIdx ); - audioChanneleMod = ( AM_AOUT_OutputMode_t ) channelIdx; - iOutRet = mAv.AudioSetOutputMode (audioChanneleMod ); - int aud_ch = 1; - if (audioChanneleMod == AM_AOUT_OUTPUT_STEREO) { - aud_ch = 1; - } else if (audioChanneleMod == AM_AOUT_OUTPUT_DUAL_LEFT) { - aud_ch = 2; - } else if (audioChanneleMod == AM_AOUT_OUTPUT_DUAL_RIGHT) { - aud_ch = 3; - } - CTvProgram::updateAudioChannel(m_cur_playing_prog_id, aud_ch); - if ( AM_SUCCESS != iOutRet) { - LOGD ( "%s, jianfei.lan TV AM_AOUT_SetOutputMode device is FAILED %d\n", __FUNCTION__, iOutRet ); - } - return 0; -} - -int CTv::getFrontendSignalStrength() -{ - return mFrontDev.getStrength(); -} - -int CTv::getFrontendSNR() -{ - return mFrontDev.getSNR(); -} - -int CTv::getFrontendBER() -{ - return mFrontDev.getBER(); -} - -int CTv::getChannelInfoBydbID ( int dbID, channel_info_t &chan_info ) -{ - CTvProgram prog; - CTvChannel channel; - Vector<sp<CTvProgram> > out; - memset ( &chan_info, sizeof ( chan_info ), 0 ); - chan_info.freq = 44250000; - chan_info.uInfo.atvChanInfo.videoStd = CC_ATV_VIDEO_STD_PAL; - chan_info.uInfo.atvChanInfo.audioStd = CC_ATV_AUDIO_STD_DK; - static const int CVBS_ID = -1; - if (dbID == CVBS_ID) { - unsigned char std; - SSMReadCVBSStd(&std); - chan_info.uInfo.atvChanInfo.videoStd = (atv_video_std_t)std; - chan_info.uInfo.atvChanInfo.audioStd = CC_ATV_AUDIO_STD_DK; - chan_info.uInfo.atvChanInfo.isAutoStd = (std == CC_ATV_VIDEO_STD_AUTO) ? 1 : 0; - return 0; - } - - int ret = CTvProgram::selectByID ( dbID, prog ); - if ( ret != 0 ) { - LOGD ( "getChannelinfo , select dbid=%d,is not exist", dbID); - return -1; - } - prog.getChannel ( channel ); - - if ( CTvProgram::TYPE_ATV == prog.getProgType() ) { - chan_info.freq = channel.getFrequency(); - chan_info.uInfo.atvChanInfo.finefreq = channel.getAfcData(); - LOGD("%s, get channel std = %d", __FUNCTION__, channel.getStd()); - chan_info.uInfo.atvChanInfo.videoStd = - ( atv_video_std_t ) CFrontEnd::stdAndColorToVideoEnum ( channel.getStd() ); - chan_info.uInfo.atvChanInfo.audioStd = - ( atv_audio_std_t ) CFrontEnd::stdAndColorToAudioEnum ( channel.getStd() ); - chan_info.uInfo.atvChanInfo.isAutoStd = ((channel.getStd() & V4L2_COLOR_STD_AUTO) == V4L2_COLOR_STD_AUTO) ? 1 : 0; - } else if ( CTvProgram::TYPE_DTV == prog.getProgType() || CTvProgram::TYPE_RADIO == prog.getProgType()) { - chan_info.freq = channel.getFrequency(); - chan_info.uInfo.dtvChanInfo.strength = getFrontendSignalStrength(); - chan_info.uInfo.dtvChanInfo.quality = getFrontendSNR(); - chan_info.uInfo.dtvChanInfo.ber = getFrontendBER(); - } - - return 0; -} - -bool CTv::Tv_Start_Analyze_Ts ( int channelID ) -{ - int freq, ret; - CTvChannel channel; - - AutoMutex lock ( mLock ); - mAv.StopTS (); - mAv.DisableVideoWithBlueColor(); - ret = CTvChannel::selectByID ( channelID, channel ); - if ( ret != 0 ) { - LOGD ( "%s, CTv tv_updatats can not get freq by channel ID", __FUNCTION__ ); - return false; - } - - mTvAction |= TV_ACTION_SCANNING; - freq = channel.getFrequency(); - LOGD ( "%s, the freq = %d", __FUNCTION__, freq ); - mDtvScanRunningStatus = DTV_SCAN_RUNNING_ANALYZE_CHANNEL; - mTvScanner.setObserver ( &mTvMsgQueue ); - mTvScanner.manualDtmbScan ( freq, freq ); //dtmb - return true; -} - -bool CTv::Tv_Stop_Analyze_Ts() -{ - stopScanLock(); - return true; -} - -int CTv::saveATVProgramID ( int dbID ) -{ - config_set_int ( CFG_SECTION_TV, "atv.get.program.id", dbID ); - return 0; -} - -int CTv::getATVProgramID ( void ) -{ - return config_get_int ( CFG_SECTION_TV, "atv.get.program.id", -1 ); -} - -int CTv::saveDTVProgramID ( int dbID ) -{ - config_set_int ( CFG_SECTION_TV, "dtv.get.program.id", dbID ); - return 0; -} - -int CTv::getDTVProgramID ( void ) -{ - return config_get_int ( CFG_SECTION_TV, "dtv.get.program.id", -1 ); -} - -int CTv::getATVMinMaxFreq ( int *scanMinFreq, int *scanMaxFreq ) -{ - const char *strDelimit = ","; - char *token = NULL; - - *scanMinFreq = 44250000; - *scanMaxFreq = 868250000; - - const char *freqList = config_get_str ( CFG_SECTION_ATV, CFG_ATV_FREQ_LIST, "null" ); - if ( strcmp ( freqList, "null" ) == 0 ) { - LOGE( "%s, atv freq list is null \n", __FUNCTION__ ); - return -1; - } - - char data_str[512] = {0}; - strncpy ( data_str, freqList, sizeof ( data_str ) - 1 ); - - char *pSave; - token = strtok_r ( data_str, strDelimit, &pSave); - sscanf ( token, "%d", scanMinFreq ); - token = strtok_r ( NULL, strDelimit , &pSave); - if ( token != NULL ) { - sscanf ( token, "%d", scanMaxFreq ); - } - return 0; -} - -int CTv::IsDVISignal() -{ - return ( ( TVIN_SIG_FMT_NULL != mSigDetectThread.getCurSigInfo().fmt ) && ( mSigDetectThread.getCurSigInfo().reserved & 0x1 ) ); -} - -int CTv::getHDMIFrameRate() -{ - int ConstRate[5] = {24, 25, 30, 50, 60}; - float ConstRateDiffHz[5] = {0.5, 0.5, 0.5, 2, 2}; - int fps = mSigDetectThread.getCurSigInfo().fps; - for (int i = 0; i < 5; i++) { - if (abs(ConstRate[i] - fps) < ConstRateDiffHz[i]) - fps = ConstRate[i]; - } - return fps; -} - -tv_source_input_t CTv::GetLastSourceInput ( void ) -{ - return m_last_source_input; -} - -int CTv::isVgaFmtInHdmi ( void ) -{ - if ( CTvin::Tvin_SourceInputToSourceInputType(m_source_input) != SOURCE_TYPE_HDMI ) { - return -1; - } - return CTvin::isVgaFmtInHdmi (mSigDetectThread.getCurSigInfo().fmt); -} - -int CTv::isSDFmtInHdmi ( void ) -{ - if ( CTvin::Tvin_SourceInputToSourceInputType(m_source_input) != SOURCE_TYPE_HDMI ) { - return -1; - } - return CTvin::isSDFmtInHdmi (mSigDetectThread.getCurSigInfo().fmt); -} - -void CTv::print_version_info ( void ) -{ - // print tvapi version info - LOGD ( "libtvservice git branch:%s\n", tvservice_get_git_branch_info() ); - LOGD ( "libtvservice git version:%s\n", tvservice_get_git_version_info() ); - LOGD ( "libtvservice Last Changed:%s\n", tvservice_get_last_chaned_time_info() ); - LOGD ( "libtvservice Last Build:%s\n", tvservice_get_build_time_info() ); - LOGD ( "libtvservice Builer Name:%s\n", tvservice_get_build_name_info() ); - LOGD ( "libtvservice board version:%s\n", tvservice_get_board_version_info() ); - LOGD ( "\n\n"); - // print dvb version info - LOGD ( "libdvb git branch:%s\n", dvb_get_git_branch_info() ); - LOGD ( "libdvb git version:%s\n", dvb_get_git_version_info() ); - LOGD ( "libdvb Last Changed:%s\n", dvb_get_last_chaned_time_info() ); - LOGD ( "libdvb Last Build:%s\n", dvb_get_build_time_info() ); - LOGD ( "libdvb Builer Name:%s\n", dvb_get_build_name_info() ); -} - -int CTv::Tvin_GetTvinConfig ( void ) -{ - const char *config_value; - - config_value = config_get_str ( CFG_SECTION_TV, CFG_TVIN_KERNELPET_DISABLE, "null" ); - if ( strcmp ( config_value, "disable" ) == 0 ) { - gTvinConfig.kernelpet_disable = true; - } else { - gTvinConfig.kernelpet_disable = false; - } - - config_value = config_get_str ( CFG_SECTION_TV, CFG_TVIN_KERNELPET_TIMEROUT, "null" ); - gTvinConfig.userpet_timeout = ( unsigned int ) strtol ( config_value, NULL, 10 ); - - if ( gTvinConfig.kernelpet_timeout <= 0 || gTvinConfig.kernelpet_timeout > 40 ) { - gTvinConfig.kernelpet_timeout = 10; - } - - config_value = config_get_str ( CFG_SECTION_TV, CFG_TVIN_USERPET, "null" ); - if ( strcmp ( config_value, "enable" ) == 0 ) { - gTvinConfig.userpet = true; - } else { - gTvinConfig.userpet = false; - } - - config_value = config_get_str ( CFG_SECTION_TV, CFG_TVIN_USERPET_TIMEROUT, "null" ); - gTvinConfig.userpet_timeout = ( unsigned int ) strtol ( config_value, NULL, 10 ); - - if ( gTvinConfig.userpet_timeout <= 0 || gTvinConfig.userpet_timeout > 100 ) { - gTvinConfig.userpet_timeout = 10; - } - - config_value = config_get_str ( CFG_SECTION_TV, CFG_TVIN_USERPET_RESET, "null" ); - if ( strcmp ( config_value, "disable" ) == 0 ) { - gTvinConfig.userpet_reset = 0; - } else { - gTvinConfig.userpet_reset = 1; - } - return 0; -} - -TvRunStatus_t CTv::GetTvStatus() -{ - Mutex::Autolock _l ( mLock ); - return mTvStatus; -} - -int CTv::OpenTv ( void ) -{ - const char *value; - Tv_Spread_Spectrum(); - //reboot system by fbc setting. - value = config_get_str ( CFG_SECTION_TV, CFG_FBC_PANEL_INFO, "null" ); - LOGD("open tv, get fbc panel info:%s\n", value); - if ( strcmp ( value, "edid" ) == 0 ) { - reboot_sys_by_fbc_edid_info(); - } else if ( strcmp ( value, "uart" ) == 0 ) { - reboot_sys_by_fbc_uart_panel_info(fbcIns); - } - - CTvin::getInstance()->Tvin_LoadSourceInputToPortMap(); - - SSMHandlePreCopying(); - if ( SSMDeviceMarkCheck() < 0 ) { - SSMRestoreDeviceMarkValues(); - Tv_SSMRestoreDefaultSetting(); - } - CTvin::getInstance()->OpenTvin(); - CTvin::getInstance()->init_vdin(); - CTvin::getInstance()->Tv_init_afe(); - CVpp::getInstance()->Vpp_Init(getPqDbPath()); - TvAudioOpen(); - SetAudioVolDigitLUTTable(SOURCE_MPEG); - - SSMSetHDCPKey(); - system ( "/system/bin/dec" ); - - //set color filter - // SetFileAttrValue ( "/sys/module/amvideo/parameters/filt_mode", "0x2100" ); - value = config_get_str ( CFG_SECTION_TV, CFG_TVIN_DISPLAY_FREQ_AUTO, "null" ); - if ( strcmp ( value, "enable" ) == 0 ) { - mAutoSetDisplayFreq = true; - } else { - mAutoSetDisplayFreq = false; - } - - Tv_HandeHDMIEDIDFilePathConfig(); - - value = config_get_str ( CFG_SECTION_TV, CFG_SSM_HDMI_EDID_EN, "null" ); - if ( strtoul(value, NULL, 10) == 1 ) { - LOGD( "%s, get config \"%s\" is \"%s\".\n", __FUNCTION__, CFG_SSM_HDMI_EDID_EN, value ); - //get hdmi edid use mode - char prop_value[256] = {0}; - char *pEdid = NULL; - property_get( UBOOTENV_OUTPUTMODE, prop_value, "null" ); - LOGD( "%s, get property [%s]:[%s]\n", __FUNCTION__, UBOOTENV_OUTPUTMODE, prop_value ); - - if ( strcmp ( prop_value, "null" ) != 0 ) - pEdid = prop_value; - else - pEdid = (char *)"hdmi_edid";//set default hdmi edid - - config_set_str ( CFG_SECTION_TV, CS_HDMI_EDID_USE_CFG, pEdid ); - //set file's path for hdmi edid of each port - for ( int i = 1; i <= SSM_HDMI_PORT_MAX; i++ ) { - char edid_path[256] = {0}; - char edid_path_cfg[256] = {0}; - sprintf ( edid_path, "/system/etc/%s_port%d.bin", pEdid, i ); - sprintf ( edid_path_cfg, "ssm.handle.hdmi.port%d.edid.file.path", i ); - config_set_str ( CFG_SECTION_TV, edid_path_cfg, edid_path ); - } - - mSetHdmiEdid = true; - } - - Tvin_GetTvinConfig(); - m_last_source_input = SOURCE_INVALID; - m_source_input = SOURCE_INVALID; - m_mode_3d = VIDEO_3D_MODE_DISABLE; - m_hdmi_sampling_rate = 0; - int8_t blackout_enable; - SSMReadBlackoutEnable(&blackout_enable); - m_blackout_enable = blackout_enable; - - //dtv init - //int rt = -1; - //opendemux(); - //rt = mFrontDev.Open(FE_ANALOG); - //mFrontDev.autoLoadFE(); - //rt = mFrontDev.Open(FE_ANALOG); - AM_DMX_OpenPara_t para_dmx; - memset ( ¶_dmx, 0, sizeof ( AM_DMX_OpenPara_t ) ); - mTvDmx.Open(para_dmx ); - mTvDmx.SetSource (AM_DMX_SRC_TS2); - mAv.Open(); - //mTvEpg.Init ( 0, 0, 1, "eng zho chi", "GB2312" ); - resetDmxAndAvSource(); - mSourceConnectDetectThread.startDetect(); - - if (SSMReadSerialCMDSwitchValue() == 1) { - SetSerialSwitch(SERIAL_A, 1); - } - ClearAnalogFrontEnd(); - - mTvStatus = TV_OPEN_ED; - - mHDMIRxCEC.start(); - mAutoPQparam.startAutoPQ(CTvin::Tvin_SourceInputToSourceInputType(SOURCE_MPEG)); - return 0; -} - -int CTv::CloseTv ( void ) -{ - LOGD ( "tv close"); - mSigDetectThread.stopDetect(); - if (mpUpgradeFBC != NULL) { - mpUpgradeFBC->stop(); - } - CTvin::getInstance()->Tv_uninit_afe(); - CTvin::getInstance()->uninit_vdin(); - CVpp::getInstance()->Vpp_Uninit(); - TvMisc_DisableWDT ( gTvinConfig.userpet ); - mTvStatus = TV_CLOSE_ED; - return 0; -} - -int CTv::StartTvLock () -{ - LOGD ( "%s, tv start status = %d", __FUNCTION__, mTvStatus); - if (mTvStatus == TV_START_ED) - return 0; - - Mutex::Autolock _l ( mLock ); - mTvAction |= TV_ACTION_STARTING; - mAv.ClearVideoBuffer(); - SwitchAVOutBypass(0); - InitSetTvAudioCard(); - SetAudioMuteForTv(CC_AUDIO_MUTE); - mFrontDev.Open(FE_ANALOG); - mFrontDev.autoLoadFE(); - mSigDetectThread.startDetect(); - mTvMsgQueue.startMsgQueue(); - resetDmxAndAvSource(); - SetDisplayMode ( CVpp::getInstance()->GetDisplayMode ( CTvin::Tvin_SourceInputToSourceInputType(m_source_input) ), CTvin::Tvin_SourceInputToSourceInputType(m_source_input), mSigDetectThread.getCurSigInfo().fmt); - TvMisc_EnableWDT ( gTvinConfig.kernelpet_disable, gTvinConfig.userpet, gTvinConfig.kernelpet_timeout, gTvinConfig.userpet_timeout, gTvinConfig.userpet_reset ); - am_phase_t am_phase; - if (CVpp::getInstance()->getPqData()->PQ_GetPhaseArray ( &am_phase ) == 0 ) { - CTvin::getInstance()->TvinApi_SetCompPhase(am_phase); - } - CTvin::getInstance()->TvinApi_SetCompPhaseEnable ( 1 ); - CTvin::getInstance()->VDIN_EnableRDMA ( 1 ); - - //win pos - tvin_window_pos_t win_pos; - Vpp_GetDisplayResolutionInfo(&win_pos); - SetPreviewWindow ( win_pos ); - - CTvin::getInstance()->Tvin_RemovePath ( TV_PATH_TYPE_TVIN ); - if ( CTvin::getInstance()->Tvin_RemovePath ( TV_PATH_TYPE_DEFAULT ) ) { - CTvin::getInstance()->Tvin_AddPath ( TV_PATH_DECODER_NEW3D_WITHOUTPPMGR_AMVIDEO ); - } - - mAv.SetVideoWindow (0, 0, 0, 0 ); - - mTvAction &= ~TV_ACTION_STARTING; - mTvStatus = TV_START_ED; - return 0; -} - -int CTv::DoInstabootSuspend() -{ - CTvDatabase::GetTvDb()->UnInitTvDb(); - CTvSettingdoSuspend(); - CVpp::getInstance()->doSuspend(); - LOGD("%s, \n", __FUNCTION__); - return 0; -} - -int CTv::DoInstabootResume() -{ - CTvDatabase::GetTvDb()->InitTvDb(TV_DB_PATH); - CTvSettingdoResume(); - CVpp::getInstance()->doResume(); - LOGD("%s, \n", __FUNCTION__); - return 0; -} - -int CTv::DoSuspend(int type) -{ - if (type == 1) { - DoInstabootSuspend(); - } - return 0; -} - -int CTv::DoResume(int type) -{ - if (type == 1) { - DoInstabootResume(); - } - return 0; -} - -int CTv::StopTvLock ( void ) -{ - LOGD("%s, call Tv_Stop status = %d \n", __FUNCTION__, mTvStatus); - const char *value; - Mutex::Autolock _l ( mLock ); - mAv.DisableVideoWithBlackColor(); - CVpp::getInstance()->LoadVppSettings ( SOURCE_TYPE_MPEG, TVIN_SIG_FMT_NULL, INDEX_2D, TVIN_TFMT_2D ); - //we should stop audio first for audio mute. - mTvAction |= TV_ACTION_STOPING; - CTvin::getInstance()->Tvin_StopDecoder(); - CTvin::getInstance()->Tvin_RemovePath ( TV_PATH_TYPE_TVIN ); - CTvin::getInstance()->VDIN_ClosePort(); - mTvMsgQueue.clearMsg(); - mSigDetectThread.requestAndWaitPauseDetect(); - //stop scan if scanning - stopScan(); - mFrontDev.SetAnalogFrontEndTimerSwitch(0); - //first stop play(if playing) - stopPlaying(); - // - setAudioChannel(AM_AOUT_OUTPUT_STEREO); - CTvin::getInstance()->setMpeg2Vdin(0); - mAv.setLookupPtsForDtmb(0); - SwitchAVOutBypass(0); - tv_audio_channel_e audio_channel = CTvin::getInstance()->Tvin_GetInputSourceAudioChannelIndex (SOURCE_MPEG); - AudioLineInSelectChannel( audio_channel ); - AudioCtlUninit(); - SetAudioVolDigitLUTTable(SOURCE_MPEG); - Tv_SetAudioInSource(SOURCE_MPEG); - tvin_window_pos_t win_pos; - Vpp_GetDisplayResolutionInfo(&win_pos); - SetPreviewWindow (win_pos ); - //CVpp::getInstance()->LoadVppSettings ( SOURCE_TYPE_MPEG, TVIN_SIG_FMT_NULL, INDEX_2D, TVIN_TFMT_2D ); - SetDisplayMode ( CVpp::getInstance()->GetDisplayMode ( CTvin::Tvin_SourceInputToSourceInputType(SOURCE_MPEG) ), CTvin::Tvin_SourceInputToSourceInputType(SOURCE_MPEG), mSigDetectThread.getCurSigInfo().fmt); - RefreshAudioMasterVolume ( SOURCE_MPEG ); - CVpp::getInstance()->VPP_SetScalerPathSel(0); - CVpp::getInstance()->VPP_SetVideoCrop ( 0, 0, 0, 0 ); - m_last_source_input = SOURCE_INVALID; - m_source_input = SOURCE_INVALID; - mFrontDev.Close(); - mTvAction &= ~TV_ACTION_STOPING; - mTvStatus = TV_STOP_ED; - if ( Get2d4gHeadsetEnable() == 1 ) { - property_set("audio.tv_open.flg", "0"); - } - - Tv_SetDDDRCMode(SOURCE_MPEG); - mAv.DisableVideoWithBlackColor(); - //mAutoPQparam.startAutoPQ(CTvin::Tvin_SourceInputToSourceInputType(SOURCE_MPEG)); - mAv.ClearVideoBuffer(); - mAv.EnableVideoBlackout(); - SetAudioMuteForTv ( CC_AUDIO_UNMUTE ); - return 0; -} - -const char *CTv::getPqDbPath() -{ - return config_get_str(CFG_SECTION_TV, CFG_PQ_DB_PATH, DEF_VALUE_PQ_DB_PATH); -} - -int CTv::Tv_MiscSetBySource ( tv_source_input_t source_input ) -{ - int ret = -1; - - switch ( source_input ) { - case SOURCE_TV: - CVpp::getInstance()->VPP_SetScalerPathSel(1); - ret = SetFileAttrValue ( SYS_VECM_DNLP_ADJ_LEVEL, "4" ); - break; - - case SOURCE_HDMI1: - case SOURCE_HDMI2: - case SOURCE_HDMI3: - CVpp::getInstance()->VPP_SetScalerPathSel(0); - //ret = CVpp::getInstance()->Tv_SavePanoramaMode ( VPP_PANORAMA_MODE_FULL, SOURCE_TYPE_HDMI ); - ret |= SetFileAttrValue ( SYS_VECM_DNLP_ADJ_LEVEL, "5" ); - break; - - case SOURCE_DTV: - CVpp::getInstance()->VPP_SetScalerPathSel(0); - - case SOURCE_AV1: - case SOURCE_AV2: - case SOURCE_VGA: - CVpp::getInstance()->VPP_SetScalerPathSel(1); - ret |= SetFileAttrValue ( SYS_VECM_DNLP_ADJ_LEVEL, "5" ); - break; - - case SOURCE_SVIDEO: - case SOURCE_IPTV: - CVpp::getInstance()->VPP_SetScalerPathSel(1); - default: - CVpp::getInstance()->VPP_SetScalerPathSel(0); - ret |= SetFileAttrValue ( SYS_VECM_DNLP_ADJ_LEVEL, "5" ); - break; - } - return ret; -} - -int CTv::SetSourceSwitchInput (tv_source_input_t source_input ) -{ - Mutex::Autolock _l ( mLock ); - LOGD ( "%s, source input = %d", __FUNCTION__, source_input ); - tv_source_input_t cur_source_input = m_source_input; - tvin_port_t cur_port; - - Tv_SetDDDRCMode(source_input); - if (source_input == cur_source_input ) { - LOGW ( "%s,same input change display mode", __FUNCTION__ ); - return 0; - } - - //if HDMI, need to set EDID of each port - if (mSetHdmiEdid) { - int tmp_ret = 0; - switch ( source_input ) { - case SOURCE_HDMI1: - tmp_ret = SSMSetHDMIEdid(1); - break; - case SOURCE_HDMI2: - tmp_ret = SSMSetHDMIEdid(2); - break; - case SOURCE_HDMI3: - tmp_ret = SSMSetHDMIEdid(3); - break; - default: - tmp_ret = -1; - break; - } - if (tmp_ret < 0) - LOGE ( "%s, do not set hdmi port%d edid.ret=%d", __FUNCTION__, source_input - 4, tmp_ret ); - } - mTvAction |= TV_ACTION_SOURCE_SWITCHING; - m_cur_playing_prog_id = -1; - // - SetAudioMuteForTv(CC_AUDIO_MUTE); - mSigDetectThread.requestAndWaitPauseDetect(); - //const char *config_value = config_get_str ( CFG_SECTION_TV, CFG_BLUE_SCREEN_COLOR, "null" ); - //if ( strcmp ( config_value, "black" ) == 0 ) { - // mAv.DisableVideoWithBlackColor(); - //} else { - // mAv.DisableVideoWithBlueColor(); - //} - mAv.DisableVideoWithBlackColor(); - //enable blackout, when play,disable it - mAv.EnableVideoBlackout(); - //set front dev mode - if ( source_input == SOURCE_TV ) { - mFrontDev.Close(); - mFrontDev.Open(FE_ANALOG); - mFrontDev.SetAnalogFrontEndTimerSwitch(GetATVSourceTimerSwitch()); - //mFrontDev.setMode ( FE_ANALOG ); - } else if ( source_input == SOURCE_DTV ) { - mFrontDev.Close(); - mFrontDev.Open(FE_ANALOG); - //mFrontDev.setMode ( FE_DTMB); - mFrontDev.SetAnalogFrontEndTimerSwitch(0); - } else { - mFrontDev.Close(); - mFrontDev.SetAnalogFrontEndTimerSwitch(0); - } - - //ok - m_last_source_input = m_source_input; - m_source_input = source_input; - SSMSaveSourceInput ( source_input ); - - tv_source_input_t pre_source_input = cur_source_input;//change - cur_source_input = source_input; - - SetAudioVolumeCompensationVal ( 0 ); - - if ( source_input == SOURCE_DTV ) { - //we should stop audio first for audio mute. - SwitchAVOutBypass(0); - tv_audio_channel_e audio_channel = CTvin::getInstance()->Tvin_GetInputSourceAudioChannelIndex (SOURCE_MPEG); - AudioLineInSelectChannel( audio_channel ); - AudioCtlUninit(); - SetAudioVolDigitLUTTable(SOURCE_MPEG); - // - CTvin::getInstance()->Tvin_StopDecoder(); - CTvin::getInstance()->Tvin_RemovePath ( TV_PATH_TYPE_TVIN ); - CTvin::getInstance()->VDIN_ClosePort(); - //double confirm we set the main volume lut buffer to mpeg - RefreshAudioMasterVolume ( SOURCE_MPEG ); - RefreshSrsEffectAndDacGain(); - SetCustomEQGain(); - CTvin::getInstance()->setMpeg2Vdin(1); - mAv.setLookupPtsForDtmb(1); - //CVpp::getInstance()->LoadVppSettings ( SOURCE_TYPE_DTV, TVIN_SIG_FMT_NULL, INDEX_2D, TVIN_TFMT_2D ); - //mAutoPQparam.startAutoPQ(CTvin::Tvin_SourceInputToSourceInputType(SOURCE_DTV)); - Tv_SetAudioInSource ( source_input ); - } else { - mAutoPQparam.stopAutoPQ(); - CTvin::getInstance()->setMpeg2Vdin(0); - mAv.setLookupPtsForDtmb(0); - CTvin::getInstance()->Tvin_AddPath ( TV_PATH_VDIN_NEW3D_WITHOUTPPMGR_AMVIDEO ); - } - cur_port = CTvin::getInstance()->Tvin_GetSourcePortBySourceInput ( cur_source_input ); - Tv_MiscSetBySource ( source_input ); - - //only DTV->TVIN or TVIN->DTV need start resource detect thread - if ( ( pre_source_input == SOURCE_DTV || cur_source_input == SOURCE_DTV ) && - ( cur_source_input != pre_source_input ) ) { - LOGD ( "%s, dtv need resource detect\n", __FUNCTION__ ); - int isNeedCheckD2D3 = ( gTvinConfig.memory512m) ? 1 : 0; - static int sigchkcnt = 0; - while ( true ) { - if ( ( CTvin::getInstance()->Tvin_CheckPathActive ( TV_PATH_TYPE_DEFAULT, isNeedCheckD2D3 ) == TV_PATH_STATUS_INACTIVE ) - && ( CTvin::getInstance()->Tvin_CheckPathActive ( TV_PATH_TYPE_TVIN, isNeedCheckD2D3 ) == TV_PATH_STATUS_INACTIVE ) ) { - LOGD("%s, path check is ok, and break\n", __FUNCTION__); - break; - } else { - if (sigchkcnt++ > 20) { - sigchkcnt = 0; - break; - } - LOGW ( "%s,resource is busy.", __FUNCTION__); - } - } - } - - if ( source_input != SOURCE_DTV ) { - // Uninit data - UnInitTvAudio(); - if (source_input == SOURCE_HDMI1 || source_input == SOURCE_HDMI2 || source_input == SOURCE_HDMI3 || - source_input == SOURCE_MPEG || source_input == SOURCE_DTV ) { - SwitchAVOutBypass(0); - } else { - SwitchAVOutBypass(1); - } - - tv_audio_channel_e audio_channel = CTvin::getInstance()->Tvin_GetInputSourceAudioChannelIndex (source_input); - AudioLineInSelectChannel( audio_channel ); - - Tv_SetAudioInSource ( source_input ); - if ( source_input == SOURCE_HDMI1 || source_input == SOURCE_HDMI2 || source_input == SOURCE_HDMI3 ) { - m_hdmi_sampling_rate = 0; - m_hdmi_audio_data = 0; - } else { - InitTvAudio ( 48000, CC_IN_USE_I2S_DEVICE); - HanldeAudioInputSr(-1); - } - //=========================================== - if ( CTvin::getInstance()->SwitchPort ( cur_port ) == 0 ) { //ok - //========================================== - unsigned char std; - SSMReadCVBSStd(&std); - int fmt = CFrontEnd::stdEnumToCvbsFmt (std, CC_ATV_AUDIO_STD_AUTO); - CTvin::getInstance()->AFE_SetCVBSStd ( ( tvin_sig_fmt_t ) fmt ); - - //for HDMI source connect detect - CTvin::getInstance()->VDIN_OpenHDMIPinMuxOn(true); - CVpp::getInstance()->Vpp_ResetLastVppSettingsSourceType(); - - m_sig_stable_nums = 0; - mSigDetectThread.setObserver ( this ); - mSigDetectThread.initSigState(); - int resumeLater = 0; - if (source_input == SOURCE_HDMI1 || source_input == SOURCE_HDMI2 || source_input == SOURCE_HDMI3) { - resumeLater = 1000; - } else { - resumeLater = 1500; - } - mSigDetectThread.setVdinNoSigCheckKeepTimes(150, true); - mSigDetectThread.resumeDetect(resumeLater); - } - } - - Tv_SetAudioSourceType(source_input); - RefreshAudioMasterVolume(source_input); - Tv_SetAudioOutputSwap_Type(source_input); - //Tv_ADCDigitalCapture_Volume(); - Tv_SetAVOutPut_Input_gain(source_input); - - mTvAction &= ~ TV_ACTION_SOURCE_SWITCHING; - return 0; -} - -void CTv::onSigToStable() -{ - if (mAutoSetDisplayFreq) { - int freq = 60; - if (CTvin::Tvin_SourceInputToSourceInputType(m_source_input) == SOURCE_TYPE_HDMI ) { - int fps = getHDMIFrameRate(); - LOGD("onSigToStable HDMI fps = %d", fps); - if ((30 == fps) || (60 == fps)) { - freq = 60; - } else { - freq = 50; - } - } else if ( CTvin::Tvin_is50HzFrameRateFmt ( mSigDetectThread.getCurSigInfo().fmt ) ) { - freq = 50; - } - - CTvin::getInstance()->VDIN_SetDisplayVFreq ( freq, mAv.getVideoDisplayResolution(), mHdmiOutFbc ); - LOGD ( "%s, SetDisplayVFreq %dHZ.", __FUNCTION__, freq); - } - //showbo mark hdmi auto 3d, tran fmt is 3d, so switch to 3d - - CVpp::getInstance()->LoadVppSettings (CTvin::Tvin_SourceInputToSourceInputType(m_source_input), mSigDetectThread.getCurSigInfo().fmt, Check2Dor3D(m_mode_3d, mSigDetectThread.getCurSigInfo().trans_fmt ), mSigDetectThread.getCurSigInfo().trans_fmt ); - - if ( m_win_mode == PREVIEW_WONDOW ) { - mAv.setVideoAxis(m_win_pos.x1, m_win_pos.y1, m_win_pos.x2, m_win_pos.y2); - mAv.setVideoScreenMode ( CAv::VIDEO_WIDEOPTION_FULL_STRETCH ); - } else { - SetDisplayMode ( CVpp::getInstance()->GetDisplayMode ( CTvin::Tvin_SourceInputToSourceInputType(m_source_input) ), CTvin::Tvin_SourceInputToSourceInputType(m_source_input), mSigDetectThread.getCurSigInfo().fmt); - } - m_sig_stable_nums = 0; -} - -void CTv::onSigStillStable() -{ - if ( m_sig_stable_nums == 20) { - tvin_info_t info = mSigDetectThread.getCurSigInfo(); - TvEvent::SignalInfoEvent ev; - ev.mTrans_fmt = info.trans_fmt; - ev.mFmt = info.fmt; - ev.mStatus = info.status; - ev.mReserved = getHDMIFrameRate(); - sendTvEvent ( ev ); - } - if (m_sig_stable_nums == 2) { - LOGD("still stable , to start decoder"); - int startdec_status = CTvin::getInstance()->Tvin_StartDecoder ( mSigDetectThread.getCurSigInfo() ); - if ( startdec_status == 0 ) { //showboz codes from start decode fun - const char *value = config_get_str ( CFG_SECTION_TV, CFG_TVIN_DB_REG, "null" ); - if ( strcmp ( value, "enable" ) == 0 ) { - usleep ( 20 * 1000 ); - Tvin_SetPLLValues (); - usleep ( 20 * 1000 ); - SetCVD2Values (); - } - } - } - if ( m_sig_stable_nums == 3) { - LOGD("still stable , to unmute audio/video"); - CMessage msg; - msg.mDelayMs = 0; - msg.mType = CTvMsgQueue::TV_MSG_ENABLE_VIDEO_LATER; - msg.mpPara[0] = 2; - mTvMsgQueue.sendMsg ( msg ); - m_hdmi_audio_data = 0; - } - m_sig_stable_nums++; -} - -void CTv::onEnableVideoLater(int framecount) -{ - LOGD("onEnableVideoLater framecount = %d", framecount); - mAv.EnableVideoWhenVideoPlaying(2); - if (CTvin::Tvin_SourceInputToSourceInputType(m_source_input) != SOURCE_TYPE_HDMI ) { - SetAudioMuteForTv ( CC_AUDIO_UNMUTE ); - Tv_SetAudioInSource(m_source_input); - } -} - -void CTv::Tv_SetAVOutPut_Input_gain(tv_source_input_t source_input) -{ - int nPgaValueIndex = 0; - int nAdcValueIndex = 0; - int nDdcValueIndex = 0; - int tmpAvoutBufPtr[9]; - - if (GetAvOutGainBuf_Cfg(tmpAvoutBufPtr) != 0) { - GetDefaultAvOutGainBuf(tmpAvoutBufPtr); - } - - switch (source_input) { - case SOURCE_AV1: - case SOURCE_AV2: - nPgaValueIndex = 0; - nAdcValueIndex = 1; - nDdcValueIndex = 2; - break; - case SOURCE_HDMI1: - case SOURCE_HDMI2: - case SOURCE_HDMI3: - case SOURCE_DTV: - case SOURCE_MPEG: - nPgaValueIndex = 3; - nAdcValueIndex = 4; - nDdcValueIndex = 5; - break; - case SOURCE_TV: - nPgaValueIndex = 6; - nAdcValueIndex = 7; - nDdcValueIndex = 8; - break; - default: - break; - } - - SetPGA_IN_Value(tmpAvoutBufPtr[nPgaValueIndex]); - SetADC_Digital_Capture_Volume(tmpAvoutBufPtr[nAdcValueIndex]); - SetDAC_Digital_PlayBack_Volume(tmpAvoutBufPtr[nDdcValueIndex]); -} - -void CTv::onSigStableToUnstable() -{ - LOGD ( "%s, stable to unstable\n", __FUNCTION__); - SetAudioMuteForTv(CC_AUDIO_MUTE); - mAv.DisableVideoWithBlackColor(); - CTvin::getInstance()->Tvin_StopDecoder(); -} - -void CTv::onSigStableToUnSupport() -{ - SetAudioMuteForTv(CC_AUDIO_MUTE); - mAv.DisableVideoWithBlackColor(); - CTvin::getInstance()->Tvin_StopDecoder(); - - tvin_info_t info = mSigDetectThread.getCurSigInfo(); - TvEvent::SignalInfoEvent ev; - ev.mTrans_fmt = info.trans_fmt; - ev.mFmt = info.fmt; - ev.mStatus = info.status; - ev.mReserved = info.reserved; - sendTvEvent ( ev ); - LOGD ( "%s, Enable blackscreen for signal change in StableToUnSupport!", __FUNCTION__ ); -} - -void CTv::onSigStableToNoSig() -{ - SetAudioMuteForTv(CC_AUDIO_MUTE); - const char *value = config_get_str ( CFG_SECTION_TV, CFG_BLUE_SCREEN_COLOR, "null" ); - if ( strcmp ( value, "black" ) == 0 ) { - mAv.DisableVideoWithBlackColor(); - } else { - mAv.DisableVideoWithBlueColor(); - } - //SetAudioMuteForTv(CC_AUDIO_MUTE); - CTvin::getInstance()->Tvin_StopDecoder(); - - tvin_info_t info = mSigDetectThread.getCurSigInfo(); - TvEvent::SignalInfoEvent ev; - ev.mTrans_fmt = info.trans_fmt; - ev.mFmt = info.fmt; - ev.mStatus = info.status; - ev.mReserved = info.reserved; - sendTvEvent ( ev ); - LOGD ( "%s, Enable bluescreen for signal change in StableToNoSig!", __FUNCTION__); -} - -void CTv::onSigUnStableToUnSupport() -{ - mAv.DisableVideoWithBlackColor(); - CTvin::getInstance()->Tvin_StopDecoder(); - tvin_info_t info = mSigDetectThread.getCurSigInfo(); - - TvEvent::SignalInfoEvent ev; - ev.mTrans_fmt = info.trans_fmt; - ev.mFmt = info.fmt; - ev.mStatus = info.status; - ev.mReserved = info.reserved; - sendTvEvent ( ev ); - LOGD ( "%s, Enable blackscreen for signal change in UnStableToUnSupport!", __FUNCTION__); -} - -void CTv::onSigUnStableToNoSig() -{ - SetAudioMuteForTv(CC_AUDIO_MUTE); - const char *value = config_get_str ( CFG_SECTION_TV, CFG_BLUE_SCREEN_COLOR, "null" ); - if ( strcmp ( value, "black" ) == 0 ) { - mAv.DisableVideoWithBlackColor(); - } else { - mAv.DisableVideoWithBlueColor(); - //SetAudioMuteForTv(CC_AUDIO_MUTE); - } - CTvin::getInstance()->Tvin_StopDecoder(); - - tvin_info_t info = mSigDetectThread.getCurSigInfo(); - TvEvent::SignalInfoEvent ev; - ev.mTrans_fmt = info.trans_fmt; - ev.mFmt = info.fmt; - ev.mStatus = info.status; - ev.mReserved = info.reserved; - sendTvEvent ( ev ); - LOGD ( "%s, Enable bluescreen for signal change in UnStableToNoSig! status = %d", __FUNCTION__, ev.mStatus ); -} - -void CTv::onSigNullToNoSig() -{ - SetAudioMuteForTv(CC_AUDIO_MUTE); - const char *value = config_get_str ( CFG_SECTION_TV, CFG_BLUE_SCREEN_COLOR, "null" ); - if ( strcmp ( value, "black" ) == 0 ) { - mAv.DisableVideoWithBlackColor(); - } else { - mAv.DisableVideoWithBlueColor(); - //SetAudioMuteForTv(CC_AUDIO_MUTE); - } - CTvin::getInstance()->Tvin_StopDecoder(); - - tvin_info_t info = mSigDetectThread.getCurSigInfo(); - - TvEvent::SignalInfoEvent ev; - ev.mTrans_fmt = info.trans_fmt; - ev.mFmt = info.fmt; - ev.mStatus = info.status; - ev.mReserved = info.reserved; - sendTvEvent ( ev ); - LOGD ( "%s, Enable bluescreen for signal change in NullToNoSig!", __FUNCTION__); -} - -void CTv::onSigNoSigToUnstable() -{ - const char *value = config_get_str ( CFG_SECTION_TV, CFG_BLUE_SCREEN_COLOR, "null" ); - if ( strcmp ( value, "black" ) == 0 ) { - mAv.DisableVideoWithBlackColor(); - } else { - mAv.DisableVideoWithBlueColor(); - } - LOGD("Enable bluescreen for signal change in NoSigToUnstable\n"); -} - -void CTv::onSigStillUnstable() -{ -} - -void CTv::onSigStillNosig() -{ -} - -void CTv::onSigStillNoSupport() -{ - LOGD ( "%s, gxtvbb, don't send event when sitll not support", __FUNCTION__); - /* - tvin_info_t info = mSigDetectThread.getCurSigInfo(); - TvEvent::SignalInfoEvent SigEv; - SigEv.mTrans_fmt = info.trans_fmt; - SigEv.mFmt = info.fmt; - SigEv.mStatus = info.status; - SigEv.mReserved = info.reserved; - sendTvEvent ( SigEv ); - LOGD ( "%s, Unsupport signal", __FUNCTION__); - */ -} - -void CTv::onSigStillNull() -{ -} - -void CTv::onStableSigFmtChange() -{ - if ( mAutoSetDisplayFreq) { - if (CTvin::Tvin_SourceInputToSourceInputType(m_source_input) == SOURCE_TYPE_HDMI ) { - int fps = getHDMIFrameRate(); - LOGD("onSigToStable HDMI fps get = %d", fps); - } - int freq = 60; - if ( CTvin::Tvin_is50HzFrameRateFmt ( mSigDetectThread.getCurSigInfo().fmt ) ) { - freq = 50; - } - - CTvin::getInstance()->VDIN_SetDisplayVFreq ( freq, mAv.getVideoDisplayResolution(), mHdmiOutFbc ); - LOGD ( "%s, SetDisplayVFreq %dHZ.", __FUNCTION__, freq); - } - //showbo mark hdmi auto 3d, tran fmt is 3d, so switch to 3d - LOGD("hdmi trans_fmt = %d", mSigDetectThread.getCurSigInfo().trans_fmt); - - //load pq parameters - CVpp::getInstance()->LoadVppSettings (CTvin::Tvin_SourceInputToSourceInputType(m_source_input), mSigDetectThread.getCurSigInfo().fmt, Check2Dor3D(m_mode_3d, mSigDetectThread.getCurSigInfo().trans_fmt ), mSigDetectThread.getCurSigInfo().trans_fmt ); - - if ( m_win_mode == PREVIEW_WONDOW ) { - mAv.setVideoAxis(m_win_pos.x1, m_win_pos.y1, m_win_pos.x2, m_win_pos.y2); - mAv.setVideoScreenMode ( CAv::VIDEO_WIDEOPTION_FULL_STRETCH ); - } else { - SetDisplayMode ( CVpp::getInstance()->GetDisplayMode ( CTvin::Tvin_SourceInputToSourceInputType(m_source_input) ), CTvin::Tvin_SourceInputToSourceInputType(m_source_input), mSigDetectThread.getCurSigInfo().fmt); - } -} - -void CTv::onStableTransFmtChange() -{ - LOGD("onStableTransFmtChange trans_fmt = %d", mSigDetectThread.getCurSigInfo().trans_fmt); -} - -void CTv::onSigDetectEnter() -{ -} - -void CTv::onSigDetectLoop() -{ - if (( CTvin::Tvin_SourceInputToSourceInputType(m_source_input) == SOURCE_TYPE_HDMI ) ) { - int sr = CTvin::getInstance()->get_hdmi_sampling_rate(); - if ( ( sr > 0 ) && ( sr != m_hdmi_sampling_rate ) ) { - LOGD("HDMI SR CHANGED"); - CMessage msg; - msg.mDelayMs = 0; - msg.mType = CTvMsgQueue::TV_MSG_HDMI_SR_CHANGED; - ((int *)(msg.mpPara))[0] = sr; - ((int *)(msg.mpPara))[1] = m_hdmi_sampling_rate; - mTvMsgQueue.sendMsg ( msg ); - m_hdmi_sampling_rate = sr; - } - - //m_hdmi_audio_data init is 0, not audio data , when switch to HDMI - int hdmi_audio_data = CTvin::getInstance()->TvinApi_GetHDMIAudioStatus(); - if (hdmi_audio_data != m_hdmi_audio_data) { - LOGD("HDMI auds_rcv_sts CHANGED = %d", hdmi_audio_data); - m_hdmi_audio_data = hdmi_audio_data; - onHMDIAudioStatusChanged(hdmi_audio_data); - } - } -} - -CTv::CTvDetectObserverForScanner::CTvDetectObserverForScanner(CTv *pTv) -{ - mpTv = pTv; - m_sig_stable_nums = 0; -} - -void CTv::CTvDetectObserverForScanner::onSigStableToUnstable() -{ - LOGD ( "%s, stable to unstable\n", __FUNCTION__); - mpTv->SetAudioMuteForTv(CC_AUDIO_MUTE); - mpTv->SetAudioMuteForTv(CC_AUDIO_MUTE); - const char *value = config_get_str ( CFG_SECTION_TV, CFG_BLUE_SCREEN_COLOR, "null" ); - if ( strcmp ( value, "black" ) == 0 ) { - mpTv->mAv.DisableVideoWithBlackColor(); - } else { - mpTv->mAv.DisableVideoWithBlueColor(); - } - CTvin::getInstance()->Tvin_StopDecoder(); -} - -void CTv::CTvDetectObserverForScanner::onSigUnStableToNoSig() -{ - mpTv->SetAudioMuteForTv(CC_AUDIO_MUTE); - const char *value = config_get_str ( CFG_SECTION_TV, CFG_BLUE_SCREEN_COLOR, "null" ); - if ( strcmp ( value, "black" ) == 0 ) { - mpTv->mAv.DisableVideoWithBlackColor(); - } else { - mpTv->mAv.DisableVideoWithBlueColor(); - } - CTvin::getInstance()->Tvin_StopDecoder(); -} - -void CTv::CTvDetectObserverForScanner::onSigStableToNoSig() -{ - mpTv->SetAudioMuteForTv(CC_AUDIO_MUTE); - const char *value = config_get_str ( CFG_SECTION_TV, CFG_BLUE_SCREEN_COLOR, "null" ); - if ( strcmp ( value, "black" ) == 0 ) { - mpTv->mAv.DisableVideoWithBlackColor(); - } else { - mpTv->mAv.DisableVideoWithBlueColor(); - } - CTvin::getInstance()->Tvin_StopDecoder(); - LOGD ( "%s, Enable bluescreen for signal change in StableToNoSig!", __FUNCTION__); -} - -void CTv::CTvDetectObserverForScanner::onSigToStable() -{ - mpTv->mAv.setVideoScreenMode ( CAv::VIDEO_WIDEOPTION_16_9 ); - m_sig_stable_nums = 0; -} - -void CTv::CTvDetectObserverForScanner::onSigStillStable() -{ - if (m_sig_stable_nums == 1) { - LOGD("%s still stable , to start decoder", __FUNCTION__); - int startdec_status = CTvin::getInstance()->Tvin_StartDecoder (mpTv->mSigDetectThread.getCurSigInfo() ); - if ( startdec_status == 0 ) { - const char *value = config_get_str ( CFG_SECTION_TV, CFG_TVIN_DB_REG, "null" ); - if ( strcmp ( value, "enable" ) == 0 ) { - usleep ( 20 * 1000 ); - mpTv->Tvin_SetPLLValues (); - usleep ( 20 * 1000 ); - mpTv->SetCVD2Values (); - } - } - } - if ( m_sig_stable_nums == 10 ) { - mpTv->mAv.EnableVideoWhenVideoPlaying(); - } - m_sig_stable_nums++; -} - -void CTv::onSourceConnect(int source_type, int connect_status) -{ - TvEvent::SourceConnectEvent ev; - ev.mSourceInput = source_type; - ev.connectionState = connect_status; - sendTvEvent(ev); -} - -void CTv::onVframeSizeChange() -{ - if (m_source_input == SOURCE_DTV) { - CVpp::getInstance()->LoadVppSettings ( SOURCE_TYPE_DTV, mAv.getVideoResolutionToFmt(), INDEX_2D, TVIN_TFMT_2D ); - } else if (m_source_input == SOURCE_INVALID) { - CVpp::getInstance()->LoadVppSettings ( SOURCE_TYPE_MPEG, mAv.getVideoResolutionToFmt(), INDEX_2D, TVIN_TFMT_2D ); - } -} - -int CTv::GetSourceConnectStatus(tv_source_input_t source_input) -{ - return mSourceConnectDetectThread.GetSourceConnectStatus((tv_source_input_t)source_input); -} - -tv_source_input_t CTv::GetCurrentSourceInputLock ( void ) -{ - Mutex::Autolock _l ( mLock ); - return m_source_input; -} - -//dtv and tvin -tvin_info_t CTv::GetCurrentSignalInfo ( void ) -{ - tvin_trans_fmt det_fmt = TVIN_TFMT_2D; - tvin_sig_status_t signalState = TVIN_SIG_STATUS_NULL; - tvin_info_t signal_info = mSigDetectThread.getCurSigInfo(); - - int feState = mFrontDev.getStatus(); - if ( (CTvin::Tvin_SourceInputToSourceInputType(m_source_input) == SOURCE_TYPE_DTV ) ) { - det_fmt = CTvin::getInstance()->TvinApi_Get3DDectMode(); - if ((feState & FE_HAS_LOCK) == FE_HAS_LOCK) { - signal_info.status = TVIN_SIG_STATUS_STABLE; - } else if ((feState & FE_TIMEDOUT) == FE_TIMEDOUT) { - signal_info.status = TVIN_SIG_STATUS_NOSIG; - } - if ( det_fmt != TVIN_TFMT_2D ) { - signal_info.trans_fmt = det_fmt; - } - signal_info.fmt = mAv.getVideoResolutionToFmt(); - } - return signal_info; -} - -int CTv::Tv_GetHistgram(int *histgram_buf) -{ - if (histgram_buf == NULL) { - return -1; - } - return CTvin::getInstance()->VDIN_GetHistgram(histgram_buf); -} - -int CTv::Tv_Set3DMode ( VIDEO_3D_MODE_T mode ) -{ - if (mode == VIDEO_3D_MODE_AUTO) { - CTvin::getInstance()->VDIN_SetDI3DDetc (1); - } else { - CTvin::getInstance()->VDIN_SetDI3DDetc (0); - } - - mAv.set3DMode(mode, 0, 0); - m_mode_3d = mode; - SSMSave3DMode ( ( unsigned char ) mode ); - return 0; -} - -VIDEO_3D_MODE_T CTv::Tv_Get3DMode ( void ) -{ - return m_mode_3d; -} - -int CTv::Tv_Set3DLRSwith ( int on_off) -{ - LOGW ( "%s,Set3D LRSwith on_off %d", __FUNCTION__, on_off); - mAv.set3DMode(m_mode_3d, on_off, 0); - SSMSave3DLRSwitch(on_off); - return 0; -} - -int CTv::Tv_Get3DLRSwith ( void ) -{ - unsigned char val = 0; - SSMRead3DLRSwitch ( &val ); - return ( int ) val; -} - -int CTv::Tv_Set3DTo2DMode ( int mode) -{ - LOGW ( "%s,Set3D to 2D mode %d", __FUNCTION__ , mode); - mAv.set3DMode(m_mode_3d, 0, mode); - SSMSave3DTO2D ( mode ); - return 0; -} - -int CTv::Tv_Get3DTo2DMode ( void ) -{ - unsigned char val = 0; - SSMRead3DTO2D ( &val ); - return val; -} - -int CTv::Tv_Set3DDepth ( int value ) -{ - CTvin::getInstance()->Tvin_SetDepthOf2Dto3D( value ); - SSMSave3DDepth ( value ); - return 0; -} - -int CTv::GetSave3DDepth ( void ) -{ - unsigned char val = 0; - SSMRead3DDepth ( &val ); - return val; -} - -is_3d_type_t CTv::Check2Dor3D ( VIDEO_3D_MODE_T mode3d, tvin_trans_fmt_t trans_fmt ) -{ - if ( mode3d == VIDEO_3D_MODE_DISABLE ) { - return INDEX_2D; - } else if ( mode3d == VIDEO_3D_MODE_AUTO ) { - if ( trans_fmt == TVIN_TFMT_2D ) { - return INDEX_2D; - } else { - return INDEX_3D; - } - } else { - return INDEX_3D; - } -} - -int CTv::Tvin_SetPLLValues () -{ - tvin_sig_fmt_t sig_fmt = mSigDetectThread.getCurSigInfo().fmt; - tvin_port_t source_port = CTvin::Tvin_GetSourcePortBySourceInput(m_source_input); - am_regs_t regs; - - if ( CVpp::getInstance()->getPqData()->PQ_GetPLLParams ( source_port, sig_fmt, ®s ) == 0 ) { - LOGD ("%s,PQ_GetPLLParams(source_port[%d], sig_fmt[%d],®s).\n", __FUNCTION__, source_port, sig_fmt ); - - if ( CTvin::getInstance()->TvinApi_LoadPLLValues ( regs ) < 0 ) { - LOGE ( "%s, TvinApi_LoadPLLValues failed!\n", __FUNCTION__ ); - return -1; - } - } else { - LOGE ( "%s, PQ_GetPLLParams failed!\n", __FUNCTION__ ); - return -1; - } - - return 0; -} - -int CTv::SetCVD2Values () -{ - tvin_sig_fmt_t sig_fmt = mSigDetectThread.getCurSigInfo().fmt; - tvin_port_t source_port = CTvin::Tvin_GetSourcePortBySourceInput(m_source_input); - am_regs_t regs; - - if (CVpp::getInstance()->getPqData()->PQ_GetCVD2Params ( source_port, sig_fmt, ®s ) == 0) { - LOGD ( "%s, PQ_GetCVD2Params(source_port[%d], sig_fmt[%d],®s).\n", __FUNCTION__, - source_port, sig_fmt ); - - if ( CTvin::getInstance()->TvinApi_LoadCVD2Values ( regs ) < 0 ) { - LOGE ( "%s, TvinApi_LoadCVD2Values failed!\n", __FUNCTION__); - return -1; - } - } else { - LOGE ( "%s, PQ_GetCVD2Params failed!\n", __FUNCTION__); - return -1; - } - - return 0; -} - -int CTv::SetPreviewWindow ( tvin_window_pos_t pos ) -{ - m_win_pos.x1 = pos.x1; - m_win_pos.y1 = pos.y1; - m_win_pos.x2 = pos.x2; - m_win_pos.y2 = pos.y2; - LOGD ( "%s, SetPreviewWindow x = %d y=%d", __FUNCTION__, pos.x2, pos.y2 ); - - tvin_window_pos_t def_pos; - Vpp_GetDisplayResolutionInfo(&def_pos); - - if (pos.x1 != 0 || pos.y1 != 0 || pos.x2 != def_pos.x2 || pos.y2 != def_pos.y2) { - m_win_mode = PREVIEW_WONDOW; - } else { - m_win_mode = NORMAL_WONDOW; - } - - return mAv.setVideoAxis(m_win_pos.x1, m_win_pos.y1, m_win_pos.x2, m_win_pos.y2); -} - -/*********************** Audio start **********************/ -int CTv::SetAudioVolDigitLUTTable ( tv_source_input_t source_input ) -{ - int tmpDefDigitLutBuf[CC_LUT_BUF_SIZE] = { 0 }; - int lut_table_index = 0; - if (source_input == SOURCE_TV) { - lut_table_index = CC_GET_LUT_TV; - } else if (source_input == SOURCE_AV1 || source_input == SOURCE_AV2) { - lut_table_index = CC_GET_LUT_AV; - } else if (source_input == SOURCE_YPBPR1 || source_input == SOURCE_YPBPR2) { - lut_table_index = CC_GET_LUT_COMP; - } else if (source_input == SOURCE_VGA) { - lut_table_index = CC_GET_LUT_VGA; - } else if (source_input == SOURCE_HDMI1 || source_input == SOURCE_HDMI2 || source_input == SOURCE_HDMI3) { - lut_table_index = CC_GET_LUT_HDMI; - } else if ( source_input == SOURCE_MPEG ) { - lut_table_index = CC_GET_LUT_MPEG; - } else if ( source_input == SOURCE_DTV ) { - lut_table_index = CC_GET_LUT_MPEG; - } else if ( source_input == SOURCE_MAX) { - return 0; - } - char MainVolLutTableName[128]; - const char *baseName = GetAudioAmpMainvolTableBaseName(lut_table_index); - strcpy(MainVolLutTableName, baseName); - const char *dName = "."; - strcat(MainVolLutTableName, dName); - strcat(MainVolLutTableName, GetMainVolLutTableExtraName()); - if ( GetAudioAmpMainvolBuf(MainVolLutTableName, tmpDefDigitLutBuf) == 0) { - AudioSetVolumeDigitLUTBuf ( lut_table_index, tmpDefDigitLutBuf); - } - return 0; -} - -void CTv::RefreshAudioMasterVolume ( tv_source_input_t source_input ) -{ - if (source_input == SOURCE_HDMI1 || source_input == SOURCE_HDMI2 || source_input == SOURCE_HDMI3) { - if ( GetAudioDVISupportEnable() == 1 ) { - if ( IsDVISignal() ) { - SetAudioVolDigitLUTTable ( SOURCE_MPEG ); - SetAudioMasterVolume ( GetAudioMasterVolume() ); - return; - } - } - } - - SetAudioVolDigitLUTTable ( source_input ); - SetAudioMasterVolume ( GetAudioMasterVolume() ); -} - -int CTv::Tv_SetAudioInSource (tv_source_input_t source_input) -{ - int vol = 255; - if (source_input == SOURCE_TV) { - if (CTvin::getInstance()->Tvin_GetAudioInSourceType(source_input) == TV_AUDIO_IN_SOURCE_TYPE_ATV) { - AudioSetAudioInSource(CC_AUDIO_IN_SOURCE_ATV); - vol = GetAudioInternalDACDigitalPlayBackVolume_Cfg(CC_AUDIO_IN_SOURCE_ATV); - LOGD("%s, atv DAC_Digital_PlayBack_Volume = %d\n", __FUNCTION__, vol); - } else { - LOGD("%s, dtv DAC_Digital_PlayBack_Volume = %d\n", __FUNCTION__, vol); - AudioSetAudioInSource(CC_AUDIO_IN_SOURCE_LINEIN); - vol = GetAudioInternalDACDigitalPlayBackVolume_Cfg(CC_AUDIO_IN_SOURCE_LINEIN); - } - } else if (source_input == SOURCE_AV1 || source_input == SOURCE_AV2) { - AudioSetAudioInSource(CC_AUDIO_IN_SOURCE_LINEIN); - vol = GetAudioInternalDACDigitalPlayBackVolume_Cfg(CC_AUDIO_IN_SOURCE_LINEIN); - } else if (source_input == SOURCE_HDMI1 || source_input == SOURCE_HDMI2 || source_input == SOURCE_HDMI3) { - AudioSetAudioInSource(CC_AUDIO_IN_SOURCE_HDMI); - vol = GetAudioInternalDACDigitalPlayBackVolume_Cfg(CC_AUDIO_IN_SOURCE_HDMI); - } else if (source_input == SOURCE_YPBPR1 || source_input == SOURCE_YPBPR2 || - source_input == SOURCE_VGA) { - AudioSetAudioInSource(CC_AUDIO_IN_SOURCE_LINEIN); - vol = GetAudioInternalDACDigitalPlayBackVolume_Cfg(CC_AUDIO_IN_SOURCE_LINEIN); - } else if (source_input == SOURCE_MPEG) { - AudioSetAudioInSource(CC_AUDIO_IN_SOURCE_HDMI); - vol = GetAudioInternalDACDigitalPlayBackVolume_Cfg(CC_AUDIO_IN_SOURCE_HDMI); - } else if (source_input == SOURCE_DTV) { - AudioSetAudioInSource(CC_AUDIO_IN_SOURCE_HDMI); - vol = GetAudioInternalDACDigitalPlayBackVolume_Cfg(CC_AUDIO_IN_SOURCE_HDMI); - LOGD("%s, dtv DAC_Digital_PlayBack_Volume = %d\n", __FUNCTION__, vol); - } - LOGD("%s, we have read SetDAC_Digital_PlayBack_Volume = %d\n", __FUNCTION__, vol); - - return 0; -} - -int CTv::Tv_SetAudioSourceType (tv_source_input_t source_input) -{ - int audio_source = -1; - - if (source_input == SOURCE_TV) { - audio_source = AUDIO_ATV_SOURCE; - } else if (source_input == SOURCE_AV1 || source_input == SOURCE_AV2) { - audio_source = AUDIO_AV_SOURCE; - } else if (source_input == SOURCE_HDMI1 || source_input == SOURCE_HDMI2 || - source_input == SOURCE_HDMI3) { - audio_source = AUDIO_HDMI_SOURCE; - } else if (source_input == SOURCE_YPBPR1 || source_input == SOURCE_YPBPR2 || - source_input == SOURCE_VGA) { - audio_source = AUDIO_AV_SOURCE; - } else if (source_input == SOURCE_DTV) { - audio_source = AUDIO_MPEG_SOURCE; - } else { - audio_source = AUDIO_MPEG_SOURCE; - } - - return AudioSetAudioSourceType(audio_source); -} - -void CTv::Tv_SetAudioOutputSwap_Type (tv_source_input_t source_input) -{ - int sw_status = GetAudioOutputSwapStatus(source_input); - SetOutput_Swap(sw_status); -} - -void CTv::Tv_ADCDigitalCapture_Volume (void) -{ - int capture_vol = GetADCDigitalCaptureVol_Cfg(); - LOGD("%s, we have read ADCDigitalCaptureVol_Config = %d \n", __FUNCTION__, capture_vol); - SetADC_Digital_Capture_Volume(capture_vol); -} - -void CTv::Tv_SetPGAIn_Gain (void) -{ - int gain_val = GetAudioInternalDacPGAInGain_Cfg(); - LOGD("%s, we have read ADCDigitalCaptureVol_Config = %d \n", __FUNCTION__, gain_val); - SetPGA_IN_Value(gain_val); -} - -void CTv::Tv_SetDACDigitalPlayBack_Volume (int audio_src_in_type) -{ - int vol = GetAudioInternalDACDigitalPlayBackVolume_Cfg(audio_src_in_type); - LOGD("%s, we have read DACDigitalPlayBackVolume config = %d \n", __FUNCTION__, vol); - SetDAC_Digital_PlayBack_Volume(vol); -} -/*********************** Audio end **********************/ - -unsigned int CTv::Vpp_GetDisplayResolutionInfo(tvin_window_pos_t *win_pos) -{ - int display_resolution = mAv.getVideoDisplayResolution(); - int width = 0, height = 0; - switch (display_resolution) { - case VPP_DISPLAY_RESOLUTION_1366X768: - width = CC_RESOLUTION_1366X768_W; - height = CC_RESOLUTION_1366X768_H; - break; - case VPP_DISPLAY_RESOLUTION_1920X1080: - width = CC_RESOLUTION_1920X1080_W; - height = CC_RESOLUTION_1920X1080_H; - break; - case VPP_DISPLAY_RESOLUTION_3840X2160: - width = CC_RESOLUTION_3840X2160_W; - height = CC_RESOLUTION_3840X2160_H; - break; - default: - width = CC_RESOLUTION_3840X2160_W; - height = CC_RESOLUTION_3840X2160_H; - break; - } - - if (win_pos != NULL) { - win_pos->x1 = 0; - win_pos->y1 = 0; - win_pos->x2 = width - 1; - win_pos->y2 = height - 1; - } - return 0; -} - -int CTv::setBlackoutEnable(int enable) -{ - m_blackout_enable = enable; - return SSMSaveBlackoutEnable(enable); -} - -int CTv::getSaveBlackoutEnable() -{ - int8_t enable; - SSMReadBlackoutEnable(&enable); - return enable; -} - -void CTv::startAutoBackLight() -{ - if (mHdmiOutFbc) { - Tv_FactorySet_FBC_Auto_Backlight_OnOff(1); - } else { - mAutoBackLight.startAutoBacklight(CTvin::Tvin_SourceInputToSourceInputType(m_source_input)); - } -} - -void CTv::stopAutoBackLight() -{ - if (mHdmiOutFbc) { - Tv_FactorySet_FBC_Auto_Backlight_OnOff(0); - } else { - mAutoBackLight.stopAutoBacklight(); - } -} - -int CTv::getAutoBackLight_on_off() -{ - if (mHdmiOutFbc) { - return Tv_FactoryGet_FBC_Auto_Backlight_OnOff(); - } else { - return mAutoBackLight.isAutoBacklightOn() ? 1 : 0; - } -} - -int CTv::getAverageLuma() -{ - return CTvin::getInstance()->VDIN_Get_avg_luma(); -} - -int CTv::setAutobacklightData(const char *value) -{ - const char *KEY = "haier.autobacklight.mp.data"; - - const char *keyValue = config_get_str(CFG_SECTION_TV, KEY, "null"); - if (strcmp(keyValue, value) != 0) { - config_set_str(CFG_SECTION_TV, KEY, value); - LOGD("%s, config string now set as: %s \n", __FUNCTION__, keyValue); - } else { - LOGD("%s, config string has been set as: %s \n", __FUNCTION__, keyValue); - } - return 0; -} - -int CTv::getAutoBacklightData(int *data) -{ - char datas[512] = {0}; - char delims[] = ","; - char *result = NULL; - const char *KEY = "haier.autobacklight.mp.data"; - int i = 0; - - if (NULL == data) { - LOGD("%s, data is null", __FUNCTION__); - return -1; - } - - const char *keyValue = config_get_str(CFG_SECTION_TV, KEY, (char *) "null"); - if (strcmp(keyValue, "null") == 0) { - LOGD("%s, value is NULL\n", __FUNCTION__); - return -1; - } - - strncpy(datas, keyValue, sizeof(datas) - 1); - result = strtok( datas, delims ); - while ( result != NULL ) { - char *pd = strstr(result, ":"); - if (pd != NULL) { - data[i] = strtol(pd + 1, NULL, 10 ); - i++; - } - result = strtok( NULL, delims ); - } - return i; -} - -/*********************** SSM start **********************/ -int CTv::Tv_SSMRestoreDefaultSetting() -{ - SSMRestoreDeviceMarkValues(); - AudioSSMRestoreDefaultSetting(); - CVpp::getInstance()->VPPSSMRestoreDefault(); - MiscSSMRestoreDefault(); - ReservedSSMRestoreDefault(); - SSMSaveCVBSStd ( 0 ); - SSMSaveLastSelectSourceInput ( SOURCE_TV ); - SSMSavePanelType ( 0 ); - //tvconfig default - saveDTVProgramID ( -1 ); - saveATVProgramID ( -1 ); - SSMSaveStandbyMode( 0 ); - return 0; -} - -int CTv::clearDbAllProgramInfoTable() -{ - return CTvDatabase::GetTvDb()->clearDbAllProgramInfoTable(); -} - -int CTv::Tv_SSMFacRestoreDefaultSetting() -{ - CVpp::getInstance()->VPPSSMFacRestoreDefault(); - AudioSSMRestoreDefaultSetting(); - MiscSSMFacRestoreDefault(); - return 0; -} -/*********************** SSM End **********************/ - -//not in CTv, not use lock -void CTv::setSourceSwitchAndPlay() -{ - int progID = 0; - CTvProgram prog; - LOGD ( "%s\n", __FUNCTION__ ); - static const int POWERON_SOURCE_TYPE_NONE = 0;//not play source - static const int POWERON_SOURCE_TYPE_LAST = 1;//play last save source - static const int POWERON_SOURCE_TYPE_SETTING = 2;//play ui set source - int to_play_source = -1; - int powerup_type = SSMReadPowerOnOffChannel(); - LOGD("read power on source type = %d", powerup_type); - if (powerup_type == POWERON_SOURCE_TYPE_NONE) { - return ; - } else if (powerup_type == POWERON_SOURCE_TYPE_LAST) { - to_play_source = SSMReadSourceInput(); - } else if (powerup_type == POWERON_SOURCE_TYPE_SETTING) { - to_play_source = SSMReadLastSelectSourceInput(); - } - SetSourceSwitchInput (( tv_source_input_t ) to_play_source ); - if ( to_play_source == SOURCE_TV ) { - progID = getATVProgramID(); - } else if ( to_play_source == SOURCE_DTV ) { - progID = getDTVProgramID(); - } - playProgramLock(progID); -} - -int CTv::startCC(int country, int src, int channel, int service) -{ - //turn_on_cc = true; - return mSubtitle.sub_start_atsc_cc((enum cc_param_country)country, (enum cc_param_source_type)src, channel, (enum cc_param_caption_type)service); -} - -int CTv::stopCC() -{ - //because cc,vchip data both come from vbi thread , here judge cc, vchip is whether both turn off - /*turn_on_cc = false; - if (config_get_int(CFG_SECTION_TV,"tv.vchip.enable", 0)) - { - return 0; //at ATV if vchip is on, turn off CC, just set flag not display CC, but vchip still running - }*/ - return mSubtitle.sub_stop_atsc_cc(); -} - -void CTv::printDebugInfo() -{ - print_version_info(); - LOGD("%s, TvAction = %x", __FUNCTION__, mTvAction); - LOGD("%s, TvRunStatus = %d", __FUNCTION__, mTvStatus); - LOGD("%s, TvCurSourceInput = %d", __FUNCTION__, m_source_input); - LOGD("%s, TvLastSourceInput = %d", __FUNCTION__, m_last_source_input); -} -//==============vchip end================================ - -//----------------DVR API============================ -void CTv::SetRecordFileName ( char *name ) -{ - mTvRec.SetRecordFileName (name); -} - -void CTv::StartToRecord() -{ - int progID = getDTVProgramID(); - mTvRec.StartRecord ( progID ); -} - -void CTv::StopRecording() -{ - mTvRec.StopRecord(); -} - -void CTv::SetRecCurTsOrCurProgram ( int sel ) -{ - mTvRec.SetRecCurTsOrCurProgram ( sel ); -} - -int CTv::GetDisplayResolutionConfig() -{ - return mAv.getVideoDisplayResolution(); -} - -int CTv::GetDisplayResolutionInfo() -{ - return Vpp_GetDisplayResolutionInfo(NULL); -} - -void CTv::onHDMIRxCECMessage(int msg_len, unsigned char msg_buf[]) -{ - TvEvent::HDMIRxCECEvent ev; - - int bufLen = sizeof(ev.mDataBuf) / sizeof(ev.mDataBuf[0]); - if (msg_len > bufLen) { - LOGE("%s, message len(%d) > buffer len(%d)", __FUNCTION__, msg_len, bufLen); - return; - } - - ev.mDataCount = msg_len; - for (int i = 0; i < msg_len; i++) { - ev.mDataBuf[i] = msg_buf[i]; - } - sendTvEvent(ev); -} - -int CTv::SendHDMIRxCECCustomMessage(unsigned char data_buf[]) -{ - return mHDMIRxCEC.SendCustomMessage(m_source_input, data_buf); -} - -int CTv::SendHDMIRxCECCustomMessageAndWaitReply(unsigned char data_buf[], unsigned char reply_buf[], int WaitCmd, int timeout) -{ - return mHDMIRxCEC.SendCustomMessageAndWaitReply(m_source_input, data_buf, reply_buf, WaitCmd, timeout); -} - -int CTv::SendHDMIRxCECBoradcastStandbyMessage(void) -{ - return mHDMIRxCEC.SendBoradcastStandbyMessage(m_source_input); -} - -int CTv::SendHDMIRxCECGiveCECVersionMessage(tv_source_input_t source_input, unsigned char data_buf[]) -{ - if (mHDMIRxCEC.processRefreshSrcDevice(source_input) == 0) { - return mHDMIRxCEC.SendGiveCECVersionMessage(source_input, data_buf); - } - - return -1; -} - -int CTv::SendHDMIRxCECGiveDeviceVendorIDMessage(tv_source_input_t source_input, unsigned char data_buf[]) -{ - if (mHDMIRxCEC.processRefreshSrcDevice(source_input) == 0) { - return mHDMIRxCEC.SendGiveDeviceVendorIDMessage(source_input, data_buf); - } - - return -1; -} - -int CTv::SendHDMIRxCECGiveOSDNameMessage(tv_source_input_t source_input, unsigned char data_buf[]) -{ - if (mHDMIRxCEC.processRefreshSrcDevice(source_input) == 0) { - return mHDMIRxCEC.SendGiveOSDNameMessage(source_input, data_buf); - } - - return -1; -} - -int CTv::GetHdmiHdcpKeyKsvInfo(int data_buf[]) -{ - return CTvin::getInstance()->get_hdmi_ksv_info(m_source_input, data_buf); -} - -bool CTv::hdmiOutWithFbc() -{ - const char *value = config_get_str(CFG_SECTION_TV, CFG_FBC_USED, "true"); - if (strcmp(value, "true") == 0) { - return true; - } - - return false; -} - -void CTv::onUpgradeStatus(int state, int param) -{ - TvEvent::UpgradeFBCEvent ev; - ev.mState = state; - ev.param = param; - sendTvEvent(ev); -} - -int CTv::StartUpgradeFBC(char *file_name, int mode, int upgrade_blk_size) -{ - if (mpUpgradeFBC != NULL) { - mpUpgradeFBC->SetUpgradeFileName(file_name); - mpUpgradeFBC->SetUpgradeMode(mode); - mpUpgradeFBC->SetUpgradeBlockSize(upgrade_blk_size); - mpUpgradeFBC->start(); - return 0; - } - - return -1; -} - -void CTv::onSerialCommunication(int dev_id, int rd_len, unsigned char data_buf[]) -{ - TvEvent::SerialCommunicationEvent ev; - - if (rd_len > CC_MAX_SERIAL_RD_BUF_LEN) { - LOGE("%s, rd_len(%d) > buffer len(%d)", __FUNCTION__, rd_len, CC_MAX_SERIAL_RD_BUF_LEN); - return; - } - - ev.mDevId = dev_id; - ev.mDataCount = rd_len; - for (int i = 0; i < rd_len; i++) { - ev.mDataBuf[i] = data_buf[i]; - } - sendTvEvent(ev); -} - -int CTv::StartHeadSetDetect() -{ - mHeadSet.startDetect(); - return 0; -} - -void CTv::onHeadSetDetect(int state, int para) -{ - TvEvent::HeadSetOf2d4GEvent ev; - if (state == 1) - property_set("audio.headset_plug.enable", "1"); - else - property_set("audio.headset_plug.enable", "0"); - ev.state = state; - ev.para = para; - sendTvEvent(ev); -} - -void CTv::onThermalDetect(int state) -{ - const char *value; - int val = 0; - static int preValue = -1; - - value = config_get_str ( CFG_SECTION_TV, CFG_TVIN_THERMAL_THRESHOLD_ENABLE, "null" ); - if ( strcmp ( value, "enable" ) == 0 ) { - value = config_get_str ( CFG_SECTION_TV, CFG_TVIN_THERMAL_THRESHOLD_VALUE, "null" ); - int threshold = atoi(value); - LOGD ( "%s, threshold value: %d\n", __FUNCTION__, threshold); - - if (state > threshold) { - const char *valueNormal = config_get_str ( CFG_SECTION_TV, CFG_TVIN_THERMAL_FBC_NORMAL_VALUE, "null" ); - val = atoi(valueNormal); - if (val == 0) { - val = 0x4210000; //normal default - } - LOGD ( "%s, current temp: %d set 1\n", __FUNCTION__, state); - } else { - const char *valueCold = config_get_str ( CFG_SECTION_TV, CFG_TVIN_THERMAL_FBC_COLD_VALUE, "null" ); - val = atoi(valueCold); - if (val == 0) { - val = 0x8210000; //cold default - } - LOGD ( "%s, current temp: 0x%x set 0\n", __FUNCTION__, state); - } - - if (preValue != val) { - LOGD ( "%s, pre value :0x%x, new value :0x%x, bypass\n", __FUNCTION__, preValue, val); - preValue = val; - Tv_FactorySet_FBC_Thermal_State(val); - } - } else { - LOGD ( "%s, tvin thermal threshold disable\n", __FUNCTION__); - } -} - -int CTv::SetDebugSerialOnOff(int on_off) -{ - if (on_off) { - property_set(UBOOTENV_CONSOLE, "ttyS0,115200n8"); - } else { - property_set(UBOOTENV_CONSOLE, "off"); - } - return 0; -} - -int CTv::GetDebugSerialOnOff() -{ - char prop[256] = {0}; - property_get(UBOOTENV_CONSOLE, prop, "null" ); - if (!strcmp(prop, "ttyS0,115200n8")) { - return 1; - } else { - return 0; - } -} - -int CTv::SetSerialSwitch(int dev_id, int switch_val) -{ - int tmp_ret = 0; - if (dev_id == SERIAL_A) { - if (switch_val == 0) { - tmp_ret |= mSerialA.stop(); - tmp_ret |= mSerialA.CloseModule(); - - tmp_ret |= system("start console"); - tmp_ret |= system("echo 7 > /proc/sys/kernel/printk"); - } else { - tmp_ret |= system("echo 0 > /proc/sys/kernel/printk"); - tmp_ret |= system("stop console"); - - mSerialA.OpenModule(dev_id); - tmp_ret |= mSerialA.start(); - } - } else if (dev_id == SERIAL_B) { - if (switch_val == 0) { - tmp_ret |= mSerialB.stop(); - tmp_ret |= mSerialB.CloseModule(); - } else { - mSerialB.OpenModule(dev_id); - tmp_ret = mSerialB.start(); - } - } else if (dev_id == SERIAL_C) { - if (switch_val == 0) { - tmp_ret |= mSerialC.stop(); - tmp_ret |= mSerialC.CloseModule(); - } else { - mSerialC.OpenModule(dev_id); - tmp_ret = mSerialC.start(); - } - } - - return tmp_ret; -} - -int CTv::SendSerialData(int dev_id, int data_len, unsigned char data_buf[]) -{ - int tmp_ret = 0; - - if (dev_id == SERIAL_A) { - tmp_ret = mSerialA.sendData(data_len, data_buf); - } else if (dev_id == SERIAL_B) { - tmp_ret = mSerialB.sendData(data_len, data_buf); - } else if (dev_id == SERIAL_C) { - tmp_ret = mSerialC.sendData(data_len, data_buf); - } - - return tmp_ret; -} - -int CTv::ChannelExport(const char *destPath) -{ - char tmp[256]; - if (destPath == NULL) { - destPath = "/storage/external_storage/sda1/"; - } - - sprintf(tmp, "cp %s %s", DEF_VALUE_CAHNNEL_DB, destPath); - if (system(tmp) >= 0) { - LOGD("%s, copy dtv.db from /param to udisk success !", __FUNCTION__); - system("sync"); - FILE *fp = fopen(destPath, "r"); - if (fp != NULL) { - fclose(fp); - fp = NULL; - return 0; - } - } - - return -1; -} - -int CTv::ChannelImport(const char *srcPath) -{ - if (srcPath == NULL) { - srcPath = "/storage/external_storage/sda1/dvb.db"; - } - - if (Tv_Utils_IsFileExist(srcPath)) { - char tmp[256]; - const char *destPath = config_get_str(CFG_SECTION_TV, CFG_CAHNNEL_DB, (char *) DEF_VALUE_CAHNNEL_DB); - - LOGD("%s, file exist !" , srcPath); - CTvDatabase::GetTvDb()->UnInitTvDb(); - sprintf(tmp, "rm %s", destPath); - if (system(tmp) >= 0) { - LOGD("%s, rm %s success !", __FUNCTION__, destPath); - memset(tmp, 0, sizeof(tmp)); - sprintf(tmp, "cp %s %s", srcPath, destPath); - if (system(tmp) >= 0) { - LOGD("%s, copy to %s success !", srcPath, destPath); - memset(tmp, 0, sizeof(tmp)); - sprintf(tmp, "chmod 777 %s", destPath); - if (system(tmp) >= 0) { - LOGD("chmod 777 %s success !", destPath); - system("sync"); - CTvDatabase::GetTvDb()->InitTvDb(TV_DB_PATH); - return 0; - } else { - LOGD("%s, %s chmod failed !", __FUNCTION__, destPath); - return -1; - } - } else { - LOGD("%s, copy dtv.db from udisk to %s failed !", __FUNCTION__, destPath); - return -1; - } - } else { - LOGD("%s, rm %s failed !", __FUNCTION__, destPath); - return -2; - } - } else { - LOGD("%s, dtv.db file does not exist in the udisk!" , srcPath); - return -2; - } -} - -int CTv::Tv_GetProjectInfo(project_info_t *ptrInfo) -{ - return GetProjectInfo(ptrInfo, fbcIns); -} - -int CTv::Tv_GetPlatformType() -{ - return mHdmiOutFbc ? 1 : 0; -} - -int CTv::Tv_HandeHDMIEDIDFilePathConfig() -{ - char edid_path[256]; - char edid_path_cfg[256]; - bool fileExist = false; - - const char *value = config_get_str(CFG_SECTION_TV, CFG_SSM_HDMI_EDID_EN, "null"); - if (strtoul(value, NULL, 10) == 1) { - LOGD( "%s, get config [%s]:[%s]\n", __FUNCTION__, CFG_SSM_HDMI_EDID_EN, value); - //get hdmi edid use mode - char propValue[256] = {0}; - property_get(UBOOTENV_OUTPUTMODE, propValue, "null"); - LOGD( "%s, get property [%s]:[%s]\n", __FUNCTION__, UBOOTENV_OUTPUTMODE, propValue); - if (strcmp(propValue, "null") != 0) { - fileExist = true; - - config_set_str ( CFG_SECTION_TV, CS_HDMI_EDID_USE_CFG, propValue); - //set file's path for hdmi edid of each port - for (int i = 1; i <= SSM_HDMI_PORT_MAX; i++) { - memset( edid_path, '\0', 256); - memset( edid_path_cfg, '\0', 256); - sprintf(edid_path, "/system/etc/%s_port%d.bin", propValue, i); - sprintf(edid_path_cfg, "ssm.handle.hdmi.port%d.edid.file.path", i); - if (access(edid_path, 0) < 0) { - fileExist = false; - break; - } - config_set_str(CFG_SECTION_TV, edid_path_cfg, edid_path); - } - } - - if (!fileExist) { - //set default hdmi edid - config_set_str(CFG_SECTION_TV, CS_HDMI_EDID_USE_CFG, "hdmi_edid"); - //set file's path for hdmi edid of each port - for (int i = 1; i <= SSM_HDMI_PORT_MAX; i++) { - memset(edid_path, '\0', 256); - memset(edid_path_cfg, '\0', 256); - sprintf(edid_path, "/system/etc/%s_port%d.bin", "hdmi_edid", i); - sprintf(edid_path_cfg, "ssm.handle.hdmi.port%d.edid.file.path", i); - - value = config_get_str(CFG_SECTION_TV, edid_path_cfg, "null"); - if (strcmp(value, edid_path) != 0) { - config_set_str(CFG_SECTION_TV, edid_path_cfg, edid_path); - } - } - } - - mSetHdmiEdid = true; - } - return 0; -} - -int CTv::Tv_SetDDDRCMode(tv_source_input_t source_input) -{ - if (source_input == SOURCE_DTV) { - if (GetPlatformHaveDDFlag() == 1) { - Tv_Utils_SetFileAttrStr(SYS_AUIDO_DSP_AC3_DRC, (char *)"drcmode 3"); - } - } else { - if (GetPlatformHaveDDFlag() == 1) { - Tv_Utils_SetFileAttrStr(SYS_AUIDO_DSP_AC3_DRC, (char *)"drcmode 2"); - } - } - return 0; -} - -//PQ -int CTv::Tv_SetBrightness ( int brightness, tv_source_input_type_t source_type, int is_save ) -{ - return CVpp::getInstance()->SetBrightness(brightness, (tv_source_input_type_t)source_type, mSigDetectThread.getCurSigInfo().fmt, mSigDetectThread.getCurSigInfo().trans_fmt, Check2Dor3D(m_mode_3d, mSigDetectThread.getCurSigInfo().trans_fmt ), is_save); -} - -int CTv::Tv_GetBrightness ( tv_source_input_type_t source_type ) -{ - return CVpp::getInstance()->GetBrightness((tv_source_input_type_t)source_type); -} - -int CTv::Tv_SaveBrightness ( int brightness, tv_source_input_type_t source_type ) -{ - return SSMSaveBrightness ( source_type, brightness ); -} - -int CTv::Tv_SetContrast ( int contrast, tv_source_input_type_t source_type, int is_save ) -{ - return CVpp::getInstance()->SetContrast(contrast, (tv_source_input_type_t)source_type, mSigDetectThread.getCurSigInfo().fmt, mSigDetectThread.getCurSigInfo().trans_fmt, Check2Dor3D(m_mode_3d, mSigDetectThread.getCurSigInfo().trans_fmt ), is_save); -} - -int CTv::Tv_GetContrast ( tv_source_input_type_t source_type ) -{ - return CVpp::getInstance()->GetContrast((tv_source_input_type_t)source_type); -} - -int CTv::Tv_SaveContrast ( int contrast, tv_source_input_type_t source_type ) -{ - return SSMSaveContrast ( source_type, contrast ); -} - -int CTv::Tv_SetSaturation ( int satuation, tv_source_input_type_t source_type, tvin_sig_fmt_t fmt, int is_save ) -{ - return CVpp::getInstance()->SetSaturation(satuation, (tv_source_input_type_t)source_type, (tvin_sig_fmt_t)fmt, mSigDetectThread.getCurSigInfo().trans_fmt, Check2Dor3D(m_mode_3d, mSigDetectThread.getCurSigInfo().trans_fmt ), is_save); -} - -int CTv::Tv_GetSaturation ( tv_source_input_type_t source_type ) -{ - return CVpp::getInstance()->GetSaturation((tv_source_input_type_t)source_type); -} - -int CTv::Tv_SaveSaturation ( int satuation, tv_source_input_type_t source_type ) -{ - return SSMSaveSaturation ( source_type, satuation ); -} - -int CTv::Tv_SetHue ( int hue, tv_source_input_type_t source_type, tvin_sig_fmt_t fmt, int is_save ) -{ - return CVpp::getInstance()->SetHue(hue, (tv_source_input_type_t)source_type, (tvin_sig_fmt_t)fmt, mSigDetectThread.getCurSigInfo().trans_fmt, Check2Dor3D(m_mode_3d, mSigDetectThread.getCurSigInfo().trans_fmt ), is_save); -} - -int CTv::Tv_GetHue ( tv_source_input_type_t source_type ) -{ - return CVpp::getInstance()->GetHue((tv_source_input_type_t)source_type); -} - -int CTv::Tv_SaveHue ( int hue, tv_source_input_type_t source_type ) -{ - return SSMSaveHue ( source_type, hue ); -} - -int CTv::Tv_SetPQMode ( vpp_picture_mode_t mode, tv_source_input_type_t source_type, int is_save ) -{ - return CVpp::getInstance()->SetPQMode((vpp_picture_mode_t)mode, (tv_source_input_type_t)source_type, mSigDetectThread.getCurSigInfo().fmt, mSigDetectThread.getCurSigInfo().trans_fmt, Check2Dor3D(m_mode_3d, mSigDetectThread.getCurSigInfo().trans_fmt ), is_save); -} - -vpp_picture_mode_t CTv::Tv_GetPQMode ( tv_source_input_type_t source_type ) -{ - return CVpp::getInstance()->GetPQMode((tv_source_input_type_t)source_type); -} - -int CTv::Tv_SavePQMode ( vpp_picture_mode_t mode, tv_source_input_type_t source_type ) -{ - return CVpp::getInstance()->SavePQMode ( mode, source_type ); -} - -int CTv::Tv_SetSharpness ( int value, tv_source_input_type_t source_type, int en, int is_save ) -{ - return CVpp::getInstance()->SetSharpness(value, (tv_source_input_type_t)source_type, en, Check2Dor3D(m_mode_3d, mSigDetectThread.getCurSigInfo().trans_fmt ), mSigDetectThread.getCurSigInfo().fmt, mSigDetectThread.getCurSigInfo().trans_fmt, is_save); -} - -int CTv::Tv_GetSharpness ( tv_source_input_type_t source_type ) -{ - return CVpp::getInstance()->GetSharpness((tv_source_input_type_t)source_type); -} - -int CTv::Tv_SaveSharpness ( int value, tv_source_input_type_t source_type ) -{ - return SSMSaveSharpness ( source_type, value ); -} - -int CTv::Tv_SetBacklight ( int value, tv_source_input_type_t source_type, int is_save ) -{ - if (mHdmiOutFbc) { - return Tv_FactorySet_FBC_Backlight(value); - } else { - return CVpp::getInstance()->SetBacklight(value, (tv_source_input_type_t)source_type, is_save); - } -} - -int CTv::Tv_GetBacklight ( tv_source_input_type_t source_type ) -{ - if (mHdmiOutFbc) { - return Tv_FactoryGet_FBC_Backlight(); - } else { - return CVpp::getInstance()->GetBacklight((tv_source_input_type_t)source_type); - } -} - -int CTv::Tv_SaveBacklight ( int value, tv_source_input_type_t source_type ) -{ - return CVpp::getInstance()->SaveBacklight ( value, source_type ); -} - -int CTv::Tv_SetBacklight_Switch ( int value ) -{ - if (mHdmiOutFbc) { - return Tv_FactorySet_FBC_backlight_onoff(value); - } else { - return CVpp::getInstance()->VPP_SetBackLight_Switch(value); - } -} - -int CTv::Tv_GetBacklight_Switch ( void ) -{ - if (mHdmiOutFbc) { - return Tv_FactoryGet_FBC_backlight_onoff(); - } else { - return CVpp::getInstance()->VPP_GetBackLight_Switch(); - } -} - -int CTv::Tv_SetColorTemperature ( vpp_color_temperature_mode_t mode, tv_source_input_type_t source_type, int is_save ) -{ - if (mHdmiOutFbc) { - return Tv_FactorySet_FBC_ColorTemp_Mode(mode); - } else { - return CVpp::getInstance()->SetColorTemperature((vpp_color_temperature_mode_t)mode, (tv_source_input_type_t)source_type, is_save); - } -} - -vpp_color_temperature_mode_t CTv::Tv_GetColorTemperature ( tv_source_input_type_t source_type ) -{ - if (mHdmiOutFbc) { - return (vpp_color_temperature_mode_t)Tv_FactoryGet_FBC_ColorTemp_Mode(); - } else { - return CVpp::getInstance()->GetColorTemperature((tv_source_input_type_t)source_type); - } -} - -int CTv::Tv_SaveColorTemperature ( vpp_color_temperature_mode_t mode, tv_source_input_type_t source_type ) -{ - return CVpp::getInstance()->SaveColorTemp ( mode, source_type ); -} - -int CTv::Tv_SetDisplayMode ( vpp_display_mode_t mode, tv_source_input_type_t source_type, tvin_sig_fmt_t fmt, int is_save ) -{ - int ret = 0; - if (m_mode_3d == VIDEO_3D_MODE_DISABLE) { - ret = SetDisplayMode((vpp_display_mode_t)mode, (tv_source_input_type_t)source_type, (tvin_sig_fmt_t)fmt); - } else { //3D - ret = SetDisplayMode(VPP_DISPLAY_MODE_PERSON, (tv_source_input_type_t)source_type, (tvin_sig_fmt_t)fmt); - } - if (ret == 0) { - if (is_save == 1) { - ret = ret | SSMSaveDisplayMode ( source_type, (int)mode ); - } - } - return ret; -} - -int CTv::SetDisplayMode ( vpp_display_mode_t display_mode, tv_source_input_type_t source_type, tvin_sig_fmt_t sig_fmt ) -{ - LOGD("SetDisplayMode, display_mode = %d, source_type = %d fmt = %d tranfmt = %d\n", display_mode, source_type, sig_fmt, mSigDetectThread.getCurSigInfo().trans_fmt); - - tvin_cutwin_t cutwin = CVpp::getInstance()->GetOverscan ( source_type, sig_fmt, Check2Dor3D(m_mode_3d, mSigDetectThread.getCurSigInfo().trans_fmt ), mSigDetectThread.getCurSigInfo().trans_fmt); - LOGD("SetDisplayMode , get crop %d %d %d %d \n", cutwin.vs, cutwin.hs, cutwin.ve, cutwin.he); - int video_screen_mode = CAv::VIDEO_WIDEOPTION_16_9; - tvin_window_pos_t win_pos; - int display_resolution = Vpp_GetDisplayResolutionInfo(&win_pos); - - switch ( display_mode ) { - case VPP_DISPLAY_MODE_169: - video_screen_mode = CAv::VIDEO_WIDEOPTION_16_9; - break; - case VPP_DISPLAY_MODE_MODE43: - video_screen_mode = CAv::VIDEO_WIDEOPTION_4_3; - break; - case VPP_DISPLAY_MODE_NORMAL: - video_screen_mode = CAv::VIDEO_WIDEOPTION_NORMAL; - break; - case VPP_DISPLAY_MODE_FULL: - video_screen_mode = CAv::VIDEO_WIDEOPTION_NONLINEAR; - CVpp::getInstance()->VPP_SetNonLinearFactor ( 20 ); - //CVpp::getInstance()->VPP_SetNonLinearFactor ( 20 ); - break; - case VPP_DISPLAY_MODE_CROP_FULL: - cutwin.vs = 0; - cutwin.hs = 0; - cutwin.ve = 0; - cutwin.he = 0; - break; - case VPP_DISPLAY_MODE_NOSCALEUP: - video_screen_mode = CAv::VIDEO_WIDEOPTION_NORMAL_NOSCALEUP; - break; - case VPP_DISPLAY_MODE_FULL_REAL: - video_screen_mode = CAv::VIDEO_WIDEOPTION_16_9; //added for N360 by haifeng.liu - break; - case VPP_DISPLAY_MODE_PERSON: - video_screen_mode = CAv::VIDEO_WIDEOPTION_FULL_STRETCH; - cutwin.vs = cutwin.vs + 20; - cutwin.ve = cutwin.ve + 20; - break; - case VPP_DISPLAY_MODE_MOVIE: - video_screen_mode = CAv::VIDEO_WIDEOPTION_FULL_STRETCH; - cutwin.vs = cutwin.vs + 40; - cutwin.ve = cutwin.ve + 40; - break; - case VPP_DISPLAY_MODE_CAPTION: - video_screen_mode = CAv::VIDEO_WIDEOPTION_FULL_STRETCH; - cutwin.vs = cutwin.vs + 55; - cutwin.ve = cutwin.ve + 55; - break; - case VPP_DISPLAY_MODE_ZOOM: - video_screen_mode = CAv::VIDEO_WIDEOPTION_FULL_STRETCH; - cutwin.vs = cutwin.vs + 70; - cutwin.ve = cutwin.ve + 70; - break; - default: - break; - } - if (source_type == SOURCE_TYPE_DTV || source_type == SOURCE_TYPE_MPEG) { - cutwin.vs = cutwin.vs + 12; - cutwin.ve = cutwin.ve + 12; - cutwin.hs = cutwin.hs + 12; - cutwin.he = cutwin.he + 12; - } - if (source_type == SOURCE_TYPE_HDMI) { - if ((IsDVISignal()) || (CTvin::getInstance()->GetITContent() == 1) || - (display_mode == VPP_DISPLAY_MODE_FULL_REAL)) { - cutwin.vs = 0; - cutwin.hs = 0; - cutwin.ve = 0; - cutwin.he = 0; - } - } - - //mAv.setVideoAxis ( win_pos.x1, win_pos.y1, win_pos.x2, win_pos.y2 ); - mAv.setVideoScreenMode(video_screen_mode); - CVpp::getInstance()->VPP_SetVideoCrop(cutwin.vs, cutwin.hs, cutwin.ve, cutwin.he); - return 0; -} - -vpp_display_mode_t CTv::Tv_GetDisplayMode ( tv_source_input_type_t source_type ) -{ - return CVpp::getInstance()->GetDisplayMode((tv_source_input_type_t)source_type); -} - -int CTv::Tv_SaveDisplayMode ( vpp_display_mode_t mode, tv_source_input_type_t source_type ) -{ - return SSMSaveDisplayMode ( source_type, (int)mode ); -} - -int CTv::Tv_SetNoiseReductionMode ( vpp_noise_reduction_mode_t mode, tv_source_input_type_t source_type, int is_save ) -{ - return CVpp::getInstance()->SetNoiseReductionMode((vpp_noise_reduction_mode_t)mode, (tv_source_input_type_t)source_type, mSigDetectThread.getCurSigInfo().fmt, Check2Dor3D(m_mode_3d, mSigDetectThread.getCurSigInfo().trans_fmt ), mSigDetectThread.getCurSigInfo().trans_fmt, is_save); -} - -int CTv::Tv_SaveNoiseReductionMode ( vpp_noise_reduction_mode_t mode, tv_source_input_type_t source_type ) -{ - return CVpp::getInstance()->SaveNoiseReductionMode ( mode, source_type ); -} - -int CTv::Tv_Set2k4k_ScalerUp_Mode ( int value ) -{ - int ret = 0, fmt_hd_sd = 0; - int nodeVal = 0; - char s[8]; - - LOGD("%s, value [%d]\n", __FUNCTION__ , value); - - if ( CTvin::Tvin_SourceInputToSourceInputType(m_source_input) != SOURCE_TYPE_HDMI && - CTvin::Tvin_SourceInputToSourceInputType(m_source_input) != SOURCE_TYPE_AV && - CTvin::Tvin_SourceInputToSourceInputType(m_source_input) != SOURCE_TYPE_TV) { - int fd = open(SYS_VIDEO_FRAME_HEIGHT, O_RDONLY); - if (fd <= 0) { - LOGE("open %s ERROR!!error = -%s- \n",SYS_VIDEO_FRAME_HEIGHT, strerror ( errno )); - return -1; - } - read(fd, s, sizeof(s)); - close(fd); - nodeVal = atoi(s); - if (nodeVal < 900) { - fmt_hd_sd = 0; - } else { - fmt_hd_sd = 1; - } - } else if ( CTvin::Tvin_SourceInputToSourceInputType(m_source_input) == SOURCE_TYPE_HDMI ) { - if (isSDFmtInHdmi()) { - fmt_hd_sd = 0; - } else { - fmt_hd_sd = 1; - } - } else if ( CTvin::Tvin_SourceInputToSourceInputType(m_source_input) == SOURCE_TYPE_AV || - CTvin::Tvin_SourceInputToSourceInputType(m_source_input) == SOURCE_TYPE_TV) { - fmt_hd_sd = 0; - } - - switch (value) { - case 1: // on - if (fmt_hd_sd) { - ret = Tv_Utils_SetFileAttrStr(SYS_VIDEO_SCALER_PATH_SEL, (char *)"0"); - } else { - ret = Tv_Utils_SetFileAttrStr(SYS_VIDEO_SCALER_PATH_SEL, (char *)"1"); - } - break; - - case 0: // off - default: - if (fmt_hd_sd) { - ret = Tv_Utils_SetFileAttrStr(SYS_VIDEO_SCALER_PATH_SEL, (char *)"1"); - } else { - ret = Tv_Utils_SetFileAttrStr(SYS_VIDEO_SCALER_PATH_SEL, (char *)"0"); - } - break; - } - return ret; -} - -int CTv::Tv_Get2k4k_ScalerUp_Mode ( void ) -{ - char attrV[64]; - int ret = 0, fmt_hd_sd = 0; - int nodeVal = 0; - char s[8]; - - memset (attrV, '\0', 64); - - if ( CTvin::Tvin_SourceInputToSourceInputType(m_source_input) != SOURCE_TYPE_HDMI && - CTvin::Tvin_SourceInputToSourceInputType(m_source_input) != SOURCE_TYPE_AV && - CTvin::Tvin_SourceInputToSourceInputType(m_source_input) != SOURCE_TYPE_TV) { - int fd = open(SYS_VIDEO_FRAME_HEIGHT, O_RDONLY); - if (fd <= 0) { - LOGE("open %s ERROR!!error = -%s- \n",SYS_VIDEO_FRAME_HEIGHT, strerror ( errno )); - return -1; - } - read(fd, s, sizeof(s)); - close(fd); - nodeVal = atoi(s); - if (nodeVal < 900) { - fmt_hd_sd = 0; - } else { - fmt_hd_sd = 1; - } - } else if ( CTvin::Tvin_SourceInputToSourceInputType(m_source_input) == SOURCE_TYPE_HDMI ) { - if (isSDFmtInHdmi()) { - fmt_hd_sd = 0; - } else { - fmt_hd_sd = 1; - } - } else if ( CTvin::Tvin_SourceInputToSourceInputType(m_source_input) == SOURCE_TYPE_AV || CTvin::Tvin_SourceInputToSourceInputType(m_source_input) == SOURCE_TYPE_TV) { - fmt_hd_sd = 0; - } - - Tv_Utils_GetFileAttrStr(SYS_VIDEO_SCALER_PATH_SEL, 64, attrV); - if (strncasecmp(attrV, "1", strlen ("1")) == 0) { - if (fmt_hd_sd) { - ret = 0; - } else { - ret = 1; - } - } else if (strncasecmp(attrV, "0", strlen ("0")) == 0) { - if (fmt_hd_sd) { - ret = 1; - } else { - ret = 0; - } - } else { - ret = -1; - } - - return ret; -} - -int CTv::Tv_SetSplitScreenDemoStatus(tv_source_input_type_t source_type, int onoff_status) -{ - int ret = 0; - LOGD("%s, split screen demo status source[%d],onoff_stauts[%d]\n", __FUNCTION__ , source_type, onoff_status); - if (1 == onoff_status) { - ret = Tv_Utils_SetFileAttrStr(SYS_DROILOGIC_DEBUG, (char *)"w 0x503c0 v 0x31d6");//sharpness screen left - ret |= Tv_Utils_SetFileAttrStr(SYS_DROILOGIC_DEBUG, (char *)"w 0x07 v 0x174d");//nr screen left - } else if (0 == onoff_status) { - ret = Tv_Utils_SetFileAttrStr(SYS_DROILOGIC_DEBUG, (char *)"w 0x503c0 v 0x31d6");//sharpness screen left - ret |= Tv_Utils_SetFileAttrStr(SYS_DROILOGIC_DEBUG, (char *)"w 0x07 v 0x174d");//nr screen left - } - - if (fbcIns != NULL && 0 == ret) { - ret |= fbcIns->cfbc_SET_SPLIT_SCREEN_DEMO(COMM_DEV_SERIAL, onoff_status); - } - - return ret; -} - -int CTv::Tv_GetSplitScreenDemoStatus(tv_source_input_type_t source_type) -{ - source_type = source_type; - return 0; -} - -vpp_noise_reduction_mode_t CTv::Tv_GetNoiseReductionMode ( tv_source_input_type_t source_type ) -{ - return CVpp::getInstance()->GetNoiseReductionMode((tv_source_input_type_t)source_type); -} - -/** - * @parameter mode : 0:sharpness; 1:NR - * - 1.sharpness分屏(可以控制宽度) - 分屏大小 寄存器范围是0x50000 冿x50780,左效果的范围越来越大?0x70780 冿x70000也是一枿 - 左右调换控制 bit 17. 开僿控冿bit 16. 0-11bit 是控制宽度的。范围是0-0x780?920像素? - 左做效果处理 echo w 0x503c0 v 0x31d6 > /sys/class/amlogic/debug - 右做效果处理 echo w 0x703c0 v 0x31d6 > /sys/class/amlogic/debug - echo w 0x403c0 v 0x31d6 > /sys/class/amlogic/debug - - 2. NR分屏(不能控制宽度) - 左做效果处理 echo w 0x07 v 0x174d > /sys /class/amlogic/debug - 右做效果处理 echo w 0x70 v 0x174d > /sys /class/amlogic/debug - 偿 echo w 0x77 v 0x174d > /sys/class/amlogic/debug - */ -int CTv::Tv_SplitScreenEffect(int mode, int width, int reverse) -{ - int ret = -1; - - if (mode == 0) { - if (width == 0) {//close - ret = CVpp::getInstance()->VPP_SplitScreenEffect(0x403c0, 0x31d6); - } else { - int val = 0; - if (reverse == 0) {//left effect - val = width + 0x50000; - } else {//right effect - val = 0x70780 - width; - } - ret = CVpp::getInstance()->VPP_SplitScreenEffect(val, 0x31d6); - } - } else if (mode == 1) { - if (width == 0) {//close - ret = CVpp::getInstance()->VPP_SplitScreenEffect(0x77, 0x174d); - } else { - if (reverse == 0) - ret = CVpp::getInstance()->VPP_SplitScreenEffect(0x07, 0x174d); - else - ret = CVpp::getInstance()->VPP_SplitScreenEffect(0x70, 0x174d); - } - } else if (mode == 2) { - } - - return ret; -} - -int CTv::Tv_FactorySetPQMode_Brightness ( int source_type, int pq_mode, int brightness ) -{ - return CVpp::getInstance()->FactorySetPQMode_Brightness(source_type, pq_mode, brightness); -} - -int CTv::Tv_FactoryGetPQMode_Brightness ( int source_type, int pq_mode ) -{ - return CVpp::getInstance()->FactoryGetPQMode_Brightness(source_type, pq_mode); -} - -int CTv::Tv_FactorySetPQMode_Contrast ( int source_type, int pq_mode, int contrast ) -{ - return CVpp::getInstance()->FactorySetPQMode_Contrast(source_type, pq_mode, contrast); -} - -int CTv::Tv_FactoryGetPQMode_Contrast ( int source_type, int pq_mode ) -{ - return CVpp::getInstance()->FactoryGetPQMode_Contrast(source_type, pq_mode); -} - -int CTv::Tv_FactorySetPQMode_Saturation ( int source_type, int pq_mode, int saturation ) -{ - return CVpp::getInstance()->FactorySetPQMode_Saturation(source_type, pq_mode, saturation); -} - -int CTv::Tv_FactoryGetPQMode_Saturation ( int source_type, int pq_mode ) -{ - return CVpp::getInstance()->FactoryGetPQMode_Saturation(source_type, pq_mode); -} - -int CTv::Tv_FactorySetPQMode_Hue ( int source_type, int pq_mode, int hue ) -{ - return CVpp::getInstance()->FactorySetPQMode_Hue(source_type, pq_mode, hue); -} - -int CTv::Tv_FactoryGetPQMode_Hue ( int source_type, int pq_mode ) -{ - return CVpp::getInstance()->FactoryGetPQMode_Hue(source_type, pq_mode); -} - -int CTv::Tv_FactorySetPQMode_Sharpness ( int source_type, int pq_mode, int sharpness ) -{ - return CVpp::getInstance()->FactorySetPQMode_Sharpness(source_type, pq_mode, sharpness); -} - -int CTv::Tv_FactoryGetPQMode_Sharpness ( int source_type, int pq_mode ) -{ - return CVpp::getInstance()->FactoryGetPQMode_Sharpness(source_type, pq_mode); -} - -int CTv::GetColorTemperatureParams ( vpp_color_temperature_mode_t Tempmode, tcon_rgb_ogo_t *params ) -{ - if (mHdmiOutFbc) { - int ret = Tv_FactoryGet_FBC_ColorTemp_Batch((vpp_color_temperature_mode_t)Tempmode, params); - params->r_gain = Tv_FactoryWhiteBalanceFormatOutputFbcGainParams(params->r_gain); - params->g_gain = Tv_FactoryWhiteBalanceFormatOutputFbcGainParams(params->g_gain); - params->b_gain = Tv_FactoryWhiteBalanceFormatOutputFbcGainParams(params->b_gain); - params->r_post_offset = Tv_FactoryWhiteBalanceFormatOutputFbcOffsetParams(params->r_post_offset); - params->g_post_offset = Tv_FactoryWhiteBalanceFormatOutputFbcOffsetParams(params->g_post_offset); - params->b_post_offset = Tv_FactoryWhiteBalanceFormatOutputFbcOffsetParams(params->b_post_offset); - return ret; - } else { - return CVpp::getInstance()->GetColorTemperatureParams(Tempmode, params); - } -} - -int CTv::Tv_FactorySetTestPattern ( int pattern ) -{ - switch ( pattern ) { - case VPP_TEST_PATTERN_NONE: - mAv.SetVideoScreenColor ( 3, 16, 128, 128 ); - break; - - case VPP_TEST_PATTERN_RED: - mAv.SetVideoScreenColor ( 0, 81, 90, 240 ); - break; - - case VPP_TEST_PATTERN_GREEN: - mAv.SetVideoScreenColor ( 0, 145, 54, 34 ); - break; - - case VPP_TEST_PATTERN_BLUE: - mAv.SetVideoScreenColor ( 0, 41, 240, 110 ); - break; - - case VPP_TEST_PATTERN_WHITE: - mAv.SetVideoScreenColor ( 0, 235, 128, 128 ); - break; - - case VPP_TEST_PATTERN_BLACK: - mAv.SetVideoScreenColor ( 0, 16, 128, 128 ); - break; - - default: - return -1; - } - return SSMSaveTestPattern ( pattern ); -} - -int CTv::Tv_FactoryGetTestPattern ( void ) -{ - return CVpp::getInstance()->FactoryGetTestPattern(); -} - -int CTv::Tv_FactorySetScreenColor ( int vdin_blending_mask, int y, int u, int v ) -{ - return mAv.SetVideoScreenColor ( vdin_blending_mask, y, u, v ); -} - -int CTv::Tv_FactoryResetPQMode ( void ) -{ - return CVpp::getInstance()->FactoryResetPQMode(); -} - -int CTv::Tv_FactoryResetColorTemp ( void ) -{ - return CVpp::getInstance()->FactoryResetColorTemp(); -} - -int CTv::Tv_FactorySetParamsDefault ( void ) -{ - return CVpp::getInstance()->FactorySetParamsDefault(); -} - -int CTv::Tv_FactorySetDDRSSC ( int step ) -{ - return CVpp::getInstance()->FactorySetDDRSSC(step); -} - -int CTv::Tv_FactoryGetDDRSSC ( void ) -{ - return CVpp::getInstance()->FactoryGetDDRSSC(); -} - -int CTv::Tv_FactorySetLVDSSSC ( int step ) -{ - return CVpp::getInstance()->FactorySetLVDSSSC(step); -} - -int CTv::Tv_FactoryGetLVDSSSC ( void ) -{ - return CVpp::getInstance()->FactoryGetLVDSSSC(); -} - -void CTv::Tv_Spread_Spectrum() -{ - int value = 0; - value = CVpp::getInstance()->FactoryGetLVDSSSC(); - CVpp::getInstance()->FactorySetLVDSSSC(value); -} - -int CTv::Tv_FactorySetNolineParams ( int noline_params_type, int source_type, noline_params_t noline_params ) -{ - return CVpp::getInstance()->FactorySetNolineParams(noline_params_type, source_type, noline_params); -} - -noline_params_t CTv::Tv_FactoryGetNolineParams ( int noline_params_type, int source_type ) -{ - return CVpp::getInstance()->FactoryGetNolineParams(noline_params_type, source_type); -} - -int CTv::Tv_FactorySetOverscan ( int source_type, int fmt, int status_3d, int trans_fmt, tvin_cutwin_t cutwin_t ) -{ - //tvin_cutwin_t cutwin_t = CVpp::getInstance()->Tv_FactoryGetOverscan(source_type, fmt, status_3d, trans_fmt); - CVpp::getInstance()->FactorySetOverscan(source_type, fmt, status_3d, trans_fmt, cutwin_t); - //} else { -#if 0 - char val_buf[256]; - memset(val_buf, '\0', 256); - LOGD("%s,%d: %d,%d,%d,%d", __FUNCTION__, __LINE__, ( int ) cutwin_t.vs, ( int ) cutwin_t.hs, ( int ) cutwin_t.ve, ( int ) cutwin_t.he); - sprintf(val_buf, "%d,%d,%d,%d", ( int ) cutwin_t.vs, ( int ) cutwin_t.hs, ( int ) cutwin_t.ve, ( int ) cutwin_t.he ); - config_set_str(CFG_SECTION_TV, "vpp.overscan.dtv", val_buf); - //} -#endif - return CVpp::getInstance()->VPP_SetVideoCrop ( ( int ) cutwin_t.vs, ( int ) cutwin_t.hs, ( int ) cutwin_t.ve, ( int ) cutwin_t.he ); -} - -tvin_cutwin_t CTv::Tv_FactoryGetOverscan ( int source_type, int fmt, int status_3d, int trans_fmt ) -{ - status_3d = status_3d; - return CVpp::getInstance()->FactoryGetOverscan(source_type, fmt, Check2Dor3D(m_mode_3d, (tvin_trans_fmt_t)trans_fmt), trans_fmt); -#if 0 - else { - tvin_cutwin_t cutwin; - int ret = 0; - char tmp_buf[16]; - tmp_buf[0] = 0; - - if ((ret |= cfg_get_one_item("vpp.overscan.dtv", ",", 0, tmp_buf)) == 0) { - cutwin.vs = strtol(tmp_buf, NULL, 10); - } - if ((ret |= cfg_get_one_item("vpp.overscan.dtv", ",", 1, tmp_buf)) == 0) { - cutwin.hs = strtol(tmp_buf, NULL, 10); - } - if ((ret |= cfg_get_one_item("vpp.overscan.dtv", ",", 2, tmp_buf)) == 0) { - cutwin.ve = strtol(tmp_buf, NULL, 10); - } - if ((ret |= cfg_get_one_item("vpp.overscan.dtv", ",", 3, tmp_buf)) == 0) { - cutwin.he = strtol(tmp_buf, NULL, 10); - } - LOGD("%s,%d: %d,%d,%d,%d", __FUNCTION__, __LINE__, ( int ) cutwin.vs, ( int ) cutwin.hs, ( int ) cutwin.ve, ( int ) cutwin.he); - return cutwin; - } -#endif -} - -int CTv::Tv_ReplacePqDb(const char *newFilePath) -{ - return CVpp::getInstance()->getPqData()->replacePqDb(newFilePath); -} - -int CTv::Tv_FactorySet_FBC_Brightness ( int value ) -{ - //int temp_value = (255*value)/100; - int temp_value = value; - - if (fbcIns != NULL) { - fbcIns->cfbc_Set_Brightness(COMM_DEV_SERIAL, temp_value); - return 0; - } - return -1; -} - -int CTv::Tv_FactoryGet_FBC_Brightness ( void ) -{ - int temp_value = 0; - int data = 0; - - if (fbcIns != NULL) { - fbcIns->cfbc_Get_Brightness(COMM_DEV_SERIAL, &temp_value); - //data = (temp_value*100)/255; - data = temp_value; - return data; - } - return 0; -} - -int CTv::Tv_FactorySet_FBC_Contrast ( int value ) -{ - //int temp_value = (255*value)/100; - int temp_value = value; - - if (fbcIns != NULL) { - fbcIns->cfbc_Set_Contrast(COMM_DEV_SERIAL, temp_value); - return 0; - } - return -1; -} - -int CTv::Tv_FactoryGet_FBC_Contrast ( void ) -{ - int temp_value = 0; - int data = 0; - - if (fbcIns != NULL) { - fbcIns->cfbc_Get_Contrast(COMM_DEV_SERIAL, &temp_value); - //data = (temp_value*100)/255; - data = temp_value; - return data; - } - return 0; -} - -int CTv::Tv_FactorySet_FBC_Saturation ( int value ) -{ - //int temp_value = (255*value)/100; - int temp_value = value; - - if (fbcIns != NULL) { - fbcIns->cfbc_Set_Saturation(COMM_DEV_SERIAL, temp_value); - return 0; - } - return -1; -} - -int CTv::Tv_FactoryGet_FBC_Saturation ( void ) -{ - int temp_value = 0; - int data = 0; - - if (fbcIns != NULL) { - fbcIns->cfbc_Get_Saturation(COMM_DEV_SERIAL, &temp_value); - //data = (temp_value*100)/255; - data = temp_value; - return data; - } - return 0; -} - -int CTv::Tv_FactorySet_FBC_HueColorTint ( int value ) -{ - //int temp_value = (255*value)/100; - int temp_value = value; - - if (fbcIns != NULL) { - fbcIns->cfbc_Set_HueColorTint(COMM_DEV_SERIAL, temp_value); - return 0; - } - return -1; -} - -int CTv::Tv_FactoryGet_FBC_HueColorTint ( void ) -{ - int temp_value = 0; - int data = 0; - - if (fbcIns != NULL) { - fbcIns->cfbc_Get_HueColorTint(COMM_DEV_SERIAL, &temp_value); - //data = (temp_value*100)/255; - data = temp_value; - return data; - } - return 0; -} - -int CTv::Tv_FactorySet_FBC_Backlight ( int value ) -{ - int temp_value = value; - if (fbcIns != NULL) { - temp_value = temp_value * 255 / 100; - fbcIns->cfbc_Set_Backlight(COMM_DEV_SERIAL, temp_value); - return 0; - } - return -1; -} - -int CTv::Tv_FactoryGet_FBC_Backlight ( void ) -{ - int temp_value = 0; - int data = 0; - - if (fbcIns != NULL) { - fbcIns->cfbc_Get_Backlight(COMM_DEV_SERIAL, &temp_value); - if (temp_value * 100 % 255 == 0) - temp_value = temp_value * 100 / 255; - else - temp_value = temp_value * 100 / 255 + 1; - data = temp_value; - return data; - } - - return 0; -} - -int CTv::Tv_FactorySet_FBC_Auto_Backlight_OnOff( unsigned char status) -{ - if (fbcIns != NULL) { - return fbcIns->cfbc_Set_Auto_Backlight_OnOff(COMM_DEV_SERIAL, status); - } - - return -1; -} - -int CTv::Tv_FactoryGet_FBC_Auto_Backlight_OnOff( void ) -{ - int temp_status = 0; - - if (fbcIns != NULL) { - fbcIns->cfbc_Get_Auto_Backlight_OnOff(COMM_DEV_SERIAL, &temp_status); - return temp_status; - } - return 0; -} - -int CTv::Tv_FactorySet_FBC_ELEC_MODE( int value ) -{ - if (fbcIns != NULL) { - fbcIns->cfbc_Set_AUTO_ELEC_MODE(COMM_DEV_SERIAL, value); - SSMSaveFBCELECmodeVal(value); - return 0; - } - return -1; -} - -int CTv::Tv_FactoryGet_FBC_ELEC_MODE( void ) -{ - int val = 0; - SSMReadFBCELECmodeVal(&val); - return val; -} - -int CTv::Tv_FactorySet_FBC_BACKLIGHT_N360( int value ) -{ - SSMSaveFBCELECmodeVal(value); - return -1; -} - -int CTv::Tv_FactoryGet_FBC_BACKLIGHT_N360( void ) -{ - int val = 0; - SSMReadFBCELECmodeVal(&val); - return val; -} - -int CTv::Tv_FactorySet_FBC_Thermal_State( int value ) -{ - if (fbcIns != NULL) { - fbcIns->cfbc_Set_Thermal_state(COMM_DEV_SERIAL, value); - return 0; - } - - return -1; -} - -int CTv::Tv_FactorySet_FBC_Picture_Mode ( int mode ) -{ - if (fbcIns != NULL) { - fbcIns->cfbc_Set_Picture_Mode(COMM_DEV_SERIAL, mode); - return 0; - } - - return -1; -} - -int CTv::Tv_FactoryGet_FBC_Picture_Mode ( void ) -{ - int mode = 0; - - if (fbcIns != NULL) { - fbcIns->cfbc_Get_Picture_Mode(COMM_DEV_SERIAL, &mode); - return mode; - } - return 0; -} - -int CTv::Tv_FactorySet_FBC_Set_Test_Pattern ( int mode ) -{ - if (fbcIns != NULL) { - fbcIns->cfbc_Set_Test_Pattern(COMM_DEV_SERIAL, mode); - return 0; - } - - return -1; -} - -int CTv::Tv_FactoryGet_FBC_Get_Test_Pattern ( void ) -{ - int mode = 0; - - if (fbcIns != NULL) { - fbcIns->cfbc_Get_Test_Pattern(COMM_DEV_SERIAL, &mode); - return mode; - } - - return 0; -} - -int CTv::Tv_FactorySet_FBC_Gain_Red( int value ) -{ - int temp_value = 0; - - //temp_value = (value*255)/2047; - //value 0 ~ 2047 - temp_value = value; - - if (fbcIns != NULL) { - fbcIns->cfbc_Set_Gain_Red(COMM_DEV_SERIAL, temp_value); - return 0; - } - - return -1; -} - -int CTv::Tv_FactoryGet_FBC_Gain_Red ( void ) -{ - int temp_value = 0, value = 0; - - if (fbcIns != NULL) { - fbcIns->cfbc_Get_Gain_Red(COMM_DEV_SERIAL, &temp_value); - //value 0 ~ 2047 - //value = (temp_value*2047)/255; - value = temp_value; - - return value; - } - - return 0; -} - -int CTv::Tv_FactorySet_FBC_Gain_Green( int value ) -{ - int temp_value = 0; - - //temp_value = (value*255)/2047; - //value 0 ~ 2047 - temp_value = value; - - if (fbcIns != NULL) { - fbcIns->cfbc_Set_Gain_Green(COMM_DEV_SERIAL, temp_value); - return 0; - } - - return -1; -} - -int CTv::Tv_FactoryGet_FBC_Gain_Green ( void ) -{ - int temp_value = 0, value = 0; - - if (fbcIns != NULL) { - fbcIns->cfbc_Get_Gain_Green(COMM_DEV_SERIAL, &temp_value); - //value 0 ~ 2047 - //value = (temp_value*2047)/255; - value = temp_value; - - return value; - } - - return 0; -} - -int CTv::Tv_FactoryGet_FBC_VIDEO_MUTE ( void ) -{ - if (fbcIns != NULL) { - fbcIns->cfbc_Set_VMute(COMM_DEV_SERIAL, 1); - } - - return 0; -} - -int CTv::Tv_FactorySet_FBC_Gain_Blue( int value ) -{ - int temp_value = 0; - - //temp_value = (value*255)/2047; - //value 0 ~ 2047 - temp_value = value; - - if (fbcIns != NULL) { - fbcIns->cfbc_Set_Gain_Blue(COMM_DEV_SERIAL, temp_value); - return 0; - } - - return -1; -} - -int CTv::Tv_FactoryGet_FBC_Gain_Blue ( void ) -{ - int temp_value = 0, value = 0; - - if (fbcIns != NULL) { - fbcIns->cfbc_Get_Gain_Blue(COMM_DEV_SERIAL, &temp_value); - //value 0 ~ 2047 - //value = (temp_value*2047)/255; - value = temp_value; - - return value; - } - - return 0; -} - -int CTv::Tv_FactorySet_FBC_Offset_Red( int value ) -{ - //value -1024~+1023 - int temp_value = 0; - - //temp_value = (value+1024)*255/2047; - temp_value = value; - - if (fbcIns != NULL) { - fbcIns->cfbc_Set_Offset_Red(COMM_DEV_SERIAL, temp_value); - return 0; - } - - return -1; -} - -int CTv::Tv_FactoryGet_FBC_Offset_Red ( void ) -{ - int temp_value = 0, value = 0; - - if (fbcIns != NULL) { - fbcIns->cfbc_Get_Offset_Red(COMM_DEV_SERIAL, &temp_value); - //value -1024~+1023 - //value = (temp_value*2047)/255 - 1024; - value = temp_value; - - return value; - } - - return 0; -} - -int CTv::Tv_FactorySet_FBC_Offset_Green( int value ) -{ - //value -1024~+1023 - int temp_value = 0; - - //temp_value = (value+1024)*255/2047; - temp_value = value; - - if (fbcIns != NULL) { - fbcIns->cfbc_Set_Offset_Green(COMM_DEV_SERIAL, temp_value); - return 0; - } - - return -1; -} - -int CTv::Tv_FactoryGet_FBC_Offset_Green ( void ) -{ - int temp_value = 0, value = 0; - - if (fbcIns != NULL) { - fbcIns->cfbc_Get_Offset_Green(COMM_DEV_SERIAL, &temp_value); - //value -1024~+1023 - //value = (temp_value*2047)/255 - 1024; - value = temp_value; - - return value; - } - - return 0; -} - -int CTv::Tv_FactorySet_FBC_Offset_Blue( int value ) -{ - //value -1024~+1023 - int temp_value = 0; - - //temp_value = (value+1024)*255/2047; - temp_value = value; - - if (fbcIns != NULL) { - fbcIns->cfbc_Set_Offset_Blue(COMM_DEV_SERIAL, value); - return 0; - } - - return -1; -} - -int CTv::Tv_FactoryGet_FBC_Offset_Blue ( void ) -{ - int temp_value = 0, value = 0; - - if (fbcIns != NULL) { - fbcIns->cfbc_Get_Offset_Blue(COMM_DEV_SERIAL, &temp_value); - //value -1024~+1023 - //value = (temp_value*2047)/255 - 1024; - value = temp_value; - - return value; - } - - return 0; -} - -int CTv::Tv_FactoryGetWhiteBalanceRedGain(int source_type, int colortemp_mode) -{ - int ret = -1; - if (!mHdmiOutFbc) { // not use fbc store the white balance params - LOGD("--------- call none fbc method ---------"); - ret = CVpp::getInstance()->FactoryGetColorTemp_Rgain(source_type, colortemp_mode); - } else { //use fbc store the white balance params - LOGD("--------- call fbc method ---------"); - ret = Tv_FactoryGetItemFromBatch((vpp_color_temperature_mode_t)colortemp_mode, 0); - } - return ret; -} - -int CTv::Tv_FactoryGetWhiteBalanceGreenGain(int source_type, int colortemp_mode) -{ - int ret = -1; - if (!mHdmiOutFbc) { // not use fbc store the white balance params - ret = CVpp::getInstance()->FactoryGetColorTemp_Ggain(source_type, colortemp_mode); - } else { //use fbc store the white balance params - ret = Tv_FactoryGetItemFromBatch((vpp_color_temperature_mode_t)colortemp_mode, 1); - } - return ret; -} - -int CTv::Tv_FactoryGetWhiteBalanceBlueGain(int source_type, int colortemp_mode) -{ - int ret = -1; - if (!mHdmiOutFbc) { // not use fbc store the white balance params - ret = CVpp::getInstance()->FactoryGetColorTemp_Bgain(source_type, colortemp_mode); - } else { //use fbc store the white balance params - ret = Tv_FactoryGetItemFromBatch((vpp_color_temperature_mode_t)colortemp_mode, 2); - } - return ret; -} - -int CTv::Tv_FactoryGetWhiteBalanceRedOffset(int source_type, int colortemp_mode) -{ - int ret = -1; - if (!mHdmiOutFbc) { // not use fbc store the white balance params - ret = CVpp::getInstance()->FactoryGetColorTemp_Roffset(source_type, colortemp_mode); - } else { //use fbc store the white balance params - ret = Tv_FactoryGetItemFromBatch((vpp_color_temperature_mode_t)colortemp_mode, 3); - } - return ret; -} - -int CTv::Tv_FactoryGetWhiteBalanceGreenOffset(int source_type, int colortemp_mode) -{ - int ret = -1; - if (!mHdmiOutFbc) { // not use fbc store the white balance params - ret = CVpp::getInstance()->FactoryGetColorTemp_Goffset(source_type, colortemp_mode); - } else { //use fbc store the white balance params - ret = Tv_FactoryGetItemFromBatch((vpp_color_temperature_mode_t)colortemp_mode, 4); - } - return ret; -} - -int CTv::Tv_FactoryGetWhiteBalanceBlueOffset(int source_type, int colortemp_mode) -{ - int ret = -1; - if (!mHdmiOutFbc) { // not use fbc store the white balance params - ret = CVpp::getInstance()->FactoryGetColorTemp_Boffset(source_type, colortemp_mode); - } else { //use fbc store the white balance params - ret = Tv_FactoryGetItemFromBatch((vpp_color_temperature_mode_t)colortemp_mode, 5); - } - return ret; -} - -int CTv::Tv_FactorySetWhiteBalanceRedGain(int source_type, int colortemp_mode, int value) -{ - int ret = -1; - if (value < 0) { - value = 0; - } else if (value > 2047) { - value = 2047; - } - if (!mHdmiOutFbc) { // not use fbc store the white balance params - ret = CVpp::getInstance()->FactorySetColorTemp_Rgain(source_type, colortemp_mode, value); - if (ret != -1) { - LOGD("save the red gain to flash"); - ret = CVpp::getInstance()->FactorySaveColorTemp_Rgain(source_type, colortemp_mode, value); - } - } else { //use fbc store the white balance params - value = Tv_FactoryWhiteBalanceFormatInputFbcGainParams(value); - ret = Tv_FactorySet_FBC_Gain_Red(value); - } - return ret; -} - -int CTv::Tv_FactorySetWhiteBalanceGreenGain(int source_type, int colortemp_mode, int value) -{ - int ret = -1; - if (value < 0) { - value = 0; - } else if (value > 2047) { - value = 2047; - } - if (!mHdmiOutFbc) { // not use fbc store the white balance params - ret = CVpp::getInstance()->FactorySetColorTemp_Ggain(source_type, colortemp_mode, value); - if (ret != -1) { - LOGD("save the green gain to flash"); - ret = CVpp::getInstance()->FactorySaveColorTemp_Ggain(source_type, colortemp_mode, value); - } - } else { //use fbc store the white balance params - value = Tv_FactoryWhiteBalanceFormatInputFbcGainParams(value); - ret = Tv_FactorySet_FBC_Gain_Green(value); - } - return ret; -} - -int CTv::Tv_FactorySetWhiteBalanceBlueGain(int source_type, int colortemp_mode, int value) -{ - int ret = -1; - if (value < 0) { - value = 0; - } else if (value > 2047) { - value = 2047; - } - if (!mHdmiOutFbc) { // not use fbc store the white balance params - ret = CVpp::getInstance()->FactorySetColorTemp_Bgain(source_type, colortemp_mode, value); - if (ret != -1) { - LOGD("save the blue gain to flash"); - ret = CVpp::getInstance()->FactorySaveColorTemp_Bgain(source_type, colortemp_mode, value); - } - } else { //use fbc store the white balance params - value = Tv_FactoryWhiteBalanceFormatInputFbcGainParams(value); - ret = Tv_FactorySet_FBC_Gain_Blue(value); - } - return ret; -} - -int CTv::Tv_FactorySetWhiteBalanceRedOffset(int source_type, int colortemp_mode, int value) -{ - int ret = -1; - if (value < -1024) { - value = -1024; - } else if (value > 1023) { - value = 1023; - } - if (!mHdmiOutFbc) { // not use fbc store the white balance params - ret = CVpp::getInstance()->FactorySetColorTemp_Roffset(source_type, colortemp_mode, value); - if (ret != -1) { - LOGD("save the red offset to flash"); - ret = CVpp::getInstance()->FactorySaveColorTemp_Roffset(source_type, colortemp_mode, value); - } - } else { //use fbc store the white balance params - value = Tv_FactoryWhiteBalanceFormatInputFbcOffsetParams(value); - ret = Tv_FactorySet_FBC_Offset_Red(value); - } - return ret; -} - -int CTv::Tv_FactorySetWhiteBalanceGreenOffset(int source_type, int colortemp_mode, int value) -{ - int ret = -1; - if (value < -1024) { - value = -1024; - } else if (value > 1023) { - value = 1023; - } - if (!mHdmiOutFbc) { // not use fbc store the white balance params - ret = CVpp::getInstance()->FactorySetColorTemp_Goffset(source_type, colortemp_mode, value); - if (ret != -1) { - LOGD("save the green offset to flash"); - ret = CVpp::getInstance()->FactorySaveColorTemp_Goffset(source_type, colortemp_mode, value); - } - } else { //use fbc store the white balance params - value = Tv_FactoryWhiteBalanceFormatInputFbcOffsetParams(value); - ret = Tv_FactorySet_FBC_Offset_Green(value); - } - return ret; -} - -int CTv::Tv_FactorySetWhiteBalanceBlueOffset(int source_type, int colortemp_mode, int value) -{ - int ret = -1; - if (value < -1024) { - value = -1024; - } else if (value > 1023) { - value = 1023; - } - if (!mHdmiOutFbc) { // not use fbc store the white balance params - ret = CVpp::getInstance()->FactorySetColorTemp_Boffset(source_type, colortemp_mode, value); - if (ret != -1) { - LOGD("save the blue offset to flash"); - ret = CVpp::getInstance()->FactorySaveColorTemp_Boffset(source_type, colortemp_mode, value); - } - } else { //use fbc store the white balance params - value = Tv_FactoryWhiteBalanceFormatInputFbcOffsetParams(value); - ret = Tv_FactorySet_FBC_Offset_Blue(value); - } - return ret; -} - -int CTv::Tv_FactorySetWhiteBalanceColorTempMode(int source_type, int colortemp_mode, int is_save) -{ - int ret = -1; - if (!mHdmiOutFbc) { // not use fbc store the white balance params - ret = CVpp::getInstance()->SetColorTemperature((vpp_color_temperature_mode_t)colortemp_mode, (tv_source_input_type_t)source_type, is_save); - } else { //use fbc store the white balance params - ret = Tv_FactorySet_FBC_ColorTemp_Mode(colortemp_mode); - } - return ret; -} - -int CTv::Tv_FactoryGetWhiteBalanceColorTempMode(int source_type ) -{ - int ret = -1; - if (!mHdmiOutFbc) { // not use fbc store the white balance params - ret = CVpp::getInstance()->GetColorTemperature((tv_source_input_type_t)source_type); - } else { //use fbc store the white balance params - ret = Tv_FactoryGet_FBC_ColorTemp_Mode(); - } - return ret; -} - -int CTv::Tv_FactoryWhiteBalanceFormatInputFbcGainParams(int value) -{ - int ret = 1024; - if (value < 0) { - ret = 0; - } else if (value > 2047) { - ret = 2047; - } else { - ret = value; - } - ret = ret >> 3; - return ret; -} - -int CTv::Tv_FactoryWhiteBalanceFormatInputFbcOffsetParams(int value) -{ - int ret = 0; - if (value < -1024) { - ret = -1024; - } else if (value > 1023) { - ret = 1023; - } else { - ret = value; - } - ret += 1024; - ret = ret >> 3; - return ret; -} - -int CTv::Tv_FactoryWhiteBalanceFormatOutputFbcOffsetParams(int value) -{ - if (value == 255) { - value = 1023; - } else { - value = value << 3; - value -= 1024; - } - return value; -} - -int CTv::Tv_FactoryWhiteBalanceFormatOutputFbcGainParams(int value) -{ - value = value << 3; - if (value < 0) { - value = 0; - } else if (value > 2047) { - value = 2047; - } - return value; -} - -int CTv::Tv_FactorySaveWhiteBalancePramas(int source_type, int tempmode, int r_gain, int g_gain, int b_gain, int r_offset, int g_offset, int b_offset) -{ - int ret = 0; - if (!mHdmiOutFbc) { // not use fbc store the white balance params - CVpp::getInstance()->SaveColorTemp((vpp_color_temperature_mode_t) tempmode, (tv_source_input_type_t) source_type); - CVpp::getInstance()->FactorySaveColorTemp_Rgain(source_type, tempmode, r_gain); - CVpp::getInstance()->FactorySaveColorTemp_Ggain(source_type, tempmode, g_gain); - CVpp::getInstance()->FactorySaveColorTemp_Bgain(source_type, tempmode, b_gain); - CVpp::getInstance()->FactorySaveColorTemp_Roffset(source_type, tempmode, r_offset); - CVpp::getInstance()->FactorySaveColorTemp_Goffset(source_type, tempmode, g_offset); - CVpp::getInstance()->FactorySaveColorTemp_Boffset(source_type, tempmode, b_offset); - } else { //use fbc store the white balance params - tcon_rgb_ogo_t params; - - params.r_gain = Tv_FactoryWhiteBalanceFormatInputFbcGainParams(r_gain); - params.g_gain = Tv_FactoryWhiteBalanceFormatInputFbcGainParams(g_gain); - params.b_gain = Tv_FactoryWhiteBalanceFormatInputFbcGainParams(b_gain); - params.r_post_offset = Tv_FactoryWhiteBalanceFormatInputFbcOffsetParams(r_offset); - params.g_post_offset = Tv_FactoryWhiteBalanceFormatInputFbcOffsetParams(g_offset); - params.b_post_offset = Tv_FactoryWhiteBalanceFormatInputFbcOffsetParams(b_offset); - ret = Tv_FactorySet_FBC_ColorTemp_Batch((vpp_color_temperature_mode_t)tempmode, params); - } - return ret; -} - -/** -* The color temperature enum order is diffrent bettewn G9 and Fbc, so we have to make a mapping -**/ -int CTv::Tv_FactoryWhiteBalanceColorTempMappingG92Fbc(int Tempmode) -{ - int ret = Tempmode; - switch (Tempmode) { - case 0: //standard - ret = 1; - break; - case 1: //warm - ret = 2; - break; - case 2: //cold - ret = 0; - break; - default: - break; - } - return ret; -} - -/** -* The color temperature enum order is diffrent bettewn G9 and Fbc, so we have to make a mapping -**/ -int CTv::Tv_FactoryWhiteBalanceColorTempMappingFbc2G9(int Tempmode) -{ - int ret = Tempmode; - switch (Tempmode) { - case 0: //cold - ret = 2; - break; - case 1: //standard - ret = 0; - break; - case 2: //warm - ret = 1; - break; - default: - break; - } - return ret; -} - -int CTv::Tv_SetTestPattern(int value) -{ - int ret = -1; - if (fbcIns != NULL) { - LOGD("%s, value is %d\n", __FUNCTION__, value); - ret = fbcIns->cfbc_TestPattern_Select(COMM_DEV_SERIAL, value); - } - - return ret; -} - -int CTv::Tv_FactoryCloseWhiteBalanceGrayPattern() -{ - int useFbc = 0; - int ret = -1; - if (!mHdmiOutFbc) { // not use fbc store the white balance params - ret = CVpp::getInstance()->VPP_SetGrayPattern(0); - } else { //use fbc store the white balance params - ret = Tv_FactoryClose_FBC_GrayPattern(); - } - return ret; -} - -int CTv::Tv_FactoryOpenWhiteBalanceGrayPattern() -{ - int ret = 0; - if (mHdmiOutFbc) { //use fbc store the white balance params - ret = Tv_FactoryOpen_FBC_GrayPattern(); - } - return ret; -} - -int CTv::Tv_FactorySetWhiteBalanceGrayPattern(int value) -{ - int ret = -1; - if (!mHdmiOutFbc) { - ret = CVpp::getInstance()->VPP_SetGrayPattern(value); - } else { - ret = Tv_FactorySet_FBC_GrayPattern(value); - } - return ret; -} - -int CTv:: Tv_FactoryGetWhiteBalanceGrayPattern() -{ - int ret = -1; - if (!mHdmiOutFbc) { - ret = CVpp::getInstance()->VPP_GetGrayPattern(); - } - return ret; -} - -int CTv::Tv_FactorySet_FBC_GrayPattern(int value) -{ - int ret = -1; - unsigned char grayValue = 0; - if (value > 255) { - grayValue = 255; - } else if (value < 0) { - grayValue = 0; - } else { - grayValue = (unsigned char)(0xFF & value); - } - if (fbcIns != NULL) { - ret = fbcIns->cfbc_WhiteBalance_SetGrayPattern(COMM_DEV_SERIAL, grayValue); - } - return ret; -} - -int CTv::Tv_FactoryOpen_FBC_GrayPattern() -{ - int ret = -1; - if (fbcIns != NULL) { - ret = fbcIns->cfbc_WhiteBalance_GrayPattern_OnOff(COMM_DEV_SERIAL, 0); - } - return ret; -} - -int CTv::Tv_FactoryClose_FBC_GrayPattern() -{ - int ret = -1; - if (fbcIns != NULL) { - ret = fbcIns->cfbc_WhiteBalance_GrayPattern_OnOff(COMM_DEV_SERIAL, 1); - } - return ret; -} - -int CTv::Tv_FactorySet_FBC_ColorTemp_Mode( int mode ) -{ - if (fbcIns != NULL) { - fbcIns->cfbc_Set_ColorTemp_Mode(COMM_DEV_SERIAL, mode); - return 0; - } - - return -1; -} - -int CTv::Tv_FactoryGet_FBC_ColorTemp_Mode ( void ) -{ - int temp_mode = 0; - - if (fbcIns != NULL) { - fbcIns->cfbc_Get_ColorTemp_Mode(COMM_DEV_SERIAL, &temp_mode); - return temp_mode; - } - - return -1; -} - -int CTv::Tv_FactorySet_FBC_ColorTemp_Mode_N360( int mode ) -{ - if (fbcIns != NULL) { - fbcIns->cfbc_Set_ColorTemp_Mode(COMM_DEV_SERIAL, mode); - SSMSaveFBCN360ColorTempVal(mode); - return 0; - } - - return -1; -} - -int CTv::Tv_FactoryGet_FBC_ColorTemp_Mode_N360 ( void ) -{ - int temp_mode = 0; - SSMReadFBCN360ColorTempVal(&temp_mode); - return temp_mode; -} - -int CTv::Tv_FactorySet_FBC_LockN_state(int value) -{ - LOGE ("Tv_FactorySet_FBC_LockN_state %d!!!\n", value); - if (fbcIns != NULL) { - fbcIns->cfbc_Set_LockN_state(COMM_DEV_SERIAL, value); - return 0; - } - return -1; -} - -int CTv::Tv_FactorySet_FBC_WB_Initial( int status ) -{ - if (fbcIns != NULL) { - fbcIns->cfbc_Set_WB_Initial(COMM_DEV_SERIAL, status); - return 0; - } - - return -1; -} - -int CTv::Tv_FactoryGet_FBC_WB_Initial ( void ) -{ - int temp_status = 0; - - if (fbcIns != NULL) { - fbcIns->cfbc_Get_WB_Initial(COMM_DEV_SERIAL, &temp_status); - return temp_status; - } - - return 0; -} - -int CTv::Tv_FactorySet_FBC_ColorTemp_Batch(vpp_color_temperature_mode_t Tempmode, tcon_rgb_ogo_t params) -{ - unsigned char mode = 0, r_gain, g_gain, b_gain, r_offset, g_offset, b_offset; - switch (Tempmode) { - case VPP_COLOR_TEMPERATURE_MODE_STANDARD: - mode = 1; //COLOR_TEMP_STD - break; - case VPP_COLOR_TEMPERATURE_MODE_WARM: - mode = 2; //COLOR_TEMP_WARM - break; - case VPP_COLOR_TEMPERATURE_MODE_COLD: - mode = 0; //COLOR_TEMP_COLD - break; - case VPP_COLOR_TEMPERATURE_MODE_USER: - mode = 3; //COLOR_TEMP_USER - break; - default: - break; - } - r_gain = (params.r_gain * 255) / 2047; // u1.10, range 0~2047, default is 1024 (1.0x) - g_gain = (params.g_gain * 255) / 2047; - b_gain = (params.b_gain * 255) / 2047; - r_offset = (params.r_post_offset + 1024) * 255 / 2047; // s11.0, range -1024~+1023, default is 0 - g_offset = (params.g_post_offset + 1024) * 255 / 2047; - b_offset = (params.b_post_offset + 1024) * 255 / 2047; - LOGD ( "~Tv_FactorySet_FBC_ColorTemp_Batch##%d,%d,%d,%d,%d,%d,##", r_gain, g_gain, b_gain, r_offset, g_offset, b_offset ); - - if (fbcIns != NULL) { - fbcIns->cfbc_Set_WB_Batch(COMM_DEV_SERIAL, mode, r_gain, g_gain, b_gain, r_offset, g_offset, b_offset); - return 0; - } - - return -1; -} - -int CTv::Tv_FactoryGet_FBC_ColorTemp_Batch ( vpp_color_temperature_mode_t Tempmode, tcon_rgb_ogo_t *params ) -{ - unsigned char mode = 0, r_gain, g_gain, b_gain, r_offset, g_offset, b_offset; - switch (Tempmode) { - case VPP_COLOR_TEMPERATURE_MODE_STANDARD: - mode = 1; //COLOR_TEMP_STD - break; - case VPP_COLOR_TEMPERATURE_MODE_WARM: - mode = 2; //COLOR_TEMP_WARM - break; - case VPP_COLOR_TEMPERATURE_MODE_COLD: - mode = 0; //COLOR_TEMP_COLD - break; - case VPP_COLOR_TEMPERATURE_MODE_USER: - mode = 3; //COLOR_TEMP_USER - break; - default: - break; - } - - if (fbcIns != NULL) { - fbcIns->cfbc_Get_WB_Batch(COMM_DEV_SERIAL, mode, &r_gain, &g_gain, &b_gain, &r_offset, &g_offset, &b_offset); - LOGD ( "~Tv_FactoryGet_FBC_ColorTemp_Batch##%d,%d,%d,%d,%d,%d,##", r_gain, g_gain, b_gain, r_offset, g_offset, b_offset ); - - params->r_gain = (r_gain * 2047) / 255; - params->g_gain = (g_gain * 2047) / 255; - params->b_gain = (b_gain * 2047) / 255; - params->r_post_offset = (r_offset * 2047) / 255 - 1024; - params->g_post_offset = (g_offset * 2047) / 255 - 1024; - params->b_post_offset = (b_offset * 2047) / 255 - 1024; - return 0; - } - - return -1; -} - -int CTv::Tv_FactorySet_WB_G9_To_FBC( vpp_color_temperature_mode_t Tempmode, tcon_rgb_ogo_t params ) -{ - Tv_FactorySet_FBC_ColorTemp_Batch(Tempmode, params); - return 0; -} - -int CTv::Tv_FactoryGet_WB_G9_To_FBC ( vpp_color_temperature_mode_t Tempmode, tcon_rgb_ogo_t *params ) -{ - int temp_status = 0; - Tv_FactoryGet_FBC_ColorTemp_Batch(Tempmode, params); - return temp_status; -} - -int CTv::Tv_FactoryGetItemFromBatch(vpp_color_temperature_mode_t colortemp_mode, int item) -{ - tcon_rgb_ogo_t params; - int ret = 0; - - Tv_FactoryGet_FBC_ColorTemp_Batch((vpp_color_temperature_mode_t)colortemp_mode, ¶ms); - switch (item) { - case 0: - ret = Tv_FactoryWhiteBalanceFormatOutputFbcGainParams(params.r_gain); - break; - case 1: - ret = Tv_FactoryWhiteBalanceFormatOutputFbcGainParams(params.g_gain); - break; - case 2: - ret = Tv_FactoryWhiteBalanceFormatOutputFbcGainParams(params.b_gain); - break; - case 3: - ret = Tv_FactoryWhiteBalanceFormatOutputFbcOffsetParams(params.r_post_offset); - break; - case 4: - ret = Tv_FactoryWhiteBalanceFormatOutputFbcOffsetParams(params.g_post_offset); - break; - case 5: - ret = Tv_FactoryWhiteBalanceFormatOutputFbcOffsetParams(params.b_post_offset); - break; - default: - ret = 0; - } - return ret; -} - -int CTv::Tv_FactorySet_FBC_CM_OnOff( unsigned char status ) -{ - if (fbcIns != NULL) { - fbcIns->cfbc_Set_CM(COMM_DEV_SERIAL, status); - return 0; - } - - return -1; -} - -int CTv::Tv_FactoryGet_FBC_CM_OnOff (void) -{ - int temp_status = 0; - - if (fbcIns != NULL) { - fbcIns->cfbc_Get_CM(COMM_DEV_SERIAL, &temp_status); - return temp_status; - } - - return 0; -} - -int CTv::Tv_FactorySet_FBC_DNLP_OnOff( unsigned char status ) -{ - if (fbcIns != NULL) { - fbcIns->cfbc_Set_DNLP(COMM_DEV_SERIAL, status); - return 0; - } - - return -1; -} - -int CTv::Tv_FactoryGet_FBC_DNLP_OnOff (void) -{ - int temp_status = 0; - - if (fbcIns != NULL) { - fbcIns->cfbc_Get_DNLP(COMM_DEV_SERIAL, &temp_status); - return temp_status; - } - - return 0; -} - -int CTv::Tv_FactorySet_FBC_Gamma_OnOff( unsigned char status ) -{ - if (fbcIns != NULL) { - fbcIns->cfbc_Set_Gamma(COMM_DEV_SERIAL, status); - return 0; - } - - return -1; -} - -int CTv::Tv_FactoryGet_FBC_Gamma_OnOff (void) -{ - int temp_status = 0; - - if (fbcIns != NULL) { - fbcIns->cfbc_Get_Gamma(COMM_DEV_SERIAL, &temp_status); - return temp_status; - } - - return 0; -} - -int CTv::Tv_FactorySet_FBC_WhiteBalance_OnOff( unsigned char status ) -{ - if (fbcIns != NULL) { - fbcIns->cfbc_Set_WhiteBalance_OnOff(COMM_DEV_SERIAL, status); - return 0; - } - - return -1; -} - -int CTv::Tv_FactoryGet_FBC_WhiteBalance_OnOff (void) -{ - int temp_status = 0; - - if (fbcIns != NULL) { - fbcIns->cfbc_Get_WhiteBalance_OnOff(COMM_DEV_SERIAL, &temp_status); - return temp_status; - } - - return 0; -} - -int CTv::Tv_FactorySet_FBC_backlight_onoff ( int value ) -{ - if (fbcIns != NULL) { - fbcIns->cfbc_Set_backlight_onoff(COMM_DEV_SERIAL, value); - return 0; - } - - return -1; -} - -int CTv::Tv_FactoryGet_FBC_backlight_onoff ( void ) -{ - int temp_value = 0; - - if (fbcIns != NULL) { - fbcIns->cfbc_Get_backlight_onoff(COMM_DEV_SERIAL, &temp_value); - return temp_value; - } - - return 0; -} - -int CTv::Tv_FactorySet_FBC_LVDS_SSG_Set( int value ) -{ - if (fbcIns != NULL) { - fbcIns->cfbc_Set_LVDS_SSG_Set(COMM_DEV_SERIAL, value); - return 0; - } - - return -1; -} - -int CTv::Tv_FactorySet_FBC_LightSensor_Status_N310 ( int value ) -{ - if (fbcIns != NULL) { - fbcIns->cfbc_Set_LightSensor_N310(COMM_DEV_SERIAL, value); - SSMSaveFBCN310LightsensorVal(value); - return 0; - } - - return -1; -} - -int CTv::Tv_FactoryGet_FBC_LightSensor_Status_N310 ( void ) -{ - int data = 0; - if (fbcIns != NULL) { - SSMReadFBCN310LightsensorVal(&data); - return data; - } - - return 0; -} - -int CTv::Tv_FactorySet_FBC_Dream_Panel_Status_N310 ( int value ) -{ - if (fbcIns != NULL) { - fbcIns->cfbc_Set_Dream_Panel_N310(COMM_DEV_SERIAL, value); - SSMSaveFBCN310Dream_PanelVal(value); - return 0; - } - - return -1; -} - -int CTv::Tv_FactoryGet_FBC_Dream_Panel_Status_N310 ( void ) -{ - int data = 0; - if (fbcIns != NULL) { - SSMReadFBCN310Dream_PanelVal(&data); - return data; - } - - return 0; -} - -int CTv::Tv_FactorySet_FBC_MULT_PQ_Status_N310 ( int value ) -{ - if (fbcIns != NULL) { - fbcIns->cfbc_Set_MULT_PQ_N310(COMM_DEV_SERIAL, value); - SSMSaveFBCN310MULT_PQVal(value); - return 0; - } - - return -1; -} - -int CTv::Tv_FactoryGet_FBC_MULT_PQ_Status_N310 ( void ) -{ - int data = 0; - - if (fbcIns != NULL) { - SSMReadFBCN310MULT_PQVal(&data); - return data; - } - - return 0; -} - -int CTv::Tv_FactorySet_FBC_MEMC_Status_N310 ( int value ) -{ - if (fbcIns != NULL) { - fbcIns->cfbc_Set_MEMC_N310(COMM_DEV_SERIAL, value); - SSMSaveFBCN310MEMCVal(value); - return 0; - } - - return -1; -} - -int CTv::Tv_FactoryGet_FBC_MEMC_Status_N310 ( void ) -{ - int data = 0; - if (fbcIns != NULL) { - SSMReadFBCN310MEMCVal(&data); - return data; - } - - return -1; -} - -int CTv::Tv_FactorySet_FBC_ColorTemp_Mode_N310( int mode ) -{ - //int colorTemp = 0; - if (fbcIns != NULL) { - //colorTemp = Tv_FactoryWhiteBalanceColorTempMappingG92Fbc(mode); - fbcIns->cfbc_Set_ColorTemp_Mode(COMM_DEV_SERIAL, mode); - SSMSaveFBCN310ColorTempVal(mode); - return 0; - } - - return -1; -} - -int CTv::Tv_FactoryGet_FBC_ColorTemp_Mode_N310 ( void ) -{ - int mode = 0; - if (fbcIns != NULL) { - SSMReadFBCN310ColorTempVal(&mode); - //mode = Tv_FactoryWhiteBalanceColorTempMappingFbc2G9(temp_mode); - - return mode; - } - return -1; -} - -int CTv::Tv_FactorySet_FBC_Backlight_N310 ( int value ) -{ - if (fbcIns != NULL) { - fbcIns->cfbc_Set_Backlight(COMM_DEV_SERIAL, value); - SSMSaveFBCN310BackLightVal(value); - return 0; - } - - return -1; -} - -int CTv::Tv_FactoryGet_FBC_Backlight_N310 ( void ) -{ - int val = 0; - - if (fbcIns != NULL) { - SSMReadFBCN310BackLightVal(&val); - return val; - } - - return -1; -} - -int CTv::Tv_FactorySet_FBC_Bluetooth_IIS_N310 ( int value ) -{ - if (fbcIns != NULL) { - fbcIns->cfbc_Set_Bluetooth_IIS_onoff(COMM_DEV_SERIAL, value); - return 0; - } - - return -1; -} - -int CTv::Tv_FactoryGet_FBC_Bluetooth_IIS_N310 ( void ) -{ - int temp_value = 0; - - if (fbcIns != NULL) { - fbcIns->cfbc_Get_Bluetooth_IIS_onoff(COMM_DEV_SERIAL, &temp_value); - return temp_value; - } - - return 0; -} - -int CTv::Tv_FactorySet_FBC_Led_N310 ( int val_1, int val_2, int val_3 ) -{ - int val = 0; - - if (fbcIns != NULL) { - val = fbcIns->cfbc_Set_Led_onoff(COMM_DEV_SERIAL, val_1, val_2, val_3); - return val; - } - - return -1; -} - -int CTv::Tv_FactorySet_VbyOne_Spread_Spectrum_N311 ( int value ) -{ - if (fbcIns != NULL) { - return -1; - } else { - LOGD("%s, Set spectrum for T868 V-by-one....%d....\n", __FUNCTION__ , value); - SSMSaveN311_VbyOne_Spread_Spectrum_Val(value); - - switch (value) { - case 0: - //SetFileAttrValue ( SYS_DROILOGIC_DEBUG ,"w 0x135c5091 c 0x10ca"); - //SetFileAttrValue ( SYS_DROILOGIC_DEBUG ,"w 0x801da72c c 0x10cb"); - break; - case 1: - SetFileAttrValue ( SYS_DROILOGIC_DEBUG, "w 0x1ba05091 c 0x10ca"); - SetFileAttrValue ( SYS_DROILOGIC_DEBUG, "w 0x80bda72c c 0x10cb"); - break; - default: - LOGD("%s, Set spectrum for T868 V-by-one....%d....\n", __FUNCTION__ , value); - break; - } - - return 0; - } -} - -int CTv::Tv_FactoryGet_VbyOne_Spread_Spectrum_N311 ( void ) -{ - int val = 0; - if (fbcIns != NULL) { - return -1; - } else { - SSMReadN311_VbyOne_Spread_Spectrum_Val(&val); - return val; - } -} - -int CTv::Tv_FactorySet_FBC_AP_STANDBY_N310 ( int value ) -{ - if (fbcIns != NULL) { - fbcIns->cfbc_Set_AP_STANDBY_N310(COMM_DEV_SERIAL, value); - return 0; - } - - return -1; -} - -int CTv::Tv_FactoryGet_FBC_AP_STANDBY_N310( void ) -{ - int temp_value = 0; - - if (fbcIns != NULL) { - fbcIns->cfbc_Get_AP_STANDBY_N310(COMM_DEV_SERIAL, &temp_value); - return temp_value; - } - - return 0; -} - -int CTv::Tv_FactorySet_Uboot_Stage(int value) -{ - if (fbcIns != NULL) { - fbcIns->cfbc_Set_Fbc_Uboot_Stage(COMM_DEV_SERIAL, value); - return 0; - } - - return -1; -} - -//audio -void CTv::TvAudioOpen() -{ - SetAudioAVOutMute(CC_AUDIO_UNMUTE); - SetAudioSPDIFMute(CC_AUDIO_UNMUTE); - project_info_t tmp_info; - if (GetProjectInfo(&tmp_info) == 0) { - strncpy(mMainVolLutTableExtraName, tmp_info.amp_curve_name, CC_PROJECT_INFO_ITEM_MAX_LEN - 1); - } - openTvAudio(); -} - -void CTv::AudioCtlUninit() -{ - int oldMuteStatus; - - oldMuteStatus = GetAudioMuteForTv(); - SetAudioMuteForTv(CC_AUDIO_MUTE); - - //AudioCtlUninit(); - AudioSetAudioInSource (CC_AUDIO_IN_SOURCE_HDMI); - SetDAC_Digital_PlayBack_Volume(255); - AudioSetAudioSourceType (AUDIO_MPEG_SOURCE); - UnInitTvAudio(); - SetAudioVolumeCompensationVal(0); - SetAudioMasterVolume(GetAudioMasterVolume()); - UnInitSetTvAudioCard(); - - SetAudioMuteForTv(oldMuteStatus); -} - -char *CTv::GetMainVolLutTableExtraName() -{ - return mMainVolLutTableExtraName; -} - -//audio -int CTv::SetAudioMuteForSystem(int muteOrUnmute) -{ - int ret = 0; - LOGD("SetAudioMuteForSystem sysMuteStats=%d, tvMuteStatus=%d, toMute=%d", mAudioMuteStatusForSystem, mAudioMuteStatusForTv, muteOrUnmute); - mAudioMuteStatusForSystem = muteOrUnmute; - ret |= SetDacMute(mAudioMuteStatusForSystem, CC_DAC_MUTE_TYPE_EXTERNAL); - ret |= SetAudioI2sMute(mAudioMuteStatusForSystem | mAudioMuteStatusForTv); - return ret; -} - -int CTv::GetAudioMuteForSystem() -{ - return mAudioMuteStatusForSystem; -} - -int CTv::SetAudioMuteForTv(int muteOrUnmute) -{ - int ret = 0; - mAudioMuteStatusForTv = muteOrUnmute; - LOGD("SetAudioMuteForTv sysMuteStats=%d, tvMuteStatus=%d, toMute=%d", mAudioMuteStatusForSystem, mAudioMuteStatusForTv, muteOrUnmute); - ret |= SetDacMute(mAudioMuteStatusForSystem | mAudioMuteStatusForTv, CC_DAC_MUTE_TYPE_EXTERNAL | CC_DAC_MUTE_TYPE_INTERNAL); - ret |= SetAudioI2sMute(mAudioMuteStatusForTv); - return ret; -} - -int CTv::GetAudioMuteForTv() -{ - return mAudioMuteStatusForTv; -} - -int CTv::GetDbxTvMode(int *mode, int *son_value, int *vol_value, int *sur_value) -{ - *mode = 0; - return SSMReadAudioDbxTvValue(son_value, vol_value, sur_value); -} - -int CTv::SetAudioSPDIFSwitch(int tmp_val) -{ - int muteStatus = CC_AUDIO_UNMUTE; - - SaveCurAudioSPDIFSwitch(tmp_val); - - if (tmp_val == CC_SWITCH_OFF /*|| mAudioMuteStatusForSystem == CC_AUDIO_MUTE || mAudioMuteStatusForTv == CC_AUDIO_MUTE*/) { - muteStatus = CC_AUDIO_MUTE; - } else { - muteStatus = CC_AUDIO_UNMUTE; - } - - SetAudioSPDIFMute(muteStatus); - return 0; -} - -int CTv::AudioHandleHeadsetPlugIn() -{ - return 0; -} - -int CTv::AudioHandleHeadsetPullOut() -{ - return 0; -} - -int CTv::Tv_SetDRC_OnOff(int on_off) -{ - on_off = on_off; - return 0; -} - -int CTv::Tv_GetDRC_OnOff(void) -{ - return 0; -} - -void CTv::updateSubtitle(int pic_width, int pic_height) -{ - TvEvent::SubtitleEvent ev; - ev.pic_width = pic_width; - ev.pic_height = pic_height; - sendTvEvent(ev); -} - -int CTv::setSubtitleBuffer(char *share_mem) -{ - mSubtitle.setBuffer(share_mem); - return 0; -} - -int CTv::initSubtitle(int bitmapWidth, int bitmapHeight) -{ - return mSubtitle.sub_init(bitmapWidth, bitmapHeight); -} - -int CTv::lockSubtitle() -{ - return mSubtitle.sub_lock(); -} - -int CTv::unlockSubtitle() -{ - return mSubtitle.sub_unlock(); -} - -int CTv::getSubSwitchStatus() -{ - return mSubtitle.sub_switch_status(); -} - -int CTv::startSubtitle(int dmx_id, int pid, int page_id, int anc_page_id) -{ - return mSubtitle.sub_start_dvb_sub(dmx_id, pid, page_id, anc_page_id); -} - -int CTv::stopSubtitle() -{ - return mSubtitle.sub_stop_dvb_sub(); -} - -//-------------------------------------------------- - - -//Audio Mute -int CTv::SetAudioI2sMute(int muteStatus) -{ - int vol = 256; - if (muteStatus == CC_AUDIO_MUTE) { - vol = 0; - } else { - vol = 256; - } - CFile::setFileAttrValue(SYS_AUIDO_DIRECT_RIGHT_GAIN, vol); - CFile::setFileAttrValue(SYS_AUIDO_DIRECT_LEFT_GAIN, vol); - return 0; -} - -int CTv::SetDacMute(int muteStatus, int mute_type) -{ - int tmp_ret = 0; - if (mute_type & CC_DAC_MUTE_TYPE_INTERNAL) { - tmp_ret |= mAudioAlsa.SetInternalDacMute(muteStatus); - } - - if (mute_type & CC_DAC_MUTE_TYPE_EXTERNAL) { - int set_val = 0; - int aud_arch_type = GetAudioArchitectureTypeCFG(); - - if (aud_arch_type == CC_DAC_G9TV_EXTERNAL_DAC_ON_BOARD) { - if (muteStatus == CC_AUDIO_MUTE) { - set_val = CC_MUTE_ON; - } else if (muteStatus == CC_AUDIO_UNMUTE) { - set_val = CC_MUTE_OFF; - } else { - return -1; - } - - mAudioAlsa.SetExternalDacChannelSwitch(1, set_val); - mAudioAlsa.SetExternalDacChannelSwitch(2, set_val); - //showboz: can disable it - mAudioAlsa.SetExternalDacChannelSwitch(3, set_val); - } else if (aud_arch_type == CC_DAC_G9TV_EXTERNAL_DAC_OFF_BOARD_FBC) { - SendCmdToOffBoardFBCExternalDac(AUDIO_CMD_SET_MUTE, muteStatus); - } else if (aud_arch_type == CC_DAC_G9TV_EXTERNAL_DAC_CUSTOMER_LIB) { - mCustomerCtrl.SetMute((muteStatus == CC_AUDIO_MUTE) ? CAudioCustomerCtrl::MUTE : CAudioCustomerCtrl::UNMUTE); - } else if (aud_arch_type == CC_DAC_G9TV_EXTERNAL_DAC_DIGITAL) { - mAudioAlsa.SetDigitalMute(muteStatus); - } - mAudioAlsa.setAudioPcmPlaybackMute(muteStatus); - } - return tmp_ret; -} - -int CTv::SetAudioAVOutMute(int muteStatus) -{ - SSMSaveAudioAVOutMuteVal(muteStatus); - return mAudioAlsa.SetInternalDacMute(muteStatus); -} - -int CTv::GetAudioAVOutMute() -{ - int8_t tmp_ch = 0; - SSMReadAudioAVOutMuteVal(&tmp_ch); - return tmp_ch; -} - -int CTv::SetAudioSPDIFMute(int muteStatus) -{ - if (GetCurAudioSPDIFSwitch() == CC_SWITCH_OFF) { - muteStatus = CC_AUDIO_MUTE; - } - - SSMSaveAudioSPIDFMuteVal(muteStatus); - return mAudioAlsa.SetSPDIFMute(muteStatus); -} - -int CTv::GetAudioSPDIFMute() -{ - int8_t tmp_ch = 0; - SSMReadAudioSPIDFMuteVal(&tmp_ch); - return tmp_ch; -} - -int CTv::GetCurAudioSPDIFSwitch() -{ - return mCurAudioSPDIFSwitch; -} - -int CTv::SaveCurAudioSPDIFSwitch(int tmp_val) -{ - mCurAudioSPDIFSwitch = tmp_val; - SSMSaveAudioSPDIFSwitchVal(tmp_val); - return tmp_val; -} - -int CTv::LoadCurAudioSPDIFSwitch() -{ - int8_t tmp_ch = 0; - SSMReadAudioSPDIFSwitchVal(&tmp_ch); - mCurAudioSPDIFSwitch = tmp_ch; - if (mCurAudioSPDIFSwitch != CC_SWITCH_ON - && mCurAudioSPDIFSwitch != CC_SWITCH_OFF) { - SaveCurAudioSPDIFSwitch (CC_SWITCH_ON); - } - return mCurAudioSPDIFSwitch; -} - -//Audio SPDIF Mode -int CTv::SetAudioSPDIFMode(int tmp_val) -{ - LOGD("%s : tmp_val = %d\n", __FUNCTION__, tmp_val); - mCurAudioSPDIFMode = tmp_val; - SetSPDIFMode(tmp_val); - return 0; -} - -int CTv::GetCurAudioSPDIFMode() -{ - return mCurAudioSPDIFMode; -} - -int CTv::SaveCurAudioSPDIFMode(int tmp_val) -{ - mCurAudioSPDIFMode = tmp_val; - SSMSaveAudioSPDIFModeVal(tmp_val); - return tmp_val; -} - -int CTv::LoadCurAudioSPDIFMode() -{ - int8_t tmp_ch = 0; - SSMReadAudioSPDIFModeVal(&tmp_ch); - mCurAudioSPDIFMode = tmp_ch; - if (mCurAudioSPDIFMode != CC_SPDIF_MODE_PCM - && mCurAudioSPDIFMode != CC_SPDIF_MODE_RAW) { - SaveCurAudioSPDIFMode (CC_SPDIF_MODE_PCM); - } - return mCurAudioSPDIFMode; -} - -int CTv::SetAudioMasterVolume(int tmp_vol) -{ - mCustomAudioMasterVolume = tmp_vol; - - //Volume Compensation - tmp_vol += mVolumeCompensationVal; - - if (tmp_vol > CC_MAX_SOUND_VOL) { - tmp_vol = CC_MAX_SOUND_VOL; - } - - if (tmp_vol < CC_MIN_SOUND_VOL) { - tmp_vol = CC_MIN_SOUND_VOL; - } - - int tmp_ret = 0; - int aud_arch_type = GetAudioArchitectureTypeCFG(); - - if (aud_arch_type == CC_DAC_G9TV_INTERNAL_DAC) { - tmp_ret = mAudioAlsa.SetInternalDacMainVolume(tmp_vol); - } else if (aud_arch_type == CC_DAC_G9TV_EXTERNAL_DAC_ON_BOARD) { - int digit_vol = 0; - int vol_gain_val = 0; - int vol_buf[2] = {0, 0}; - - //handle l&r channel volume for balance - mAudioAlsa.CalculateBalanceVol(255, mMainVolumeBalanceVal, vol_buf); - - tmp_ret |= mAudioAlsa.SetExternalDacChannelVolume(1, vol_buf[0]); - tmp_ret |= mAudioAlsa.SetExternalDacChannelVolume(2, vol_buf[1]); - - //handle master channel volume - digit_vol = mAudioAlsa.TransVolumeBarVolToDigitalVol(mAudioAlsa.GetMainVolDigitLutBuf(), tmp_vol); - - vol_gain_val = mAudioAlsa.GetMainVolumeGain(); - digit_vol += vol_gain_val; - tmp_ret |= mAudioAlsa.SetExternalDacChannelVolume(0, digit_vol); - } else if (aud_arch_type == CC_DAC_G9TV_EXTERNAL_DAC_OFF_BOARD_FBC) { - tmp_ret = SendCmdToOffBoardFBCExternalDac(AUDIO_CMD_SET_VOLUME_BAR, tmp_vol); - } else if (aud_arch_type == CC_DAC_G9TV_EXTERNAL_DAC_CUSTOMER_LIB) { - tmp_ret = mCustomerCtrl.SetVolumeBar(tmp_vol); - } else if (aud_arch_type == CC_DAC_G9TV_EXTERNAL_DAC_DIGITAL) { - int vol_buf[2] = {0, 0}; - mAudioAlsa.CalculateBalanceVol(tmp_vol, mMainVolumeBalanceVal, vol_buf); - tmp_ret = mAudioAlsa.SetDigitalMainVolume(vol_buf[0], vol_buf[1]); - } - if ( Get2d4gHeadsetEnable() == 1 ) { - setAudioPcmPlaybackVolume(tmp_vol); - } - return 0; -} - -int CTv::GetAudioMasterVolume() -{ - return mCustomAudioMasterVolume; -} - -int CTv::GetCurAudioMasterVolume() -{ - return mCurAudioMasterVolume; -} - -int CTv::SaveCurAudioMasterVolume(int tmp_vol) -{ - mCurAudioMasterVolume = tmp_vol; - SSMSaveAudioMasterVolume(tmp_vol); - return tmp_vol; -} - -int CTv::LoadCurAudioMasterVolume() -{ - int8_t tmp_ch = 0; - SSMReadAudioMasterVolume(&tmp_ch); - mCurAudioMasterVolume = tmp_ch; - if (mCurAudioMasterVolume < CC_MIN_SOUND_VOL - || mCurAudioMasterVolume > CC_MAX_SOUND_VOL) { - SaveCurAudioMasterVolume (CC_DEF_SOUND_VOL); - } - mCustomAudioMasterVolume = mCurAudioMasterVolume; - - return mCurAudioMasterVolume; -} - -int CTv::SetAudioBalance(int tmp_val) -{ - mCustomAudioBalance = tmp_val; - - int aud_arch_type = GetAudioArchitectureTypeCFG(); - - mMainVolumeBalanceVal = tmp_val; - - if (aud_arch_type == CC_DAC_G9TV_EXTERNAL_DAC_OFF_BOARD_FBC) { - SendCmdToOffBoardFBCExternalDac(AUDIO_CMD_SET_BALANCE, mMainVolumeBalanceVal); - } else if (aud_arch_type == CC_DAC_G9TV_EXTERNAL_DAC_CUSTOMER_LIB) { - mCustomerCtrl.SetBlance(mMainVolumeBalanceVal); - } else { - SetAudioMasterVolume(GetAudioMasterVolume()); - } - return 0; -} - -int CTv::GetAudioBalance() -{ - return mCustomAudioBalance; -} - -int CTv::GetCurAudioBalance() -{ - return mCurAudioBalance; -} - -int CTv::SaveCurAudioBalance(int tmp_val) -{ - mCurAudioBalance = tmp_val; - SSMSaveAudioBalanceVal(tmp_val); - return tmp_val; -} - -int CTv::LoadCurAudioBalance() -{ - int8_t tmp_ch = 0; - SSMReadAudioBalanceVal(&tmp_ch); - mCurAudioBalance = tmp_ch; - if (mCurAudioBalance < CC_MIN_SOUND_BALANCE_VAL - || mCurAudioBalance > CC_MAX_SOUND_BALANCE_VAL) { - SaveCurAudioBalance (CC_DEF_SOUND_BALANCE_VAL); - } - - mCustomAudioBalance = mCurAudioBalance; - - return mCurAudioBalance; -} - -int CTv::SetAudioVolumeCompensationVal(int tmp_vol_comp_val) -{ - mVolumeCompensationVal = tmp_vol_comp_val; - LOGD("%s, new vol comp value = %d.\n", __FUNCTION__, tmp_vol_comp_val); - return mVolumeCompensationVal; -} - -int CTv::SetAudioSupperBassVolume(int tmp_vol) -{ - mCustomAudioSupperBassVolume = tmp_vol; - - int aud_arch_type = GetAudioArchitectureTypeCFG(); - int tmp_ret = 0; - - if (aud_arch_type == CC_DAC_G9TV_INTERNAL_DAC) { - return 0; - } else if (aud_arch_type == CC_DAC_G9TV_EXTERNAL_DAC_ON_BOARD) { - int digit_vol = 0; - int vol_gain_val = 0; - - digit_vol = mAudioAlsa.TransVolumeBarVolToDigitalVol(mAudioAlsa.GetMainVolDigitLutBuf(), tmp_vol); - - vol_gain_val = mAudioAlsa.GetSupperBassVolumeGain(); - digit_vol += vol_gain_val; - if (digit_vol < CC_MIN_DAC_SUB_WOOFER_VOLUME) { - digit_vol = CC_MIN_DAC_SUB_WOOFER_VOLUME; - } else if (digit_vol > CC_MAX_DAC_SUB_WOOFER_VOLUME) { - digit_vol = CC_MAX_DAC_SUB_WOOFER_VOLUME; - } - - tmp_ret = mAudioAlsa.SetExternalDacChannelVolume(3, digit_vol); - } else if (aud_arch_type == CC_DAC_G9TV_EXTERNAL_DAC_OFF_BOARD_FBC) { - tmp_ret = SendCmdToOffBoardFBCExternalDac(AUDIO_CMD_SET_SUBCHANNEL_VOLUME, tmp_vol); - } - - return tmp_ret; -} - -int CTv::GetAudioSupperBassVolume() -{ - return mCustomAudioSupperBassVolume; -} - -int CTv::GetCurAudioSupperBassVolume() -{ - return mCurAudioSupperBassVolume; -} - -int CTv::SaveCurAudioSupperBassVolume(int tmp_vol) -{ - mCurAudioSupperBassVolume = tmp_vol; - SSMSaveAudioSupperBassVolume(tmp_vol); - - return tmp_vol; -} - -int CTv::LoadCurAudioSupperBassVolume() -{ - int8_t tmp_ch = 0; - SSMReadAudioSupperBassVolume(&tmp_ch); - mCurAudioSupperBassVolume = tmp_ch; - if (mCurAudioSupperBassVolume < CC_MIN_SUPPERBASS_VOL - || mCurAudioSupperBassVolume > CC_MAX_SUPPERBASS_VOL) { - SaveCurAudioSupperBassVolume (CC_DEF_SUPPERBASS_VOL); - } - mCustomAudioSupperBassVolume = mCurAudioSupperBassVolume; - - return mCurAudioSupperBassVolume; -} - -int CTv::SetAudioSupperBassSwitch(int tmp_val) -{ - mCustomAudioSupperBassSwitch = tmp_val; - - if (GetAudioSupperBassSwitch() == CC_SWITCH_OFF) { - return SetAudioSupperBassVolume(CC_MIN_SUPPERBASS_VOL); - } - - return SetAudioSupperBassVolume(GetAudioSupperBassVolume()); -} - -int CTv::GetAudioSupperBassSwitch() -{ - if (GetAudioSupperBassSwitchDisableCFG() != 0) { - return CC_SWITCH_ON; - } - - return mCustomAudioSupperBassSwitch; -} - -int CTv::GetCurAudioSupperBassSwitch() -{ - if (GetAudioSupperBassSwitchDisableCFG() != 0) { - return CC_SWITCH_ON; - } - - return mCurAudioSupperBassSwitch; -} - -int CTv::SaveCurAudioSupperBassSwitch(int tmp_val) -{ - mCurAudioSupperBassSwitch = tmp_val; - SSMSaveAudioSupperBassSwitch(tmp_val); - SetSupperBassSRSSpeakerSize(); - return tmp_val; -} - -int CTv::LoadCurAudioSupperBassSwitch() -{ - int8_t tmp_ch = 0; - SSMReadAudioSupperBassSwitch(&tmp_ch); - mCurAudioSupperBassSwitch = tmp_ch; - if (mCurAudioSupperBassSwitch != CC_SWITCH_ON - && mCurAudioSupperBassSwitch != CC_SWITCH_OFF) { - SaveCurAudioSupperBassSwitch (CC_SWITCH_OFF); - } - mCustomAudioSupperBassSwitch = mCurAudioSupperBassSwitch; - - return mCurAudioSupperBassSwitch; -} - -void CTv::SetSupperBassSRSSpeakerSize() -{ - int tmp_speakersize = -1; - - if (GetAudioSrsTruBass() == CC_SWITCH_ON) { - tmp_speakersize = GetAudioSRSSupperBassTrubassSpeakerSizeCfg(); - if (tmp_speakersize >= 0) { - mAudioEffect.SetSrsTrubassSpeakerSize(tmp_speakersize); - } - } -} - -int CTv::SetAudioSRSSurround(int tmp_val) -{ - mCustomAudioSRSSurround = tmp_val; - RefreshSrsEffectAndDacGain(); - return 0; -} - -int CTv::GetAudioSRSSurround() -{ - return mCustomAudioSRSSurround; -} - -int CTv::GetCurAudioSRSSurround() -{ - return mCurAudioSRSSurround; -} - -int CTv::SaveCurAudioSrsSurround(int tmp_val) -{ - mCurAudioSRSSurround = tmp_val; - SSMSaveAudioSRSSurroundSwitch(tmp_val); - return tmp_val; -} - -int CTv::LoadCurAudioSrsSurround() -{ - int8_t tmp_ch = 0; - - SSMReadAudioSRSSurroundSwitch(&tmp_ch); - mCurAudioSRSSurround = tmp_ch; - if (mCurAudioSRSSurround != CC_SWITCH_ON - && mCurAudioSRSSurround != CC_SWITCH_OFF) { - SaveCurAudioSrsSurround (CC_SWITCH_OFF); - } - mCustomAudioSRSSurround = mCurAudioSRSSurround; - - return mCurAudioSRSSurround; -} - -int CTv::SetAudioSrsDialogClarity(int tmp_val) -{ - mCustomAudioSrsDialogClarity = tmp_val; - RefreshSrsEffectAndDacGain(); - return 0; -} - -int CTv::GetAudioSrsDialogClarity() -{ - return mCustomAudioSrsDialogClarity; -} - -int CTv::GetCurAudioSrsDialogClarity() -{ - return mCurAudioSrsDialogClarity; -} - -int CTv::SaveCurAudioSrsDialogClarity(int tmp_val) -{ - mCurAudioSrsDialogClarity = tmp_val; - SSMSaveAudioSRSDialogClaritySwitch(tmp_val); - return tmp_val; -} - -int CTv::LoadCurAudioSrsDialogClarity() -{ - int8_t tmp_ch = 0; - - SSMReadAudioSRSDialogClaritySwitch(&tmp_ch); - mCurAudioSrsDialogClarity = tmp_ch; - if (mCurAudioSrsDialogClarity != CC_SWITCH_ON - && mCurAudioSrsDialogClarity != CC_SWITCH_OFF) { - SaveCurAudioSrsDialogClarity (CC_SWITCH_OFF); - } - mCustomAudioSrsDialogClarity = mCurAudioSrsDialogClarity; - - return mCurAudioSrsDialogClarity; -} - -int CTv::SetAudioSrsTruBass(int tmp_val) -{ - mCustomAudioSrsTruBass = tmp_val; - RefreshSrsEffectAndDacGain(); - return 0; -} - -int CTv::GetAudioSrsTruBass() -{ - return mCustomAudioSrsTruBass; -} - -int CTv::GetCurAudioSrsTruBass() -{ - return mCurAudioSrsTruBass; -} - -int CTv::SaveCurAudioSrsTruBass(int tmp_val) -{ - mCurAudioSrsTruBass = tmp_val; - SSMSaveAudioSRSTruBassSwitch(tmp_val); - return tmp_val; -} - -int CTv::LoadCurAudioSrsTruBass() -{ - int8_t tmp_ch = 0; - - SSMReadAudioSRSTruBassSwitch(&tmp_ch); - mCurAudioSrsTruBass = tmp_ch; - if (mCurAudioSrsTruBass != CC_SWITCH_ON - && mCurAudioSrsTruBass != CC_SWITCH_OFF) { - SaveCurAudioSrsTruBass (CC_SWITCH_OFF); - } - mCustomAudioSrsTruBass = mCurAudioSrsTruBass; - - return mCurAudioSrsTruBass; -} - -void CTv::RefreshSrsEffectAndDacGain() -{ - int tmp_gain_val = 0; - int surround_switch = CC_SWITCH_OFF; - int trubass_switch = CC_SWITCH_OFF; - int dialogclarity_switch = CC_SWITCH_OFF; - trubass_switch = GetAudioSrsTruBass(); - dialogclarity_switch = GetAudioSrsDialogClarity(); - surround_switch = GetAudioSRSSurround(); - - if (GetAudioSRSSourroundEnableCFG() == 0) { - return; - } - - if (surround_switch == CC_SWITCH_ON) { - mAudioEffect.SetSrsSurroundSwitch(CC_SWITCH_ON); - tmp_gain_val = GetAudioSRSGainCfg(CFG_AUDIO_SRS_SOURROUND_GAIN, 50); - mAudioEffect.SetSrsSurroundGain(tmp_gain_val); - - int input_gain_val = GetAudioSRSGainCfg(CFG_AUDIO_SRS_INPUT_GAIN, 50); - int out_gain_val = GetAudioSRSGainCfg(CFG_AUDIO_SRS_OUTPUT_GAIN, 50); - mAudioEffect.SetSrsInputOutputGain(input_gain_val, out_gain_val); - - if (trubass_switch == CC_SWITCH_ON - && dialogclarity_switch == CC_SWITCH_OFF) { - - mAudioEffect.SetSrsTruBassSwitch (CC_SWITCH_ON); - tmp_gain_val = GetAudioSRSGainCfg(CFG_AUDIO_SRS_TRUBASS_GAIN, 50); - mAudioEffect.SetSrsTruBassGain(tmp_gain_val); - tmp_gain_val = GetAudioSRSGainCfg(CFG_AUDIO_SRS_TRUBASS_SPEAKERSIZE, 2); - mAudioEffect.SetSrsTrubassSpeakerSize(tmp_gain_val); - - mAudioEffect.SetSrsDialogClaritySwitch (CC_SWITCH_OFF); - - } else if (trubass_switch == CC_SWITCH_OFF - && dialogclarity_switch == CC_SWITCH_ON) { - - mAudioEffect.SetSrsDialogClaritySwitch (CC_SWITCH_ON); - tmp_gain_val = GetAudioSRSGainCfg(CFG_AUDIO_SRS_CLARITY_GAIN, 30); - mAudioEffect.SetSrsDialogClarityGain(tmp_gain_val); - tmp_gain_val = GetAudioSRSGainCfg(CFG_AUDIO_SRS_DEFINITION_GAIN, 20); - mAudioEffect.SetSrsDefinitionGain(tmp_gain_val); - - mAudioEffect.SetSrsTruBassSwitch (CC_SWITCH_OFF); - - } else if (trubass_switch == CC_SWITCH_ON - && dialogclarity_switch == CC_SWITCH_ON) { - - mAudioEffect.SetSrsTruBassSwitch (CC_SWITCH_ON); - tmp_gain_val = GetAudioSRSGainCfg(CFG_AUDIO_SRS_TRUBASS_GAIN, 50); - mAudioEffect.SetSrsTruBassGain(tmp_gain_val); - tmp_gain_val = GetAudioSRSGainCfg(CFG_AUDIO_SRS_TRUBASS_SPEAKERSIZE, 2); - mAudioEffect.SetSrsTrubassSpeakerSize(tmp_gain_val); - - mAudioEffect.SetSrsDialogClaritySwitch(CC_SWITCH_ON); - tmp_gain_val = GetAudioSRSGainCfg(CFG_AUDIO_SRS_CLARITY_GAIN, 30); - mAudioEffect.SetSrsDialogClarityGain(tmp_gain_val); - tmp_gain_val = GetAudioSRSGainCfg(CFG_AUDIO_SRS_DEFINITION_GAIN, 20); - mAudioEffect.SetSrsDefinitionGain(tmp_gain_val); - - } else if (trubass_switch == CC_SWITCH_OFF - && dialogclarity_switch == CC_SWITCH_OFF) { - mAudioEffect.SetSrsTruBassSwitch (CC_SWITCH_OFF); - mAudioEffect.SetSrsDialogClaritySwitch(CC_SWITCH_OFF); - } - SetSupperBassSRSSpeakerSize(); - } else { - mAudioEffect.SetSrsSurroundSwitch (CC_SWITCH_OFF); - mAudioEffect.SetSrsTruBassSwitch(CC_SWITCH_OFF); - mAudioEffect.SetSrsDialogClaritySwitch(CC_SWITCH_OFF); - } - //Refesh DAC gain - int main_gain_val = 0; - if (surround_switch == CC_SWITCH_ON) { - main_gain_val = GetAudioEffectAmplifierGainCfg(CFG_AUDIO_SRS_SOURROUND_MASTER_GAIN, 6, 24); - if (dialogclarity_switch == CC_SWITCH_ON - && trubass_switch == CC_SWITCH_OFF) { - main_gain_val = GetAudioEffectAmplifierGainCfg(CFG_AUDIO_SRS_CLARITY_MASTER_GAIN, 6, 24); - } else if (dialogclarity_switch == CC_SWITCH_OFF - && trubass_switch == CC_SWITCH_ON) { - main_gain_val = GetAudioEffectAmplifierGainCfg(CFG_AUDIO_SRS_TRUBASS_MASTER_GAIN, 6, 24); - } else if (dialogclarity_switch == CC_SWITCH_ON - && trubass_switch == CC_SWITCH_ON) { - main_gain_val = GetAudioEffectAmplifierGainCfg(CFG_AUDIO_SRS_TRUBASS_CLARITY_MASTER_GAIN, 6, 24); - } - } - mAudioAlsa.SetMainVolumeGain(main_gain_val); -} - -int CTv::SetAudioBassVolume(int tmp_vol) -{ - int nMinBassVol = 0, nMaxBassVol = 0; - - nMinBassVol = GetBassUIMinGainVal(); - nMaxBassVol = GetBassUIMaxGainVal(); - - if (tmp_vol < nMinBassVol || tmp_vol > nMaxBassVol) { - tmp_vol = (nMaxBassVol + nMinBassVol) / 2; - } - - mCustomAudioBassVolume = tmp_vol; - tmp_vol = MappingTrebleBassAndEqualizer(GetAudioBassVolume(), 0, - nMinBassVol, nMaxBassVol); - return SetSpecialIndexEQGain(CC_EQ_BASS_IND, tmp_vol); -} - -int CTv::GetAudioBassVolume() -{ - return mCustomAudioBassVolume; -} - -int CTv::GetCurAudioBassVolume() -{ - return mCurAudioBassVolume; -} - -int CTv::SaveCurAudioBassVolume(int tmp_vol) -{ - int nMinBassVol = 0, nMaxBassVol = 0; - - nMinBassVol = GetBassUIMinGainVal(); - nMaxBassVol = GetBassUIMaxGainVal(); - - if (tmp_vol < nMinBassVol || tmp_vol > nMaxBassVol) { - tmp_vol = (nMaxBassVol + nMinBassVol) / 2; - } - - RealSaveCurAudioBassVolume(tmp_vol, 1); - - tmp_vol = MappingTrebleBassAndEqualizer(GetCurAudioBassVolume(), 0, - nMinBassVol, nMaxBassVol); - return SaveSpecialIndexEQGain(CC_EQ_BASS_IND, tmp_vol); -} - -int CTv::RealSaveCurAudioBassVolume(int tmp_vol, int sound_mode_judge) -{ - mCurAudioBassVolume = tmp_vol; - SSMSaveAudioBassVolume(tmp_vol); - - if (sound_mode_judge == 1) { - if (GetAudioSoundMode() != CC_SOUND_MODE_USER) { - SaveCurAudioSoundMode (CC_SOUND_MODE_USER); - mCustomAudioSoundMode = mCurAudioSoundMode; - } - } - return mCurAudioBassVolume; -} - -int CTv::LoadCurAudioBassVolume() -{ - int nMinBassVol = 0, nMaxBassVol = 0; - int8_t tmp_ch = 0; - - nMinBassVol = GetBassUIMinGainVal(); - nMaxBassVol = GetBassUIMaxGainVal(); - - SSMReadAudioBassVolume(&tmp_ch); - mCurAudioBassVolume = tmp_ch; - if (mCurAudioBassVolume < nMinBassVol - || mCurAudioBassVolume > nMaxBassVol) { - RealSaveCurAudioBassVolume((nMaxBassVol + nMinBassVol) / 2, 0); - } - - mCustomAudioBassVolume = mCurAudioBassVolume; - return mCurAudioBassVolume; -} - -int CTv::SetAudioTrebleVolume(int tmp_vol) -{ - int nMinTrebleVol = 0, nMaxTrebleVol = 0; - - nMinTrebleVol = GetTrebleUIMinGainVal(); - nMaxTrebleVol = GetTrebleUIMaxGainVal(); - - if (tmp_vol < nMinTrebleVol || tmp_vol > nMaxTrebleVol) { - tmp_vol = (nMaxTrebleVol + nMinTrebleVol) / 2; - } - - mCustomAudioTrebleVolume = tmp_vol; - - tmp_vol = MappingTrebleBassAndEqualizer(GetAudioTrebleVolume(), 0, - nMinTrebleVol, nMaxTrebleVol); - return SetSpecialIndexEQGain(CC_EQ_TREBLE_IND, tmp_vol); -} - -int CTv::GetAudioTrebleVolume() -{ - return mCustomAudioTrebleVolume; -} - -int CTv::GetCurAudioTrebleVolume() -{ - return mCurAudioTrebleVolume; -} - -int CTv::SaveCurAudioTrebleVolume(int tmp_vol) -{ - int nMinTrebleVol = 0, nMaxTrebleVol = 0; - - nMinTrebleVol = GetTrebleUIMinGainVal(); - nMaxTrebleVol = GetTrebleUIMaxGainVal(); - - if (tmp_vol < nMinTrebleVol || tmp_vol > nMaxTrebleVol) { - tmp_vol = (nMaxTrebleVol + nMinTrebleVol) / 2; - } - - RealSaveCurAudioTrebleVolume(tmp_vol, 1); - - tmp_vol = MappingTrebleBassAndEqualizer(GetCurAudioTrebleVolume(), 0, - nMinTrebleVol, nMaxTrebleVol); - return SaveSpecialIndexEQGain(CC_EQ_TREBLE_IND, tmp_vol); -} - -int CTv::RealSaveCurAudioTrebleVolume(int tmp_vol, int sound_mode_judge) -{ - mCurAudioTrebleVolume = tmp_vol; - SSMSaveAudioTrebleVolume(tmp_vol); - - if (sound_mode_judge == 1) { - if (GetAudioSoundMode() != CC_SOUND_MODE_USER) { - SaveCurAudioSoundMode (CC_SOUND_MODE_USER); - mCustomAudioSoundMode = mCurAudioSoundMode; - } - } - - return mCurAudioTrebleVolume; -} - -int CTv::LoadCurAudioTrebleVolume() -{ - int nMinTrebleVol = 0, nMaxTrebleVol = 0; - int8_t tmp_ch = 0; - - nMinTrebleVol = GetTrebleUIMinGainVal(); - nMaxTrebleVol = GetTrebleUIMaxGainVal(); - - SSMReadAudioTrebleVolume(&tmp_ch); - mCurAudioTrebleVolume = tmp_ch; - if (mCurAudioTrebleVolume < nMinTrebleVol - || mCurAudioTrebleVolume > nMaxTrebleVol) { - RealSaveCurAudioTrebleVolume((nMaxTrebleVol + nMinTrebleVol) / 2, 0); - } - - mCustomAudioTrebleVolume = mCurAudioTrebleVolume; - return mCurAudioTrebleVolume; -} - -int CTv::SetAudioSoundMode(int tmp_val) -{ - mCustomAudioSoundMode = tmp_val; - SetSpecialModeEQGain(mCustomAudioSoundMode); - - HandleTrebleBassVolume(); - return 0; -} - -int CTv::GetAudioSoundMode() -{ - return mCustomAudioSoundMode; -} - -int CTv::GetCurAudioSoundMode() -{ - return mCurAudioSoundMode; -} - -int CTv::SaveCurAudioSoundMode(int tmp_val) -{ - mCurAudioSoundMode = tmp_val; - SSMSaveAudioSoundModeVal(tmp_val); - return tmp_val; -} - -int CTv::LoadCurAudioSoundMode() -{ - int8_t tmp_ch = 0; - SSMReadAudioSoundModeVal(&tmp_ch); - mCurAudioSoundMode = tmp_ch; - if (mCurAudioSoundMode < CC_SOUND_MODE_START - || mCurAudioSoundMode > CC_SOUND_MODE_END) { - SaveCurAudioSoundMode (CC_SOUND_MODE_STD); - } - mCustomAudioSoundMode = mCurAudioSoundMode; - return mCurAudioSoundMode; -} - -int CTv::HandleTrebleBassVolume() -{ - int tmp_vol = 0; - int tmpEQGainBuf[128] = { 0 }; - int8_t tmp_ch = 0; - - GetCustomEQGain(tmpEQGainBuf); - - tmp_vol = MappingTrebleBassAndEqualizer(tmpEQGainBuf[CC_EQ_TREBLE_IND], 1, - GetTrebleUIMinGainVal(), GetTrebleUIMaxGainVal()); - mCustomAudioTrebleVolume = tmp_vol; - mCurAudioTrebleVolume = mCustomAudioTrebleVolume; - tmp_ch = mCustomAudioTrebleVolume; - SSMSaveAudioTrebleVolume(tmp_ch); - - tmp_vol = MappingTrebleBassAndEqualizer(tmpEQGainBuf[CC_EQ_BASS_IND], 1, - GetBassUIMinGainVal(), GetBassUIMaxGainVal()); - mCustomAudioBassVolume = tmp_vol; - mCurAudioBassVolume = mCustomAudioBassVolume; - tmp_ch = mCustomAudioBassVolume; - SSMSaveAudioBassVolume(tmp_ch); - return 0; -} - -int CTv::SetAudioWallEffect(int tmp_val) -{ - int tmp_treble_val; - int tmp_type = 0; - - mCustomAudioWallEffect = tmp_val; - - tmp_type = GetAudioWallEffectTypeCfg(); - if (tmp_type == 0) { - SetCustomEQGain(); - } else if (tmp_type == 1) { - int aud_arch_type = GetAudioArchitectureTypeCFG(); - if (aud_arch_type == CC_DAC_G9TV_INTERNAL_DAC) { - return 0; - } else if (aud_arch_type == CC_DAC_G9TV_EXTERNAL_DAC_ON_BOARD) { - mAudioAlsa.SetExternalDacEQMode(tmp_val); - } else if (aud_arch_type == CC_DAC_G9TV_EXTERNAL_DAC_OFF_BOARD_FBC) { - SendCmdToOffBoardFBCExternalDac(AUDIO_CMD_SET_EQ_MODE, tmp_val); - } - } - return 0; -} - -int CTv::GetAudioWallEffect() -{ - return mCustomAudioWallEffect; -} - -int CTv::GetCurAudioWallEffect() -{ - return mCurAudioWallEffect; -} - -int CTv::SaveCurAudioWallEffect(int tmp_val) -{ - mCurAudioWallEffect = tmp_val; - SSMSaveAudioWallEffectSwitch(tmp_val); - return tmp_val; -} - -int CTv::LoadCurAudioWallEffect() -{ - int8_t tmp_ch = 0; - SSMReadAudioWallEffectSwitch(&tmp_ch); - mCurAudioWallEffect = tmp_ch; - if (mCurAudioWallEffect != CC_SWITCH_ON - && mCurAudioWallEffect != CC_SWITCH_OFF) { - SaveCurAudioWallEffect (CC_SWITCH_OFF); - } - - mCustomAudioWallEffect = mCurAudioWallEffect; - return mCurAudioWallEffect; -} - -int CTv::SetAudioEQMode(int tmp_val) -{ - mCustomAudioEQMode = tmp_val; - return 0; -} - -int CTv::GetAudioEQMode() -{ - return mCustomAudioEQMode; -} - -int CTv::GetCurAudioEQMode() -{ - return mCurAudioEQMode; -} - -int CTv::SaveCurAudioEQMode(int tmp_val) -{ - mCurAudioEQMode = tmp_val; - SSMSaveAudioEQModeVal(tmp_val); - - return tmp_val; -} - -int CTv::LoadCurAudioEQMode() -{ - int8_t tmp_ch = 0; - SSMReadAudioEQModeVal(&tmp_ch); - mCurAudioEQMode = tmp_ch; - if (mCurAudioEQMode < CC_EQ_MODE_START - || mCurAudioEQMode > CC_EQ_MODE_END) { - SaveCurAudioEQMode (CC_EQ_MODE_START); - } - mCustomAudioEQMode = mCurAudioEQMode; - - return mCurAudioEQMode; -} - -int CTv::GetAudioEQRange(int range_buf[]) -{ - range_buf[0] = CC_MIN_EQ_GAIN_VAL; - range_buf[1] = CC_MAX_EQ_GAIN_VAL; - return 0; -} - -int CTv::GetAudioEQBandCount() -{ - return mAudioEffect.GetEQBandCount(); -} - -int CTv::SetAudioEQGain(int gain_buf[]) -{ - return AudioSetEQGain(gain_buf); -} - -int CTv::GetAudioEQGain(int gain_buf[]) -{ - return GetCustomEQGain(gain_buf); -} - -int CTv::GetCurAudioEQGain(int gain_buf[]) -{ - RealReadCurAudioEQGain(gain_buf); - return 0; -} - -int CTv::SaveCurAudioEQGain(int gain_buf[]) -{ - return RealSaveCurAudioEQGain(gain_buf, 1); -} - -int CTv::RealReadCurAudioEQGain(int gain_buf[]) -{ - ArrayCopy(gain_buf, mCurEQGainBuf, GetAudioEQBandCount()); - return 0; -} - -int CTv::RealSaveCurAudioEQGain(int gain_buf[], int sound_mode_judge) -{ - ArrayCopy(mCurEQGainBuf, gain_buf, GetAudioEQBandCount()); - ArrayCopy(mCurEQGainChBuf, gain_buf, GetAudioEQBandCount()); - SSMSaveAudioEQGain(0, GetAudioEQBandCount(), mCurEQGainChBuf); - - if (sound_mode_judge == 1) { - HandleTrebleBassVolume(); - SaveCurAudioSoundMode (CC_SOUND_MODE_USER); - mCustomAudioSoundMode = mCurAudioSoundMode; - } - - return 0; -} - -int CTv::LoadCurAudioEQGain() -{ - SSMReadAudioEQGain(0, GetAudioEQBandCount(), mCurEQGainChBuf); - ArrayCopy(mCurEQGainBuf, mCurEQGainChBuf, GetAudioEQBandCount()); - - for (int i = 0; i < GetAudioEQBandCount(); i++) { - if (mCurEQGainBuf[i] & 0x80) { - mCurEQGainBuf[i] = mCurEQGainBuf[i] - 256; - } - } - return 0; -} - -int CTv::SetAudioEQSwitch(int switch_val) -{ - return mAudioEffect.SetEQSwitch(switch_val); -} - -int CTv::SetDbxTvMode(int mode, int son_value, int vol_value, int sur_value) -{ - return mAudioEffect.DbxTv_SetMode(mode, son_value, vol_value, sur_value); -} - -int CTv::GetBassUIMinGainVal() -{ - return 0; -} - -int CTv::GetBassUIMaxGainVal() -{ - return 100; -} - -int CTv::GetTrebleUIMinGainVal() -{ - return 0; -} - -int CTv::GetTrebleUIMaxGainVal() -{ - return 100; -} - -int CTv::MappingLine(int map_val, int src_min, int src_max, int dst_min, int dst_max) -{ - if (dst_min < 0) { - return (map_val - (src_max + src_min) / 2) * (dst_max - dst_min) - / (src_max - src_min); - } else { - return (map_val - src_min) * (dst_max - dst_min) / (src_max - src_min); - } -} - -int CTv::MappingTrebleBassAndEqualizer(int tmp_vol, int direct, int tb_min, int tb_max) -{ - int tmp_ret = 0; - - if (direct == 0) { - tmp_ret = MappingLine(tmp_vol, tb_min, tb_max, CC_EQ_DEF_UI_MIN_GAIN, CC_EQ_DEF_UI_MAX_GAIN); - } else { - tmp_ret = MappingLine(tmp_vol, CC_EQ_DEF_UI_MIN_GAIN, CC_EQ_DEF_UI_MAX_GAIN, tb_min, tb_max); - } - - LOGD("%s, tmp_vol = %d, direct = %d, tmp_ret = %d\n", __FUNCTION__, tmp_vol, - direct, tmp_ret); - - return tmp_ret; -} - -int CTv::MappingEQGain(int src_gain_buf[], int dst_gain_buf[], int direct) -{ - int i = 0; - int nMinUIVal = 0, nMaxUIVal = 0, nMinVal = 0, nMaxVal = 0; - - nMinUIVal = CC_EQ_DEF_UI_MIN_GAIN; - nMaxUIVal = CC_EQ_DEF_UI_MAX_GAIN; - nMinVal = CC_MIN_EQ_GAIN_VAL; - nMaxVal = CC_MAX_EQ_GAIN_VAL; - - if (nMinUIVal >= nMinVal && nMaxUIVal <= nMaxVal) { - for (i = 0; i < GetAudioEQBandCount(); i++) { - dst_gain_buf[i] = src_gain_buf[i]; - } - } else { - for (i = 0; i < GetAudioEQBandCount(); i++) { - if (direct == 0) { - dst_gain_buf[i] = MappingLine(src_gain_buf[i], nMinUIVal, - nMaxUIVal, nMinVal, nMaxVal); - } else { - dst_gain_buf[i] = MappingLine(src_gain_buf[i], nMinVal, nMaxVal, - nMinUIVal, nMaxUIVal); - } - } - } - return 0; -} - -int CTv::RestoreToAudioDefEQGain(int gain_buf[]) -{ - int i = 0; - - for (i = 0; i < GetAudioEQBandCount(); i++) { - gain_buf[i] = (CC_EQ_DEF_UI_MAX_GAIN + CC_EQ_DEF_UI_MIN_GAIN) / 2; - } - - ArrayCopy(mCurEQGainBuf, gain_buf, GetAudioEQBandCount()); - ArrayCopy(mCurEQGainChBuf, gain_buf, GetAudioEQBandCount()); - SSMSaveAudioEQGain(0, GetAudioEQBandCount(), mCurEQGainChBuf); - - HandleTrebleBassVolume(); - SaveCurAudioSoundMode (CC_SOUND_MODE_STD); - mCustomAudioSoundMode = mCurAudioSoundMode; - return 0; -} - -int CTv::GetCustomEQGain(int gain_buf[]) -{ - ArrayCopy(gain_buf, mCustomEQGainBuf, GetAudioEQBandCount()); - return 0; -} - -int CTv::SetCustomEQGain() -{ - int tmpEQGainBuf[128] = { 0 }; - - if (MappingEQGain(mCustomEQGainBuf, tmpEQGainBuf, 0) < 0) { - return -1; - } - - return RealSetEQGain(tmpEQGainBuf); -} - -int CTv::AudioSetEQGain(int gain_buf[]) -{ - int tmpEQGainBuf[128] = { 0 }; - - ArrayCopy(mCustomEQGainBuf, gain_buf, GetAudioEQBandCount()); - - if (MappingEQGain(mCustomEQGainBuf, tmpEQGainBuf, 0) < 0) { - return -1; - } - - return RealSetEQGain(tmpEQGainBuf); -} - -int CTv::handleEQGainBeforeSet(int src_buf[], int dst_buf[]) -{ - int i = 0, nMinGain, nMaxGain; - - nMinGain = CC_MIN_EQ_GAIN_VAL; - nMaxGain = CC_MAX_EQ_GAIN_VAL; - - if (GetAudioWallEffect() == CC_SWITCH_ON && GetAudioWallEffectTypeCfg() == 0) { - for (i = 0; i < GetAudioEQBandCount(); i++) { - dst_buf[i] = mWallEffectValueBuf[i] + src_buf[i]; - - if (dst_buf[i] < nMinGain) { - dst_buf[i] = nMinGain; - } - - if (dst_buf[i] > nMaxGain) { - dst_buf[i] = nMaxGain; - } - } - } else { - for (i = 0; i < GetAudioEQBandCount(); i++) { - dst_buf[i] = src_buf[i]; - } - } - - return 0; -} - -int CTv::RealSetEQGain(int gain_buf[]) -{ - if (GetAudioWallEffect() == CC_SWITCH_ON && GetAudioWallEffectTypeCfg() == 0) { - for (int i = 0; i < GetAudioEQBandCount(); i++) { - gain_buf[i] = mWallEffectValueBuf[i] + gain_buf[i]; - - if (gain_buf[i] < CC_MIN_EQ_GAIN_VAL) { - gain_buf[i] = CC_MIN_EQ_GAIN_VAL; - } - - if (gain_buf[i] > CC_MAX_EQ_GAIN_VAL) { - gain_buf[i] = CC_MAX_EQ_GAIN_VAL; - } - } - } - - mAudioEffect.SetEQValue(gain_buf); - return 0; -} - -int CTv::SetAtvInGain(int gain_val) -{ - char set_str[32] = {0}; - - sprintf ( set_str, "audio_gain_set %x", gain_val ); - return SetFileAttrValue ( SYS_ATV_DEMOD_DEBUG, set_str ); -} - -int CTv::SetSpecialModeEQGain(int tmp_val) -{ - int tmpEQPresetBufPtr[24]; - if (GetAudioEQPresetBufferPtr(tmpEQPresetBufPtr) != 0) { - GetDefault_EQGain_Table(tmpEQPresetBufPtr); - } - int tmpEQGainBuf[128] = { 0 }; - - if (tmp_val == CC_SOUND_MODE_USER) { - RealReadCurAudioEQGain(tmpEQGainBuf); - } else { - ArrayCopy(tmpEQGainBuf, - tmpEQPresetBufPtr + tmp_val * GetAudioEQBandCount(), - GetAudioEQBandCount()); - } - - AudioSetEQGain(tmpEQGainBuf); - return tmp_val; -} - -int CTv::SetSpecialIndexEQGain(int buf_index, int w_val) -{ - int tmpEQGainBuf[128] = { 0 }; - - if (buf_index >= 0 && buf_index < GetAudioEQBandCount()) { - RealReadCurAudioEQGain(tmpEQGainBuf); - tmpEQGainBuf[buf_index] = w_val; - - return AudioSetEQGain(tmpEQGainBuf); - } - return -1; -} - -int CTv::SaveSpecialIndexEQGain(int buf_index, int w_val) -{ - int tmpEQGainBuf[128] = { 0 }; - - if (buf_index >= 0 && buf_index < GetAudioEQBandCount()) { - RealReadCurAudioEQGain(tmpEQGainBuf); - tmpEQGainBuf[buf_index] = w_val; - - return RealSaveCurAudioEQGain(tmpEQGainBuf, 0); - } - - return 0; -} - -// amAudio -int CTv::OpenAmAudio(unsigned int sr, int input_device, int output_device) -{ - LOGD("OpenAmAudio input_device = %d", input_device); - return amAudioOpen(sr, input_device, output_device); -} - -int CTv::CloseAmAudio(void) -{ - return amAudioClose(); -} - -int CTv::SetAmAudioInputSr(unsigned int sr, int output_device) -{ - LOGD("SetAmAudioInputSr"); - return amAudioSetInputSr(sr, CC_IN_USE_SPDIF_DEVICE, output_device); -} - -int CTv::SetAmAudioOutputMode(int mode) -{ - if (mode != CC_AMAUDIO_OUT_MODE_DIRECT && mode != CC_AMAUDIO_OUT_MODE_INTER_MIX - && mode != CC_AMAUDIO_OUT_MODE_DIRECT_MIX) { - LOGE("%s, mode error, it should be mix or direct!\n", __FUNCTION__); - return -1; - } - - return amAudioSetOutputMode(mode); -} - -int CTv::SetAmAudioMusicGain(int gain) -{ - return amAudioSetMusicGain(gain); -} - -int CTv::SetAmAudioLeftGain(int gain) -{ - return amAudioSetLeftGain(gain); -} - -int CTv::SetAmAudioRightGain(int gain) -{ - return amAudioSetRightGain(gain); -} - -int CTv::SetAudioDumpDataFlag(int tmp_flag) -{ - return amAudioSetDumpDataFlag(tmp_flag); -} - -int CTv::GetAudioDumpDataFlag() -{ - return amAudioGetDumpDataFlag(); -} - -void CTv::AudioSetVolumeDigitLUTBuf(int lut_table_index, int *MainVolLutBuf) -{ - int tmpDefDigitLutBuf[CC_LUT_BUF_SIZE] = { 0 }; - mAudioAlsa.SetMainVolDigitLutBuf(MainVolLutBuf); - - GetAudioAmpSupbassvolBuf(lut_table_index, tmpDefDigitLutBuf); - mAudioAlsa.SetSupperBassVolDigitLutBuf(tmpDefDigitLutBuf); -} - -int CTv::InitTvAudio(int sr, int input_device) -{ - OpenAmAudio(sr, input_device, CC_OUT_USE_AMAUDIO); - - RefreshSrsEffectAndDacGain(); - SetCustomEQGain(); - return 0; -} - -int CTv::UnInitTvAudio() -{ - return CloseAmAudio(); -} - -int CTv::AudioChangeSampleRate(int sr) -{ - sr = HanldeAudioInputSr(sr); - - if (SetAmAudioInputSr(sr, CC_OUT_USE_AMAUDIO) != 0) { - return -1; - } - - RefreshSrsEffectAndDacGain(); - SetCustomEQGain(); - return 0; -} - -int CTv::AudioSetAudioInSource(int audio_src_in_type) -{ - return mAudioAlsa.SetAudioInSource(audio_src_in_type); -} - -int CTv::AudioSetAudioSourceType(int source_type) -{ - int aud_arch_type = GetAudioArchitectureTypeCFG(); - - if (aud_arch_type == CC_DAC_G9TV_EXTERNAL_DAC_ON_BOARD) { - } else if (aud_arch_type == CC_DAC_G9TV_EXTERNAL_DAC_OFF_BOARD_FBC) { - SendCmdToOffBoardFBCExternalDac(AUDIO_CMD_SET_SOURCE, source_type); - } else if (aud_arch_type == CC_DAC_G9TV_EXTERNAL_DAC_CUSTOMER_LIB) { - mCustomerCtrl.SetSource(source_type); - } else if (aud_arch_type == CC_DAC_G9TV_EXTERNAL_DAC_DIGITAL) { - } - return 0; -} - -int CTv::AudioLineInSelectChannel(int audio_channel) -{ - LOGD ("%s, audio_channel = %d", __FUNCTION__, audio_channel); - mAudioAlsa.SetInternalDacLineInSelectChannel(audio_channel); - return 0; -} - -int CTv::SetKalaokIO(int level) -{ - LOGD ("%s, SetKalaokIO = %d", __FUNCTION__, level); - if (GetKaraokAvEnable() == 1) { - mAudioAlsa.SetAudioSwitchIO(level); - } - return 0; -} - -int CTv::AudioSetLineInCaptureVolume(int l_vol, int r_vol) -{ - mAudioAlsa.SetInternalDacLineInCaptureVolume(l_vol, r_vol); - return 0; -} - -int CTv::openTvAudio() -{ - int tmp_val = 0; - - LOGD("%s, entering...\n", __FUNCTION__); - UnInitSetTvAudioCard(); - - tmp_val = GetAudioDumpDataEnableFlagCfg(); - SetAudioDumpDataFlag(tmp_val); - - tmp_val = GetAudioInternalDacPGAInGain_Cfg(); - mAudioAlsa.SetAudioInternalDacPGAInGain(tmp_val, tmp_val); - - mAudioAlsa.SetMixerBypassSwitch (CC_SWITCH_OFF); - mAudioAlsa.SetMixerDacSwitch (CC_SWITCH_ON); - - LoadAudioCtl(); - - RefreshSrsEffectAndDacGain(); - InitSetAudioCtl(); - return 0; -} - -int CTv::closeTvAudio() -{ - return 0; -} - -void CTv::LoadAudioCtl() -{ - // Get Current Audio Volume - LoadCurAudioMasterVolume(); - - // Get Current Audio Balance - LoadCurAudioBalance(); - - // Get Current Supper Bass Switch - LoadCurAudioSupperBassSwitch(); - - // Get Current Supper Bass Volume - LoadCurAudioSupperBassVolume(); - - // Get Current SRSSurround - LoadCurAudioSrsSurround(); - - // Get Current SRS DialogClarity - LoadCurAudioSrsDialogClarity(); - - // Get Current SRS TruBass - LoadCurAudioSrsTruBass(); - - // Get Current Audio Sound Mode - LoadCurAudioSoundMode(); - - // Get Current Audio Bass and Treble - LoadCurAudioBassVolume(); - LoadCurAudioTrebleVolume(); - - // Get Current Wall Effect - LoadCurAudioWallEffect(); - - // Get Current spdif switch - LoadCurAudioSPDIFSwitch(); - - // Get Current spdif mode - LoadCurAudioSPDIFMode(); - - // Get Current EQ mode - LoadCurAudioEQMode(); - - // Get Current EQ Gain - LoadCurAudioEQGain(); -} - -void CTv::InitSetAudioCtl() -{ - // Set Current Audio balance value - SetAudioBalance(GetAudioBalance()); - - // Set Current Audio Volume - SetAudioMasterVolume(GetAudioMasterVolume()); - - // Set Current Supper Bass Volume - SetAudioSupperBassVolume(GetAudioSupperBassVolume()); - - // Set Current Audio Sound Mode - SetAudioSoundMode(GetAudioSoundMode()); - - // Set Current Audio SPDIF Switch - SetAudioSPDIFSwitch(GetCurAudioSPDIFSwitch()); - - // Set Current Audio SPDIF mode - SetAudioSPDIFMode(GetCurAudioSPDIFMode()); -} - -int CTv::SetADC_Digital_Capture_Volume(int value) -{ - return mAudioAlsa.SetAudioInternalDacADCDigitalCaptureVolume( value, value); -} - -int CTv::SetPGA_IN_Value(int value) -{ - return mAudioAlsa.SetAudioInternalDacPGAInGain( value, value); -} - -int CTv::SetDAC_Digital_PlayBack_Volume(int value) -{ - return mAudioAlsa.SetAudioInternalDacDACDigitalPlayBackVolume( value, value); -} - -int CTv::setAudioPcmPlaybackVolume(int val) -{ - int pcm_volume = 0; - pcm_volume = val / 2; - if (pcm_volume > 24) pcm_volume = 24; - //return SetAudioPcmPlaybackVolume(pcm_volume); - return 0; -} - -int CTv::HanldeAudioInputSr(unsigned int sr) -{ - int tmp_cfg = 0; - - tmp_cfg = GetAudioResampleTypeCFG(); - if (tmp_cfg & CC_AUD_RESAMPLE_TYPE_HW) { - mAudioAlsa.SetHardwareResample(sr); - } else { - mAudioAlsa.SetHardwareResample(-1); - } - - if (!(tmp_cfg & CC_AUD_RESAMPLE_TYPE_SW)) { - sr = 48000; - } - - return sr; -} - -int CTv::AudioSSMRestoreDefaultSetting() -{ - int i = 0, tmp_val = 0; - int nMinUIVol = 0, nMaxUIVol = 0; - int *tmp_ptr = NULL; - int tmpEQGainBuf[128] = { 0 }; - unsigned char tmp_buf[CC_NO_LINE_POINTS_MAX_CNT] = { 0 }; - - // Save Current Audio Volume - SaveCurAudioMasterVolume (CC_DEF_SOUND_VOL); - - // Save Current Audio Balance - SaveCurAudioBalance (CC_DEF_SOUND_BALANCE_VAL); - - // Save Current Supper Bass Switch - SaveCurAudioSupperBassSwitch (CC_SWITCH_OFF); - - // Save Current Supper Bass Volume - SaveCurAudioSupperBassVolume (CC_DEF_SUPPERBASS_VOL); - - // Save Current SRSSurround - SaveCurAudioSrsSurround(CC_SWITCH_OFF); - - // Save Current SRS DialogClarity - SaveCurAudioSrsDialogClarity(CC_SWITCH_OFF); - - // Save Current SRS TruBass - SaveCurAudioSrsTruBass(CC_SWITCH_OFF); - - // Save Current Audio Sound Mode - SaveCurAudioSoundMode (CC_SOUND_MODE_STD); - - // Save Current Wall Effect - SaveCurAudioWallEffect(CC_SWITCH_OFF); - - // Save Current spdif switch - SaveCurAudioSPDIFSwitch (CC_SWITCH_ON); - - // Save Current spdif mode - SaveCurAudioSPDIFMode (CC_SPDIF_MODE_PCM); - - // Save Current avout and spidif mute state - SSMSaveAudioSPIDFMuteVal(CC_AUDIO_MUTE); - SSMSaveAudioAVOutMuteVal(CC_AUDIO_MUTE); - - // Save Current EQ mode - SaveCurAudioEQMode (CC_EQ_MODE_NOMAL); - - // Save Current EQ Gain - RestoreToAudioDefEQGain(tmpEQGainBuf); - - // Save Current Audio Bass and Treble - nMinUIVol = GetBassUIMinGainVal(); - nMaxUIVol = GetBassUIMaxGainVal(); - RealSaveCurAudioBassVolume((nMinUIVol + nMaxUIVol) / 2, 0); - - nMinUIVol = GetTrebleUIMinGainVal(); - nMaxUIVol = GetTrebleUIMaxGainVal(); - RealSaveCurAudioTrebleVolume((nMinUIVol + nMaxUIVol) / 2, 0); - return 0; -} - -int CTv::InitSetTvAudioCard() -{ - int captureIdx = -1; - char buf[32] = { 0 }; - char propValue[PROPERTY_VALUE_MAX]; - -#ifndef BOARD_ALSA_AUDIO_TINY - snd_card_refresh_info(); -#endif - - if (GetTvAudioCardNeedSet()) { - int totleNum = 0; - char cardName[64] = { 0 }; - - GetTvAudioCardName(cardName); - /* - memset(propValue, '\0', PROPERTY_VALUE_MAX); - property_get(PROP_AUDIO_CARD_NUM, propValue, "0"); - - totleNum = strtoul(propValue, NULL, 10); - LOGD("%s, totle number = %d\n", __FUNCTION__, totleNum); - */ - totleNum = 8; - - for (int i = 0; i < totleNum; i++) { - sprintf(buf, "snd.card.%d.name", i); - memset(propValue, '\0', PROPERTY_VALUE_MAX); - property_get(buf, propValue, "null"); - - LOGD("%s, key string \"%s\", value string \"%s\".\n", __FUNCTION__, buf, propValue); - if (strcmp(propValue, cardName) == 0) { - captureIdx = i; - break; - } - } - } - - sprintf(buf, "%d", captureIdx); - property_set(PROP_DEF_CAPTURE_NAME, buf); - LOGD("%s, set \"%s\" as \"%s\".\n", __FUNCTION__, PROP_DEF_CAPTURE_NAME, buf); - return 0; -} - -int CTv::UnInitSetTvAudioCard() -{ -#ifndef BOARD_ALSA_AUDIO_TINY - snd_card_refresh_info(); -#endif - property_set(PROP_DEF_CAPTURE_NAME, "-1"); - LOGD("%s, set [%s]:[-1]\n", __FUNCTION__, PROP_DEF_CAPTURE_NAME); - return 0; -} - -int CTv::SetSPDIFMode(int mode_val) -{ - FILE *fp = fopen(SYS_SPDIF_MODE_DEV_PATH, "w"); - if (fp == NULL) { - LOGE("%s, Open file %s error(%s)!\n", __FUNCTION__, SYS_SPDIF_MODE_DEV_PATH, strerror(errno)); - return -1; - } - - if (mode_val == CC_SPDIF_MODE_PCM) { - fprintf(fp, "%d", 0); - } else if (mode_val == CC_SPDIF_MODE_RAW ) { - fprintf(fp, "%d", 1); - } - - fclose(fp); - fp = NULL; - return 0; -} - -int CTv::SwitchAVOutBypass(int sw) -{ - if (sw == 0 ) { - mAudioAlsa.SetMixerBypassSwitch ( CC_SWITCH_OFF ); - mAudioAlsa.SetMixerDacSwitch ( CC_SWITCH_ON ); - } else { - mAudioAlsa.SetMixerBypassSwitch ( CC_SWITCH_ON ); - mAudioAlsa.SetMixerDacSwitch ( CC_SWITCH_OFF ); - } - return 0; -} - -int CTv::SetAudioSwitchIO(int value) -{ - return mAudioAlsa.SetAudioSwitchIO( value); -} - -int CTv::SetOutput_Swap(int value) -{ - return mAudioAlsa.SetOutput_Swap( value); -} - -int CTv::SendCmdToOffBoardFBCExternalDac(int cmd, int para) -{ - int set_val = 0; - CFbcCommunication *pFBC = GetSingletonFBC(); - if (pFBC != NULL) { - if (cmd == AUDIO_CMD_SET_MUTE) { - if (para == CC_AUDIO_MUTE) { - set_val = CC_MUTE_ON; - } else if (para == CC_AUDIO_UNMUTE) { - set_val = CC_MUTE_OFF; - } else { - return -1; - } - - return pFBC->cfbc_Set_Mute(COMM_DEV_SERIAL, set_val); - } else if (cmd == AUDIO_CMD_SET_VOLUME_BAR) { - LOGD("%s, send AUDIO_CMD_SET_VOLUME_BAR (para = %d) to fbc.\n", __FUNCTION__, para); - return pFBC->cfbc_Set_Volume_Bar(COMM_DEV_SERIAL, para); - } else if (cmd == AUDIO_CMD_SET_BALANCE) { - LOGD("%s, send AUDIO_CMD_SET_BALANCE (para = %d) to fbc.\n", __FUNCTION__, para); - return pFBC->cfbc_Set_Balance(COMM_DEV_SERIAL, para); - } else if (cmd == AUDIO_CMD_SET_SOURCE) { - LOGD("%s, send AUDIO_CMD_SET_SOURCE (para = %d) to fbc.\n", __FUNCTION__, para); - return pFBC->cfbc_Set_FBC_Audio_Source(COMM_DEV_SERIAL, para); - } - } - return 0; -} - -int CTv::GetHdmiAvHotplugDetectOnoff() -{ - const char *value = config_get_str ( CFG_SECTION_TV, CFG_SSM_HDMI_AV_DETECT, "null" ); - if ( strtoul(value, NULL, 10) == 1 ) { - return 1; - } - - return 0; -} - diff --git a/tvapi/libtv/tv/CTv.h b/tvapi/libtv/tv/CTv.h deleted file mode 100644 index 7d75e0c..0000000 --- a/tvapi/libtv/tv/CTv.h +++ b/dev/null @@ -1,817 +0,0 @@ - -// amlogic 2013 -// -// @ Project : tv -// @ File Name : CDtv.h -// @ Date : 2013-11 -// @ Author : - -#if !defined(_CDTV_H) -#define _CDTV_H -#include <stdint.h> -#include <sys/time.h> -#include <am_epg.h> -#include <am_mem.h> -#include <utils/threads.h> -#include "CTvProgram.h" -#include "CTvEpg.h" -#include "CTvScanner.h" -#include "CTvLog.h" -#include "CTvTime.h" -#include "CTvEvent.h" -#include "CTvEv.h" -#include "CTvBooking.h" -#include "CFrontEnd.h" -#include "../vpp/CVpp.h" -#include "../vpp/CPQdb.h" -#include "../tvin/CTvin.h" -#include "../tvin/CHDMIRxCEC.h" -#include "../tvutils/CMsgQueue.h" -#include "../tvutils/CSerialCommunication.h" -#include "../tvutils/serial_operate.h" -#include "CTvRecord.h" -#include "CTvSubtitle.h" -#include "CUpgradeFBC.h" -#include "CAv.h" -#include "CTvDmx.h" -#include "../audio/CTvAudio.h" -#include "AutoBackLight.h" -#include "CAutoPQparam.h" -#include "tvin/CSourceConnectDetect.h" -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_PARAM_PATH = "/param/tvconfig.conf"; -static const char *TV_CHANNEL_LIST_SYSTEM_PATH = "/system/etc/tv_default.xml"; -static const char *TV_CHANNEL_LIST_PARAM_PATH = "/param/tv_default.xml"; -static const char *TV_SSM_DATA_SYSTEM_PATH = "/system/etc/ssm_data"; -static const char *TV_SSM_DATA_PARAM_PATH = "/param/ssm_data"; - -#define DEVICE_CLASS_TSYNC_AV_THRESHOLD_MIN "/sys/class/tsync/av_threshold_min" -#define AV_THRESHOLD_MIN_MS "540000" //6S = 6*90000 - - - - -typedef enum tv_fmt_ratio_e { - RATIO_43, - RATIO_169, - RATIO_MAX, -} tv_fmt_ratio_t; - -typedef enum tv_color_fmt_e { - COLOR_RGB444, - COLOR_YUV422, - COLOR_YUV444, - COLOR_MAX, -} tv_color_fmt_t; - - - -typedef enum tv_window_mode_e { - NORMAL_WONDOW, - PREVIEW_WONDOW, -} tv_window_mode_t; - -typedef enum tv_dtv_scan_running_status_e { - DTV_SCAN_RUNNING_NORMAL, - DTV_SCAN_RUNNING_ANALYZE_CHANNEL, -} tv_dtv_scan_running_status_t; - -typedef struct tv_config_s { - bool kernelpet_disable; - unsigned int kernelpet_timeout; - bool userpet; - unsigned int userpet_timeout; - unsigned int userpet_reset; - bool memory512m; -} tv_config_t; - -typedef enum TvRunStatus_s { - TV_INIT_ED = -1, - TV_OPEN_ED = 0, - TV_START_ED , - TV_RESUME_ED, - TV_PAUSE_ED, - TV_STOP_ED, - TV_CLOSE_ED, -} TvRunStatus_t; - -class CTv : public CTvin::CTvinSigDetect::ISigDetectObserver, public CSourceConnectDetect::ISourceConnectObserver, public CHDMIRxCEC::IHDMIRxCECObserver, public CUpgradeFBC::IUpgradeFBCObserver, public CSerialCommunication::ISerialCommunicationObserver, public CTvSubtitle::IObserver, public CTv2d4GHeadSetDetect::IHeadSetObserver { -public: - static const int TV_ACTION_NULL = 0x0000; - static const int TV_ACTION_STARTING = 0x0001; - static const int TV_ACTION_STOPING = 0x0002; - static const int TV_ACTION_SCANNING = 0x0004; - static const int TV_ACTION_PLAYING = 0x0008; - static const int TV_ACTION_RECORDING = 0x0010; - static const int TV_ACTION_SOURCE_SWITCHING = 0x0020; -public: - class TvIObserver { - public: - TvIObserver() {}; - virtual ~TvIObserver() {}; - virtual void onTvEvent ( const CTvEv &ev ) = 0; - }; - //main - CTv(); - virtual ~CTv(); - virtual int OpenTv ( void ); - virtual int CloseTv ( void ); - virtual int StartTvLock (); - virtual int StopTvLock ( void ); - virtual int DoSuspend(int type); - virtual int DoResume(int type); - virtual int DoInstabootSuspend(); - virtual int DoInstabootResume(); - virtual TvRunStatus_t GetTvStatus(); - virtual int ClearAnalogFrontEnd(); - virtual tv_source_input_t GetLastSourceInput (void); - virtual int SetSourceSwitchInput (tv_source_input_t source_input ); - virtual tv_source_input_t GetCurrentSourceInputLock ( void ); - virtual tvin_info_t GetCurrentSignalInfo ( void ); - virtual int SetPreviewWindow ( tvin_window_pos_t pos ); - virtual int dtvAutoScan(); - virtual int dtvManualScan (int beginFreq, int endFreq, int modulation = -1); - virtual int atvAutoScan(int videoStd, int audioStd, int searchType); - virtual int clearAllProgram(int arg0); - virtual int clearDbAllProgramInfoTable(); - virtual void setSourceSwitchAndPlay(); - virtual int GetDisplayResolutionConfig(); - virtual int GetDisplayResolutionInfo(); - virtual int atvMunualScan ( int startFreq, int endFreq, int videoStd, int audioStd, int store_Type = 0, int channel_num = 0 ); - virtual int stopScanLock(); - virtual int dtvAutoScanAtscLock(int attenna, int videoStd, int audioStd); - virtual void SetRecordFileName ( char *name ); - virtual void StartToRecord(); - virtual void StopRecording(); - virtual void SetRecCurTsOrCurProgram ( int sel ); - virtual int startCC(int country, int src, int channel, int service); - virtual int stopCC(); - virtual void printDebugInfo(); - virtual int playProgramLock ( int progId ); - virtual int playDvbcProgram ( int progId ); - virtual int playDtmbProgram ( int progId ); - virtual int playAtvProgram ( int, int, int, int, int); - virtual int playDtvProgram ( int, int, int, int, int, int, int, int, int, int); - virtual int stopPlayingLock(); - virtual int resetFrontEndPara ( frontend_para_set_t feParms ); - virtual int SetDisplayMode ( vpp_display_mode_t display_mode, tv_source_input_type_t source_type, tvin_sig_fmt_t sig_fmt ); - virtual void startAutoBackLight(); - virtual void stopAutoBackLight(); - virtual const char *getPqDbPath(); - virtual void onHdmiSrChanged(int sr, bool bInit); - virtual void onHMDIAudioStatusChanged(int status); - virtual int GetATVAFCType(); - virtual int GetATVSourceTimerSwitch(); - int SetCurProgramAudioVolumeCompensationVal ( int tmpVal ); - int GetAudioVolumeCompensationVal(int progDbId); - //dtv audio track info - int getAudioTrackNum ( int progId ); - int getAudioInfoByIndex ( int progId, int idx, int *pAFmt, String8 &lang ); - int switchAudioTrack ( int progId, int idx ); - int switchAudioTrack ( int aPid, int aFmt, int aParam ); - int getVideoFormatInfo ( int *pWidth, int *pHeight, int *pFPS, int *pInterlace ); - int ResetAudioDecoderForPCMOutput(); - int setAudioChannel ( int channelIdx ); - int getAudioChannel(); - int setTvObserver (TvIObserver *ob); - int getAtscAttenna(); - long getTvTime() - { - return mTvTime.getTime(); - }; - void getFrontendStatus(); - int getFrontendSignalStrength(); - int getFrontendSNR(); - int getFrontendBER(); - int getChannelInfoBydbID ( int dbID, channel_info_t &chan_info ); - int setBlackoutEnable(int enable); - int getSaveBlackoutEnable(); - int getAutoBackLight_on_off(); - int saveATVProgramID ( int dbID ); - int getATVProgramID ( void ); - int saveDTVProgramID ( int dbID ); - int getDTVProgramID ( void ); - int getCurPlayProgId(); - int getATVMinMaxFreq ( int *scanMinFreq, int *scanMaxFreq ); - int getAverageLuma(); - int setAutobacklightData(const char *value); - int getAutoBacklightData(int *data); - - virtual int Tv_SSMRestoreDefaultSetting(); - - // - int GetSourceConnectStatus(tv_source_input_t source_input); - int IsDVISignal(); - int isVgaFmtInHdmi(); - int isSDFmtInHdmi ( void ); - // - int getHDMIFrameRate ( void ); - void RefreshAudioMasterVolume ( tv_source_input_t source_input ); - - int Tv_Set3DMode ( VIDEO_3D_MODE_T mode ); - VIDEO_3D_MODE_T Tv_Get3DMode ( void ); - int Tv_Set3DLRSwith ( int on_off); - int Tv_Get3DLRSwith ( void ); - int Tv_Set3DTo2DMode ( int mode); - int Tv_Get3DTo2DMode ( void ); - int Tv_Set3DDepth ( int value ); - int GetSave3DDepth ( void ); - is_3d_type_t Check2Dor3D ( VIDEO_3D_MODE_T mode3d, tvin_trans_fmt_t trans_fmt ); - int Tvin_SetPLLValues (); - int SetCVD2Values (); - unsigned int Vpp_GetDisplayResolutionInfo(tvin_window_pos_t *win_pos); - int get_hdmi_sampling_rate(); - //SSM - virtual int Tv_SSMFacRestoreDefaultSetting(); - int Tv_GetHistgram(int *histgram_buf); - int StartHeadSetDetect(); - virtual void onHeadSetDetect(int state, int para); - - CTvin::CTvinSigDetect mSigDetectThread; - CSourceConnectDetect mSourceConnectDetectThread; - CHDMIRxCEC mHDMIRxCEC; - CUpgradeFBC *mpUpgradeFBC; - CSerialCommunication mSerialA; - CSerialCommunication mSerialB; - CSerialCommunication mSerialC; - CTvSubtitle mSubtitle; - CTv2d4GHeadSetDetect mHeadSet; - - int SendHDMIRxCECCustomMessage(unsigned char data_buf[]); - int SendHDMIRxCECCustomMessageAndWaitReply(unsigned char data_buf[], unsigned char reply_buf[], int WaitCmd, int timeout); - int SendHDMIRxCECBoradcastStandbyMessage(); - int SendHDMIRxCECGiveCECVersionMessage(tv_source_input_t source_input, unsigned char data_buf[]); - int SendHDMIRxCECGiveDeviceVendorIDMessage(tv_source_input_t source_input, unsigned char data_buf[]); - int SendHDMIRxCECGiveOSDNameMessage(tv_source_input_t source_input, unsigned char data_buf[]); - - int GetHdmiHdcpKeyKsvInfo(int data_buf[]); - virtual bool hdmiOutWithFbc(); - int StartUpgradeFBC(char *file_name, int mode, int upgrade_blk_size); - int SetSerialSwitch(int dev_id, int switch_val); - int SendSerialData(int dev_id, int data_len, unsigned char data_buf[]); - int SetDebugSerialOnOff(int on_off); - int GetDebugSerialOnOff(); - int ChannelExport(const char *destPath); - int ChannelImport(const char *srcPath); - int Tv_GetProjectInfo(project_info_t *ptrInfo); - int Tv_GetPlatformType(); - int Tv_HandeHDMIEDIDFilePathConfig(); - int Tv_SetDDDRCMode(tv_source_input_t source_input); - int Tv_SetAudioSourceType (tv_source_input_t source_input); - - //PQ - virtual int Tv_SetBrightness ( int brightness, tv_source_input_type_t source_type, int is_save ); - virtual int Tv_GetBrightness ( tv_source_input_type_t source_type ); - virtual int Tv_SaveBrightness ( int brightness, tv_source_input_type_t source_type ); - virtual int Tv_SetContrast ( int contrast, tv_source_input_type_t source_type, int is_save ); - virtual int Tv_GetContrast ( tv_source_input_type_t source_type ); - virtual int Tv_SaveContrast ( int contrast, tv_source_input_type_t source_type ); - virtual int Tv_SetSaturation ( int satuation, tv_source_input_type_t source_type, tvin_sig_fmt_t sig_fmt, int is_save ); - virtual int Tv_GetSaturation ( tv_source_input_type_t source_type ); - virtual int Tv_SaveSaturation ( int satuation, tv_source_input_type_t source_type ); - virtual int Tv_SetHue ( int hue, tv_source_input_type_t source_type, tvin_sig_fmt_t sig_fmt, int is_save ); - virtual int Tv_GetHue ( tv_source_input_type_t source_type ); - virtual int Tv_SaveHue ( int hue, tv_source_input_type_t source_type ); - virtual int Tv_SetPQMode ( vpp_picture_mode_t mode, tv_source_input_type_t source_type, int is_save ); - virtual vpp_picture_mode_t Tv_GetPQMode ( tv_source_input_type_t source_type ); - virtual int Tv_SavePQMode ( vpp_picture_mode_t mode, tv_source_input_type_t source_type ); - virtual int Tv_SetSharpness ( int value, tv_source_input_type_t source_type, int en, int is_save ); - virtual int Tv_GetSharpness ( tv_source_input_type_t source_type ); - virtual int Tv_SaveSharpness ( int value, tv_source_input_type_t source_type ); - virtual int Tv_SetBacklight ( int value, tv_source_input_type_t source_type, int is_save ); - virtual int Tv_GetBacklight ( tv_source_input_type_t source_type ); - virtual int Tv_SaveBacklight ( int value, tv_source_input_type_t source_type ); - int Tv_SetBacklight_Switch ( int value ); - int Tv_GetBacklight_Switch ( void ); - int Tv_SetColorTemperature ( vpp_color_temperature_mode_t mode, tv_source_input_type_t source_type, int is_save ); - vpp_color_temperature_mode_t Tv_GetColorTemperature ( tv_source_input_type_t source_type ); - virtual int Tv_SetDisplayMode ( vpp_display_mode_t mode, tv_source_input_type_t source_type, tvin_sig_fmt_t fmt, int is_save ); - virtual int Tv_SaveDisplayMode ( vpp_display_mode_t mode, tv_source_input_type_t source_type ); - virtual int Tv_SaveColorTemperature ( vpp_color_temperature_mode_t mode, tv_source_input_type_t source_type ); - virtual vpp_display_mode_t Tv_GetDisplayMode ( tv_source_input_type_t source_type ); - virtual int Tv_SetNoiseReductionMode ( vpp_noise_reduction_mode_t mode, tv_source_input_type_t source_type, int is_save ); - virtual vpp_noise_reduction_mode_t Tv_GetNoiseReductionMode ( tv_source_input_type_t source_type ); - virtual int Tv_SaveNoiseReductionMode ( vpp_noise_reduction_mode_t mode, tv_source_input_type_t source_type ); - int Tv_SetSplitScreenDemoStatus(tv_source_input_type_t source_type, int onoff_status); - int Tv_GetSplitScreenDemoStatus(tv_source_input_type_t source_type); - int Tv_SplitScreenEffect(int mode, int width, int reverse = 0); - // - int Tv_FactorySetPQMode_Brightness ( int source_type, int pq_mode, int brightness ); - int Tv_FactoryGetPQMode_Brightness ( int source_type, int pq_mode ); - int Tv_FactorySetPQMode_Contrast ( int source_type, int pq_mode, int contrast ); - int Tv_FactoryGetPQMode_Contrast ( int source_type, int pq_mode ); - int Tv_FactorySetPQMode_Saturation ( int source_type, int pq_mode, int saturation ); - int Tv_FactoryGetPQMode_Saturation ( int source_type, int pq_mode ); - int Tv_FactorySetPQMode_Hue ( int source_type, int pq_mode, int hue ); - int Tv_FactoryGetPQMode_Hue ( int source_type, int pq_mode ); - int Tv_FactorySetPQMode_Sharpness ( int source_type, int pq_mode, int sharpness ); - int Tv_FactoryGetPQMode_Sharpness ( int source_type, int pq_mode ); - - int GetColorTemperatureParams ( vpp_color_temperature_mode_t Tempmode, tcon_rgb_ogo_t *params ); - int Tv_FactorySetTestPattern ( int pattern ); - int Tv_FactoryGetTestPattern ( void ); - int Tv_FactorySetScreenColor ( int vdin_blending_mask, int y, int u, int v ); - int Tv_FactoryResetPQMode ( void ); - int Tv_FactoryResetColorTemp ( void ); - int Tv_FactorySetParamsDefault ( void ); - int Tv_FactorySetDDRSSC ( int step ); - int Tv_FactoryGetDDRSSC ( void ); - int Tv_FactorySetLVDSSSC ( int step ); - int Tv_FactoryGetLVDSSSC ( void ); - void Tv_Spread_Spectrum(void); - int Tv_FactorySetNolineParams ( int noline_params_type, int source_type, noline_params_t noline_params ); - noline_params_t Tv_FactoryGetNolineParams ( int noline_params_type, int source_type ); - int Tv_FactorySetOverscan ( int source_type, int fmt, int status_3d, int trans_fmt, tvin_cutwin_t cutwin_t ); - tvin_cutwin_t Tv_FactoryGetOverscan ( int source_type, int fmt, int status_3d, int trans_fmt ); - int Tv_ReplacePqDb(const char *newFilePath = NULL); - //end PQ - - //TV TO FBC - int Tv_FactorySet_FBC_Brightness ( int value ); - int Tv_FactoryGet_FBC_Brightness ( void ); - int Tv_FactorySet_FBC_Contrast( int value ); - int Tv_FactoryGet_FBC_Contrast ( void ); - int Tv_FactorySet_FBC_Saturation( int value ); - int Tv_FactoryGet_FBC_Saturation ( void ); - int Tv_FactorySet_FBC_HueColorTint( int value ); - int Tv_FactoryGet_FBC_HueColorTint ( void ); - virtual int Tv_FactorySet_FBC_Backlight ( int value ); - virtual int Tv_FactoryGet_FBC_Backlight ( void ); - int Tv_FactorySet_FBC_Backlight_N360 ( int value ); - int Tv_FactoryGet_FBC_Backlight_N360 ( void ); - int Tv_FactorySet_FBC_ELEC_MODE( int value ); - int Tv_FactoryGet_FBC_ELEC_MODE( void ); - int Tv_FactorySet_FBC_BACKLIGHT_N360( int value ); - int Tv_FactoryGet_FBC_BACKLIGHT_N360( void ); - int Tv_FactorySet_FBC_Picture_Mode ( int mode ); - int Tv_FactoryGet_FBC_Picture_Mode ( void ); - int Tv_FactorySet_FBC_Set_Test_Pattern ( int mode ); - int Tv_FactoryGet_FBC_Get_Test_Pattern ( void ); - int Tv_FactorySet_FBC_Gain_Red( int value ); - int Tv_FactoryGet_FBC_Gain_Red ( void ); - int Tv_FactorySet_FBC_Gain_Green( int value ); - int Tv_FactoryGet_FBC_Gain_Green( void ); - int Tv_FactorySet_FBC_Gain_Blue( int value ); - int Tv_FactoryGet_FBC_Gain_Blue ( void ); - int Tv_FactorySet_FBC_Offset_Red( int value ); - int Tv_FactoryGet_FBC_Offset_Red ( void ); - int Tv_FactorySet_FBC_Offset_Green( int value ); - int Tv_FactoryGet_FBC_Offset_Green( void ); - int Tv_FactorySet_FBC_Offset_Blue( int value ); - int Tv_FactoryGet_FBC_Offset_Blue ( void ); - int Tv_FactoryGetWhiteBalanceRedGain(int source_type, int colortemp_mode); - int Tv_FactoryGetWhiteBalanceGreenGain(int source_type, int colortemp_mode); - int Tv_FactoryGetWhiteBalanceBlueGain(int source_type, int colortemp_mode); - int Tv_FactoryGetWhiteBalanceRedOffset(int source_type, int colortemp_mode); - int Tv_FactoryGetWhiteBalanceGreenOffset(int source_type, int colortemp_mode); - int Tv_FactoryGetWhiteBalanceBlueOffset(int source_type, int colortemp_mode); - int Tv_FactorySetWhiteBalanceRedGain(int source_type, int colortemp_mode, int value); - int Tv_FactorySetWhiteBalanceGreenGain(int source_type, int colortemp_mode, int value); - int Tv_FactorySetWhiteBalanceBlueGain(int source_type, int colortemp_mode, int value); - int Tv_FactorySetWhiteBalanceRedOffset(int source_type, int colortemp_mode, int value); - int Tv_FactorySetWhiteBalanceGreenOffset(int source_type, int colortemp_mode, int value); - int Tv_FactorySetWhiteBalanceBlueOffset(int source_type, int colortemp_mode, int value); - int Tv_FactorySetWhiteBalanceColorTempMode(int source_type, int colortemp_mode, int is_save); - int Tv_FactoryGetWhiteBalanceColorTempMode(int source_type ); - int Tv_FactoryWhiteBalanceFormatInputFbcGainParams(int value); - int Tv_FactoryWhiteBalanceFormatInputFbcOffsetParams(int value); - int Tv_FactoryWhiteBalanceFormatOutputFbcOffsetParams(int value); - int Tv_FactoryWhiteBalanceFormatOutputFbcGainParams(int value); - int Tv_FactorySaveWhiteBalancePramas(int source_type, int tempmode, int r_gain, int g_gain, int b_gain, int r_offset, int g_offset, int b_offset); - int Tv_FactoryCloseWhiteBalanceGrayPattern(); - int Tv_FactoryOpenWhiteBalanceGrayPattern(); - int Tv_FactorySetWhiteBalanceGrayPattern(int value); - int Tv_FactoryGetWhiteBalanceGrayPattern(); - int Tv_FactoryWhiteBalanceColorTempMappingG92Fbc(int Tempmode); - int Tv_FactoryWhiteBalanceColorTempMappingFbc2G9(int Tempmode); - int Tv_FactorySet_FBC_GrayPattern(int value); - int Tv_FactoryOpen_FBC_GrayPattern(); - int Tv_FactoryClose_FBC_GrayPattern(); - int Tv_FactorySet_FBC_ColorTemp_Mode( int mode ); - int Tv_FactoryGet_FBC_ColorTemp_Mode ( void ); - int Tv_FactorySet_FBC_ColorTemp_Mode_N360( int mode ); - int Tv_FactoryGet_FBC_ColorTemp_Mode_N360 ( void ); - int Tv_FactorySet_FBC_LockN_state(int value); - int Tv_FactorySet_FBC_WB_Initial( int status ); - int Tv_FactoryGet_FBC_WB_Initial ( void ); - virtual int Tv_FactorySet_FBC_ColorTemp_Batch(vpp_color_temperature_mode_t Tempmode, tcon_rgb_ogo_t params); - virtual int Tv_FactoryGet_FBC_ColorTemp_Batch ( vpp_color_temperature_mode_t Tempmode, tcon_rgb_ogo_t *params ); - int Tv_FactorySet_WB_G9_To_FBC( vpp_color_temperature_mode_t Tempmode, tcon_rgb_ogo_t params ); - int Tv_FactoryGet_WB_G9_To_FBC ( vpp_color_temperature_mode_t Tempmode, tcon_rgb_ogo_t *params ); - int Tv_FactoryGetItemFromBatch(vpp_color_temperature_mode_t colortemp_mode, int item); - int Tv_FactorySet_FBC_CM_OnOff( unsigned char status ); - int Tv_FactoryGet_FBC_CM_OnOff (void); - int Tv_FactorySet_FBC_DNLP_OnOff( unsigned char status ); - int Tv_FactoryGet_FBC_DNLP_OnOff (void); - int Tv_FactorySet_FBC_Gamma_OnOff( unsigned char status ); - int Tv_FactoryGet_FBC_Gamma_OnOff (void); - int Tv_FactorySet_FBC_WhiteBalance_OnOff( unsigned char status ); - int Tv_FactoryGet_FBC_WhiteBalance_OnOff (void); - int Tv_FactorySet_FBC_Thermal_State( int value ); - int Tv_FactorySet_FBC_backlight_onoff(int value); - int Tv_FactoryGet_FBC_backlight_onoff ( void ); - int Tv_FactorySet_FBC_Auto_Backlight_OnOff(unsigned char status); - int Tv_FactoryGet_FBC_Auto_Backlight_OnOff ( void ); - int Tv_FactoryGet_FBC_VIDEO_MUTE ( void ); - int Tv_FactorySet_FBC_LVDS_SSG_Set( int value ); - int Tv_FactorySet_FBC_LightSensor_Status_N310 ( int value ); - int Tv_FactoryGet_FBC_LightSensor_Status_N310 ( void ); - int Tv_FactorySet_FBC_Dream_Panel_Status_N310 ( int value ); - int Tv_FactoryGet_FBC_Dream_Panel_Status_N310 ( void ); - int Tv_FactorySet_FBC_MULT_PQ_Status_N310 ( int value ); - int Tv_FactoryGet_FBC_MULT_PQ_Status_N310 ( void ); - int Tv_FactorySet_FBC_MEMC_Status_N310 ( int value ); - int Tv_FactoryGet_FBC_MEMC_Status_N310 ( void ); - int Tv_FactorySet_FBC_ColorTemp_Mode_N310( int mode ); - int Tv_FactoryGet_FBC_ColorTemp_Mode_N310 ( void ); - virtual int Tv_FactorySet_FBC_Backlight_N310 ( int value ); - virtual int Tv_FactoryGet_FBC_Backlight_N310 ( void ); - int Tv_FactorySet_FBC_Bluetooth_IIS_N310 ( int value ); - int Tv_FactoryGet_FBC_Bluetooth_IIS_N310 ( void ); - int Tv_FactorySet_FBC_Led_N310 ( int val_1, int val_2, int val_3 ); - int Tv_FactorySet_VbyOne_Spread_Spectrum_N311 ( int value ); - int Tv_FactoryGet_VbyOne_Spread_Spectrum_N311 ( void ); - int Tv_FactorySet_FBC_AP_STANDBY_N310 ( int value ); - int Tv_FactoryGet_FBC_AP_STANDBY_N310( void ); - int Tv_FactorySet_Uboot_Stage(int value); - //end TV TO FBC - - int Tv_SetTestPattern(int value); - int Tv_Set2k4k_ScalerUp_Mode ( int value ); - int Tv_Get2k4k_ScalerUp_Mode ( void ); - //audio - virtual int Tv_SetDRC_OnOff(int on_off); - virtual int Tv_GetDRC_OnOff(void); - virtual void updateSubtitle(int, int); - int setSubtitleBuffer(char *); - int initSubtitle(int, int) ; - int lockSubtitle(); - int unlockSubtitle(); - int getSubSwitchStatus(); - int startSubtitle(int dmx_id, int pid, int page_id, int anc_page_id) ; - int stopSubtitle() ; - - //audio - virtual void TvAudioOpen(); - virtual void AudioCtlUninit(); - virtual int SetAudioMuteForSystem(int muteOrUnmute); - virtual int GetAudioMuteForSystem(); - virtual int SetAudioMuteForTv(int muteOrUnmute); - virtual int GetAudioMuteForTv(); - virtual char *GetMainVolLutTableExtraName(); - virtual int SetDbxTvMode(int mode, int son_value, int vol_value, int sur_value); - virtual int GetDbxTvMode(int *mode, int *son_value, int *vol_value, int *sur_value); - int AudioHandleHeadsetPlugIn(); - int AudioHandleHeadsetPullOut(); - int SetAudioAVOutMute(int muteStatus); - int GetAudioAVOutMute(); - int SetAudioSPDIFMute(int muteStatus); - int GetAudioSPDIFMute(); - int SetDacMute(int muteStatus, int mute_type); - int SetAudioI2sMute(int); - int SetAudioMasterVolume(int tmp_vol); - int GetAudioMasterVolume(); - int SaveCurAudioMasterVolume(int tmp_vol); - int GetCurAudioMasterVolume(); - int SetAudioBalance(int tmp_val); - int GetAudioBalance(); - int SaveCurAudioBalance(int tmp_val); - int GetCurAudioBalance(); - int SetAudioSupperBassVolume(int tmp_vol); - int GetAudioSupperBassVolume(); - int SaveCurAudioSupperBassVolume(int tmp_vol); - int GetCurAudioSupperBassVolume(); - int SetAudioSupperBassSwitch(int tmp_val); - int GetAudioSupperBassSwitch(); - int SaveCurAudioSupperBassSwitch(int tmp_val); - int GetCurAudioSupperBassSwitch(); - int SetAudioSRSSurround(int tmp_val); - int GetAudioSRSSurround(); - int SaveCurAudioSrsSurround(int tmp_val); - int GetCurAudioSRSSurround(); - int SetAudioSrsDialogClarity(int tmp_val); - int GetAudioSrsDialogClarity(); - int SaveCurAudioSrsDialogClarity(int tmp_val); - int GetCurAudioSrsDialogClarity(); - int SetAudioSrsTruBass(int tmp_val); - int GetAudioSrsTruBass(); - int SaveCurAudioSrsTruBass(int tmp_val); - int GetCurAudioSrsTruBass(); - int SetAudioSPDIFSwitch(int tmp_val); - int GetCurAudioSPDIFSwitch(); - int SaveCurAudioSPDIFSwitch(int tmp_val); - - //Audio SPDIF Mode - int SetAudioSPDIFMode(int tmp_val); - int GetCurAudioSPDIFMode(); - int SaveCurAudioSPDIFMode(int tmp_val); - int SetAudioBassVolume(int tmp_vol); - int GetAudioBassVolume(); - int SaveCurAudioBassVolume(int tmp_vol); - int GetCurAudioBassVolume(); - int SetAudioTrebleVolume(int tmp_vol); - int GetAudioTrebleVolume(); - int SaveCurAudioTrebleVolume(int tmp_vol); - int GetCurAudioTrebleVolume(); - int SetAudioSoundMode(int tmp_val); - int GetAudioSoundMode(); - int SaveCurAudioSoundMode(int tmp_val); - int GetCurAudioSoundMode(); - int SetAudioWallEffect(int tmp_val); - int GetAudioWallEffect(); - int SaveCurAudioWallEffect(int tmp_val); - int GetCurAudioWallEffect(); - int SetAudioEQMode(int tmp_val); - int GetAudioEQMode(); - int SaveCurAudioEQMode(int tmp_val); - int GetCurAudioEQMode(); - int GetAudioEQRange(int range_buf[]); - int GetAudioEQBandCount(); - int SetAudioEQGain(int gain_buf[]); - int GetAudioEQGain(int gain_buf[]); - int GetCurAudioEQGain(int gain_buf[]); - int SaveCurAudioEQGain(int gain_buf[]); - int SetAudioEQSwitch(int switch_val); - int OpenAmAudio(unsigned int sr, int input_device, int output_device); - int CloseAmAudio(void); - int SetAmAudioInputSr(unsigned int sr, int output_device); - int SetAmAudioOutputMode(int mode); - int SetAmAudioMusicGain(int gain); - int SetAmAudioLeftGain(int gain); - int SetAmAudioRightGain(int gain); - int SetAudioVolumeCompensationVal(int tmp_vol_comp_val); - int AudioLineInSelectChannel(int audio_channel); - int AudioSetLineInCaptureVolume(int l_vol, int r_vol); - int SetKalaokIO(int level); - int setAudioPcmPlaybackVolume(int val); - - int openTvAudio(); - int closeTvAudio(); - - int InitTvAudio(int sr, int input_device); - int UnInitTvAudio(); - int AudioChangeSampleRate(int sr); - int AudioSetAudioInSource(int audio_src_in_type); - int AudioSetAudioSourceType(int source_type); - int AudioSSMRestoreDefaultSetting(); - int SetAudioDumpDataFlag(int tmp_flag); - int GetAudioDumpDataFlag(); - int SetAudioLeftRightMode(unsigned int mode); - unsigned int GetAudioLeftRightMode(); - int SwitchAVOutBypass (int); - int SetAudioSwitchIO(int value); - int SetOutput_Swap(int value); - int HanldeAudioInputSr(unsigned int); - void AudioSetVolumeDigitLUTBuf(int lut_sel_flag, int *MainVolLutBuf); - int SetADC_Digital_Capture_Volume(int value); - int SetPGA_IN_Value(int value); - int SetDAC_Digital_PlayBack_Volume(int value); - int InitSetTvAudioCard(); - int UnInitSetTvAudioCard(); - void RefreshSrsEffectAndDacGain(); - int SetCustomEQGain(); - int SetAtvInGain(int gain_val); - int GetHdmiAvHotplugDetectOnoff(); -private: - int SendCmdToOffBoardFBCExternalDac(int, int); - int LoadCurAudioSPDIFMode(); - int LoadCurAudioMasterVolume(); - int LoadCurAudioBalance(); - int LoadCurAudioSupperBassVolume(); - int LoadCurAudioSupperBassSwitch(); - int LoadCurAudioSrsSurround(); - int LoadCurAudioSrsDialogClarity(); - int LoadCurAudioSPDIFSwitch(); - void SetSupperBassSRSSpeakerSize(); - int LoadCurAudioSoundMode(); - int LoadCurAudioEQMode(); - int LoadCurAudioSrsTruBass(); - int RealSaveCurAudioBassVolume(int, int); - int LoadCurAudioBassVolume(); - int RealSaveCurAudioTrebleVolume(int, int); - int LoadCurAudioTrebleVolume(); - int HandleTrebleBassVolume(); - int LoadCurAudioWallEffect(); - int RealReadCurAudioEQGain(int *); - int RealSaveCurAudioEQGain(int *, int); - int LoadCurAudioEQGain(); - int MappingEQGain(int *, int *, int); - int RestoreToAudioDefEQGain(int *); - int GetCustomEQGain(int *); - int AudioSetEQGain(int *); - int handleEQGainBeforeSet(int *, int *); - int RealSetEQGain(int *); - int SetSpecialModeEQGain(int); - int SetSpecialIndexEQGain(int, int); - int SaveSpecialIndexEQGain(int, int); - void LoadAudioCtl(); - void InitSetAudioCtl(); - int GetBassUIMinGainVal(); - int GetBassUIMaxGainVal(); - int GetTrebleUIMinGainVal(); - int GetTrebleUIMaxGainVal(); - int MappingLine(int, int, int, int, int); - int MappingTrebleBassAndEqualizer(int, int, int, int); - int SetSPDIFMode(int mode_val); - - CAudioAlsa mAudioAlsa; - CAudioEffect mAudioEffect; - - CAudioCustomerCtrl mCustomerCtrl; - int mCurAudioMasterVolume; - int mCurAudioBalance; - int mCurAudioSupperBassVolume; - int mCurAudioSupperBassSwitch; - int mCurAudioSRSSurround; - int mCurAudioSrsDialogClarity; - int mCurAudioSrsTruBass; - int mCurAudioSPDIFSwitch; - int mCurAudioSPDIFMode; - int mCurAudioBassVolume; - int mCurAudioTrebleVolume; - int mCurAudioSoundMode; - int mCurAudioWallEffect; - int mCurAudioEQMode; - int mCustomAudioMasterVolume; - int mCustomAudioBalance; - int mCustomAudioSupperBassVolume; - int mCustomAudioSupperBassSwitch; - int mCustomAudioSRSSurround; - int mCustomAudioSrsDialogClarity; - int mCustomAudioSrsTruBass; - int mCustomAudioBassVolume; - int mCustomAudioTrebleVolume; - int mCustomAudioSoundMode; - int mCustomAudioWallEffect; - int mCustomAudioEQMode; - int mCustomAudioSoundEnhancementSwitch; - int mCustomEQGainBuf[CC_BAND_ITEM_CNT]; - int mCurEQGainBuf[CC_BAND_ITEM_CNT] ; - int8_t mCurEQGainChBuf[CC_BAND_ITEM_CNT]; - int mWallEffectValueBuf[CC_BAND_ITEM_CNT]; - int mVolumeCompensationVal; - int mMainVolumeBalanceVal; - //end audio - -protected: - class CTvMsgQueue: public CMsgQueueThread, public CAv::IObserver, public CTvScanner::IObserver , public CTvEpg::IObserver, public CFrontEnd::IObserver { - public: - static const int TV_MSG_COMMON = 0; - static const int TV_MSG_STOP_ANALYZE_TS = 1; - static const int TV_MSG_START_ANALYZE_TS = 2; - static const int TV_MSG_CHECK_FE_DELAY = 3; - static const int TV_MSG_AV_EVENT = 4; - static const int TV_MSG_FE_EVENT = 5; - static const int TV_MSG_SCAN_EVENT = 6; - static const int TV_MSG_EPG_EVENT = 7; - static const int TV_MSG_HDMI_SR_CHANGED = 8; - static const int TV_MSG_ENABLE_VIDEO_LATER = 9; - CTvMsgQueue(CTv *tv); - ~CTvMsgQueue(); - //scan observer - void onEvent ( const CTvScanner::ScannerEvent &ev ); - //epg observer - void onEvent ( const CTvEpg::EpgEvent &ev ); - //FE observer - void onEvent ( const CFrontEnd::FEEvent &ev ); - //AV - void onEvent(const CAv::AVEvent &ev); - private: - virtual void handleMessage ( CMessage &msg ); - CTv *mpTv; - }; - - class CTvDetectObserverForScanner: public CTvin::CTvinSigDetect::ISigDetectObserver { - public: - CTvDetectObserverForScanner(CTv *); - ~CTvDetectObserverForScanner() {}; - virtual void onSigToStable(); - virtual void onSigStableToUnstable(); - virtual void onSigStableToNoSig(); - virtual void onSigUnStableToNoSig(); - virtual void onSigStillStable(); - private: - CTv *mpTv; - int m_sig_stable_nums; - }; - void onEnableVideoLater(int framecount); - int resetDmxAndAvSource(); - int stopScan(); - int stopPlaying(); - void sendTvEvent ( const CTvEv &ev ); - int startPlayTv ( int source, int vid, int aid, int vfat, int afat ); - //scan observer - void onEvent ( const CTvScanner::ScannerEvent &ev ); - //epg observer - void onEvent ( const CTvEpg::EpgEvent &ev ); - //FE observer - void onEvent ( const CFrontEnd::FEEvent &ev ); - //AV - void onEvent(const CAv::AVEvent &ev); - bool Tv_Start_Analyze_Ts ( int channelID ); - bool Tv_Stop_Analyze_Ts(); - int Tvin_Stop ( void ); - int Tvin_GetTvinConfig(); - int Tv_init_audio(); - int Tv_MiscSetBySource ( tv_source_input_t ); - void print_version_info ( void ); - int dtvCleanProgramByFreq ( int freq ); - /*********************** Audio start **********************/ - int SetAudioVolDigitLUTTable ( tv_source_input_t source_input ); - virtual int Tv_SetAudioInSource (tv_source_input_t source_input); - void Tv_SetAudioOutputSwap_Type (tv_source_input_t source_input); - void Tv_ADCDigitalCapture_Volume (void); - void Tv_SetPGAIn_Gain (void); - void Tv_SetDACDigitalPlayBack_Volume (int audio_src_in_type); - void Tv_SetAVOutPut_Input_gain(tv_source_input_t source_input); - /*********************** Audio end **********************/ - - // - virtual void onSigToStable(); - virtual void onSigStableToUnstable(); - virtual void onSigStableToUnSupport(); - virtual void onSigStableToNoSig(); - virtual void onSigUnStableToUnSupport(); - virtual void onSigUnStableToNoSig(); - virtual void onSigNullToNoSig(); - virtual void onSigNoSigToUnstable(); - virtual void onSigStillStable(); - virtual void onSigStillUnstable(); - virtual void onSigStillNosig(); - virtual void onSigStillNoSupport(); - virtual void onSigStillNull(); - virtual void onStableSigFmtChange(); - virtual void onStableTransFmtChange(); - virtual void onSigDetectEnter(); - virtual void onSigDetectLoop(); - - virtual void onSourceConnect(int source_type, int connect_status); - virtual void onHDMIRxCECMessage(int msg_len, unsigned char msg_buf[]); - virtual void onUpgradeStatus(int status, int progress); - virtual void onSerialCommunication(int dev_id, int rd_len, unsigned char data_buf[]); - virtual void onThermalDetect(int state); - virtual void onVframeSizeChange(); - - CTvEpg mTvEpg; - CTvScanner mTvScanner; - mutable Mutex mLock; - CTvTime mTvTime; - CTvRecord mTvRec; - CFrontEnd mFrontDev; - CTvDimension mTvVchip; - CTvSubtitle mTvSub; - CAv mAv; - CTvDmx mTvDmx; - CTvMsgQueue mTvMsgQueue; - AutoBackLight mAutoBackLight; - CAutoPQparam mAutoPQparam; - CTvDetectObserverForScanner mTvScannerDetectObserver; - // - volatile int mTvAction; - volatile TvRunStatus_t mTvStatus; - volatile tv_source_input_t m_source_input; - volatile tv_source_input_t m_last_source_input; - /* for tvin window mode and pos*/ - tvin_window_pos_t m_win_pos; - tv_window_mode_t m_win_mode; - int m_blackout_enable;//1 enable 0 disable - int m_cur_playing_prog_id; - bool mHdmiOutFbc; - CFbcCommunication *fbcIns; - - - bool mlastlockstatus; - String8 mlastdm; - String8 mlastabbrev; - String8 mlastabbtext; - pthread_t vchipthread; - int mvchip_running; - friend class CTvMsgQueue; - int mCurAnalyzeTsChannelID; - TvIObserver *mpObserver; - tv_dtv_scan_running_status_t mDtvScanRunningStatus; - volatile tv_config_t gTvinConfig; - int dtv_auto_3d_flag; - bool mAutoSetDisplayFreq; - int m_sig_stable_nums; - bool mSetHdmiEdid; - /** for L/R or B/T 3d mode overscan **/ - /** for 3D **/ - VIDEO_3D_MODE_T m_mode_3d; - /** for HDMI-in sampling detection. **/ - int m_hdmi_sampling_rate; - int m_hdmi_audio_data; - /** for display mode to bottom **/ - int screen_mode; - - //audio mute - int mAudioMuteStatusForTv; - int mAudioMuteStatusForSystem; - char mMainVolLutTableExtraName[16]; -}; - -#endif //_CDTV_H diff --git a/tvapi/libtv/tv/CTvBooking.cpp b/tvapi/libtv/tv/CTvBooking.cpp deleted file mode 100644 index 220d25e..0000000 --- a/tvapi/libtv/tv/CTvBooking.cpp +++ b/dev/null @@ -1,159 +0,0 @@ -#define LOG_TAG "CTvBooking" - -#include "CTvBooking.h" -#include "CTvDatabase.h" - -int CTvBooking::InitFromCursor(CTvDatabase::Cursor &c) -{ - int col; - - col = c.getColumnIndex("db_id"); - this->id = c.getInt(col); - - col = c.getColumnIndex("db_srv_id"); - this->programId = c.getInt(col); - - col = c.getColumnIndex("db_evt_id"); - this->eventId = c.getInt(col); - - col = c.getColumnIndex("flag"); - this->flag = c.getInt(col); - - col = c.getColumnIndex("status"); - this->status = c.getInt(col); - - col = c.getColumnIndex("repeat"); - this->repeat = c.getInt(col); - - col = c.getColumnIndex("start"); - this->start = (long)c.getInt(col); - - col = c.getColumnIndex("duration"); - this->duration = (long)c.getInt(col) ; - - col = c.getColumnIndex("srv_name"); - this->progName = c.getString(col); - - col = c.getColumnIndex("evt_name"); - this->evtName = c.getString(col); - - return 0; -} - -int CTvBooking::selectByID(int id, CTvBooking &CtvBook) -{ - CTvDatabase::Cursor c; - String8 sql; - - sql = String8("select * from booking_table where booking_table.db_evt_id = ") + String8::format("%d", id); - CTvDatabase::GetTvDb()->select(sql.string(), c); - if (c.moveToFirst()) { - CtvBook.InitFromCursor(c); - } else { - c.close(); - return -1; - } - - c.close(); - return 0; -} - -int CTvBooking::getBookedEventList(Vector<sp<CTvBooking> > &vBv) -{ - String8 cmd; - - cmd = String8("select * from booking_table order by start"); - - CTvDatabase::Cursor c; - int ret = CTvDatabase::GetTvDb()->select(cmd, c); - - if (c.moveToFirst()) { - do { - vBv.add(new CTvBooking(c)); - } while (c.moveToNext()); - - - } else { - c.close(); - return -1; - } - - c.close(); - return 0; - -} - -int CTvBooking::bookProgram(CTvProgram &prog, CTvEvent &evt) -{ - String8 cmd; - String8 progName = String8(prog.getName()); - String8 evtName = String8(evt.getName()); - - - /*book this program*/ - cmd = String8("insert into booking_table(db_srv_id, db_evt_id, srv_name, evt_name,") - + String8("start,duration,flag,status,file_name,vid_pid,vid_fmt,aud_pids,aud_fmts,aud_languages,") - + String8("sub_pids,sub_types,sub_composition_page_ids,sub_ancillary_page_ids,sub_languages,") - + String8("ttx_pids,ttx_types,ttx_magazine_numbers,ttx_page_numbers,ttx_languages, other_pids,from_storage,repeat)") - + String8("values(") + String8::format("%d,", prog.getID()) + String8::format("%d,", evt.getEventId()) + progName.string() + String8(",") + evtName.string() - + String8::format("%ld,", evt.getStartTime()) + String8::format("%ld,", evt.getEndTime() - evt.getStartTime()) + String8::format("%d,", flag) - + String8::format("%d,", status) + String8(",") + String8::format("%d,", prog.getVideo()->getPID()) + String8::format("%d,", prog.getVideo()->getFormat()) - + String8::format("%d,", prog.getAudio(0)->getPID()) + String8::format("%d,", prog.getAudio(0)->getFormat()) + prog.getAudio(0)->getLang().string() - + String8(" , , , , , , , , , , , , ,)"); - - CTvDatabase::GetTvDb()->exeSql(cmd.string()); - - return 0; -} - -int CTvBooking::deleteBook(int evtIdFlag) -{ - String8 cmd; - - cmd = String8("delete from booking_table where db_evt_id=") - + String8::format("%d", evtIdFlag); - - CTvDatabase::GetTvDb()->exeSql(cmd.string()); - - return 0; -} - -int CTvBooking::bookEvent(int evtId, bool bBookFlag) -{ - String8 cmd; - - cmd = String8("update evt_table set sub_flag=") + String8::format("%d", bBookFlag) - + String8(" where db_id=") + String8::format("%d", evtId); - - CTvDatabase::GetTvDb()->exeSql(cmd.string()); - - if (true == bBookFlag) { - CTvEvent evt; - CTvEvent::selectByID(evtId, evt); - - CTvProgram prog; - CTvProgram::selectByID(evt.getProgramId(), prog); - - bookProgram(prog, evt); - } else { - deleteBook(evtId); - } - - return 0; - -} - -CTvBooking::CTvBooking(CTvDatabase::Cursor &c) -{ - InitFromCursor(c); -} - -CTvBooking::CTvBooking() -{ -} - -CTvBooking::~CTvBooking() -{ -} - - diff --git a/tvapi/libtv/tv/CTvBooking.h b/tvapi/libtv/tv/CTvBooking.h deleted file mode 100644 index c744af6..0000000 --- a/tvapi/libtv/tv/CTvBooking.h +++ b/dev/null @@ -1,81 +0,0 @@ -// -// -// amlogic 2013 -// -// @ Project : tv -// @ File Name : CTvBooking.h -// @ Date : 2013-11 -// @ Author : -// -// - - -#if !defined(_CTVBOOKING_H) -#define _CTVBOOKING_H - -#include "CTvDatabase.h" -#include "CTvProgram.h" -#include "CTvEvent.h" -#include <utils/String8.h> -#include <utils/RefBase.h> -#include <stdlib.h> -#include "CTvLog.h" - -class CTvBooking : public LightRefBase<CTvBooking> { -public: - CTvBooking(CTvDatabase::Cursor &c); - CTvBooking(); - ~CTvBooking(); - - static int selectByID(int id, CTvBooking &CtvBook); - - int bookEvent(int evtId, bool bBookFlag); - int getBookedEventList(Vector<sp<CTvBooking> > &vBv); - - int getBookId() - { - return id; - }; - int getProgramId() - { - return programId; - }; - int getEventId() - { - return eventId; - }; - int getStartTime() - { - return start; - }; - int getDurationTime() - { - return duration; - }; - String8 &getProgName() - { - return progName; - }; - String8 &getEvtName() - { - return evtName; - }; - -private: - int deleteBook(int evtIdFlag) ; - int bookProgram(CTvProgram &prog, CTvEvent &evt); - int InitFromCursor(CTvDatabase::Cursor &c); -private: - int id; - int programId; - int eventId; - int flag; - int status; - int repeat; - long start; - long duration; - String8 progName; - String8 evtName; -}; - -#endif //_CTVBOOKING_H diff --git a/tvapi/libtv/tv/CTvDmx.cpp b/tvapi/libtv/tv/CTvDmx.cpp deleted file mode 100644 index ef6262e..0000000 --- a/tvapi/libtv/tv/CTvDmx.cpp +++ b/dev/null @@ -1,24 +0,0 @@ -#include "CTvDmx.h" -CTvDmx::CTvDmx() -{ - mDmxDevId = 0; -} - -CTvDmx::~CTvDmx() -{ -} - -int CTvDmx::Open(AM_DMX_OpenPara_t ¶) -{ - return AM_DMX_Open ( mDmxDevId, ¶ ); -} - -int CTvDmx::Close() -{ - return AM_DMX_Close ( mDmxDevId ); -} - -int CTvDmx::SetSource(AM_DMX_Source_t source) -{ - return AM_DMX_SetSource ( mDmxDevId, source ); -} diff --git a/tvapi/libtv/tv/CTvDmx.h b/tvapi/libtv/tv/CTvDmx.h deleted file mode 100644 index 4cefc71..0000000 --- a/tvapi/libtv/tv/CTvDmx.h +++ b/dev/null @@ -1,17 +0,0 @@ -#ifndef _C_TV_DMX_H -#define _C_TV_DMX_H -#include "CTvEv.h" -#include "CTvLog.h" -#include "am_dmx.h" - -class CTvDmx { -public: - CTvDmx(); - ~CTvDmx(); - int Open(AM_DMX_OpenPara_t ¶); - int Close(); - int SetSource(AM_DMX_Source_t source); -private: - int mDmxDevId; -}; -#endif diff --git a/tvapi/libtv/tv/CTvEpg.cpp b/tvapi/libtv/tv/CTvEpg.cpp deleted file mode 100644 index d1ead7f..0000000 --- a/tvapi/libtv/tv/CTvEpg.cpp +++ b/dev/null @@ -1,214 +0,0 @@ -/* - * amlogic 2013 - *@ Project : tv - *@ Date : 2013-12 - *@ Author : -*/ -#define LOG_TAG "CTvEpg" - -#include "CTvEpg.h" -#include "CTvChannel.h" - -void CTvEpg::epg_evt_callback(long dev_no, int event_type, void *param, void *user_data __unused) -{ - CTvEpg *pEpg; - - AM_EPG_GetUserData((AM_EPG_Handle_t)dev_no, (void **)&pEpg); - - if (pEpg == NULL) return; - - if (pEpg->mpObserver == NULL) { - return; - } - switch (event_type) { - case AM_EPG_EVT_NEW_TDT: - case AM_EPG_EVT_NEW_STT: { - int utc_time; - AM_EPG_GetUTCTime(&utc_time); - pEpg->mCurEpgEv.type = EpgEvent::EVENT_TDT_END; - pEpg->mCurEpgEv.time = (long)utc_time; - pEpg->mpObserver->onEvent(pEpg->mCurEpgEv); - } - break; - case AM_EPG_EVT_UPDATE_EVENTS: - pEpg->mCurEpgEv.type = EpgEvent::EVENT_PROGRAM_EVENTS_UPDATE; - pEpg->mCurEpgEv.programID = (int)param; - pEpg->mpObserver->onEvent(pEpg->mCurEpgEv); - break; - case AM_EPG_EVT_UPDATE_PROGRAM_AV: - pEpg->mCurEpgEv.type = EpgEvent::EVENT_PROGRAM_AV_UPDATE; - pEpg->mCurEpgEv.programID = (int)param; - pEpg->mpObserver->onEvent(pEpg->mCurEpgEv); - break; - case AM_EPG_EVT_UPDATE_PROGRAM_NAME: - pEpg->mCurEpgEv.type = EpgEvent::EVENT_PROGRAM_NAME_UPDATE; - pEpg->mCurEpgEv.programID = (int)param; - pEpg->mpObserver->onEvent(pEpg->mCurEpgEv); - break; - case AM_EPG_EVT_UPDATE_TS: - pEpg->mCurEpgEv.type = EpgEvent::EVENT_CHANNEL_UPDATE; - pEpg->mCurEpgEv.channelID = (int)param; - pEpg->mpObserver->onEvent(pEpg->mCurEpgEv); - break; - default: - break; - } -} - -void CTvEpg::Init(int fend, int dmx, int fend_mod, char *textLanguages, char *dvb_text_coding) -{ - mFend_dev_id = fend; - mDmx_dev_id = dmx; - mFend_mod = fend_mod; - epg_create(fend, dmx, fend_mod, textLanguages); - epg_set_dvb_text_coding(dvb_text_coding); -} - -void CTvEpg::epg_create(int fend_id, int dmx_id, int src, char *textLangs) -{ - AM_EPG_CreatePara_t para; - AM_ErrorCode_t ret; - AM_FEND_OpenPara_t fend_para; - AM_DMX_OpenPara_t dmx_para; - - LOGD("Opening demux%d ...", dmx_id); - memset(&dmx_para, 0, sizeof(dmx_para)); - AM_DMX_Open(dmx_id, &dmx_para); - - para.fend_dev = fend_id; - para.dmx_dev = dmx_id; - para.source = src; - para.hdb = NULL; - - - snprintf(para.text_langs, sizeof(para.text_langs), "%s", textLangs); - - - ret = AM_EPG_Create(¶, &mEpgScanHandle); - if (ret != AM_SUCCESS) { - LOGD("AM_EPG_Create failed"); - return; - } - - /*注册EIT通知事件*/ - AM_EVT_Subscribe((long)mEpgScanHandle, AM_EPG_EVT_NEW_TDT, epg_evt_callback, NULL); - AM_EVT_Subscribe((long)mEpgScanHandle, AM_EPG_EVT_NEW_STT, epg_evt_callback, NULL); - AM_EVT_Subscribe((long)mEpgScanHandle, AM_EPG_EVT_UPDATE_EVENTS, epg_evt_callback, NULL); - AM_EVT_Subscribe((long)mEpgScanHandle, AM_EPG_EVT_UPDATE_PROGRAM_AV, epg_evt_callback, NULL); - AM_EVT_Subscribe((long)mEpgScanHandle, AM_EPG_EVT_UPDATE_PROGRAM_NAME, epg_evt_callback, NULL); - AM_EVT_Subscribe((long)mEpgScanHandle, AM_EPG_EVT_UPDATE_TS, epg_evt_callback, NULL); - AM_EPG_SetUserData(mEpgScanHandle, (void *)this); -} - - - -void CTvEpg::epg_destroy() -{ - /*反注册EIT通知事件*/ - AM_EVT_Unsubscribe((long)mEpgScanHandle, AM_EPG_EVT_NEW_TDT, epg_evt_callback, NULL); - AM_EVT_Unsubscribe((long)mEpgScanHandle, AM_EPG_EVT_NEW_STT, epg_evt_callback, NULL); - AM_EVT_Unsubscribe((long)mEpgScanHandle, AM_EPG_EVT_UPDATE_EVENTS, epg_evt_callback, NULL); - AM_EVT_Unsubscribe((long)mEpgScanHandle, AM_EPG_EVT_UPDATE_PROGRAM_AV, epg_evt_callback, NULL); - AM_EVT_Unsubscribe((long)mEpgScanHandle, AM_EPG_EVT_UPDATE_PROGRAM_NAME, epg_evt_callback, NULL); - AM_EVT_Unsubscribe((long)mEpgScanHandle, AM_EPG_EVT_UPDATE_TS, epg_evt_callback, NULL); - AM_EPG_Destroy(mEpgScanHandle); - AM_DMX_Close(mDmx_dev_id); -} - - -void CTvEpg::epg_change_mode(int op, int mode) -{ - AM_ErrorCode_t ret; - ret = AM_EPG_ChangeMode(mEpgScanHandle, op, mode); - if (ret != AM_SUCCESS) - LOGD("AM_EPG_ChangeMode failed"); -} - - - -void CTvEpg::epg_monitor_service(int srv_id) -{ - int ret = AM_EPG_MonitorService(mEpgScanHandle, srv_id); - if (ret != AM_SUCCESS) - LOGD("AM_EPG_MonitorService failed"); -} - - - -void CTvEpg::epg_set_dvb_text_coding(char *coding) -{ - if (!strcmp(coding, "standard")) { - AM_SI_SetDefaultDVBTextCoding(""); - } else { - AM_SI_SetDefaultDVBTextCoding(coding); - } -} - - - -/*Start scan the sections.*/ -void CTvEpg::startScan(int mode) -{ - epg_change_mode(MODE_ADD, mode); -} - -/*Stop scan the sections.*/ -void CTvEpg::stopScan(int mode) -{ - epg_change_mode(MODE_REMOVE, mode); -} - - -/*Enter a channel.*/ -void CTvEpg::enterChannel(int chan_id) -{ - - if (chan_id == mCurScanChannelId) - return; - //already enter,leave it - if (mCurScanChannelId != INVALID_ID) { - leaveChannel(); - } - - if (mFend_mod == CTvChannel::MODE_ATSC) { - startScan(SCAN_PSIP_ETT | SCAN_PSIP_EIT | SCAN_MGT | SCAN_VCT | SCAN_RRT | SCAN_STT); - } else { - startScan(SCAN_EIT_ALL | SCAN_SDT | SCAN_NIT | SCAN_TDT | SCAN_CAT); - } - - mCurScanChannelId = chan_id; -} - -/*Leave the channel.*/ -void CTvEpg::leaveChannel() -{ - - stopScan(SCAN_ALL); - mCurScanChannelId = INVALID_ID; -} - -/*Enter the program.*/ -void CTvEpg::enterProgram(int prog_id) -{ - if (prog_id == mCurScanProgramId) - return; - - if (mCurScanProgramId != INVALID_ID) { - leaveProgram(); - } - - mCurScanProgramId = prog_id; - epg_monitor_service(mCurScanProgramId);//---------db_id - startScan(SCAN_PAT | SCAN_PMT); -} - -/*Leave the program.*/ -void CTvEpg::leaveProgram() -{ - if (mCurScanProgramId == INVALID_ID) - return; - - stopScan(SCAN_PAT | SCAN_PMT); - epg_monitor_service(-1); - mCurScanProgramId = INVALID_ID; -} diff --git a/tvapi/libtv/tv/CTvEpg.h b/tvapi/libtv/tv/CTvEpg.h deleted file mode 100644 index 8242f3c..0000000 --- a/tvapi/libtv/tv/CTvEpg.h +++ b/dev/null @@ -1,158 +0,0 @@ -/* - * amlogic 2013 - *@ Project : tv - *@ Date : 2013-12 - *@ Author : -*/ -#include <am_debug.h> -#include <am_scan.h> -#include <am_epg.h> -#include <am_mem.h> -#include <utils/Log.h> -#include "CTvEv.h" -#if !defined(_CDTVEPG_H) -#define _CDTVEPG_H -class CTvEpg { -public : - static const int MODE_ADD = 0; - static const int MODE_REMOVE = 1; - static const int MODE_SET = 2; - - static const int SCAN_PAT = 0x01; - static const int SCAN_PMT = 0x02; - static const int SCAN_CAT = 0x04; - static const int SCAN_SDT = 0x08; - static const int SCAN_NIT = 0x10; - static const int SCAN_TDT = 0x20; - static const int SCAN_EIT_PF_ACT = 0x40; - static const int SCAN_EIT_PF_OTH = 0x80; - static const int SCAN_EIT_SCHE_ACT = 0x100; - static const int SCAN_EIT_SCHE_OTH = 0x200; - static const int SCAN_MGT = 0x400; - static const int SCAN_VCT = 0x800; - static const int SCAN_STT = 0x1000; - static const int SCAN_RRT = 0x2000; - static const int SCAN_PSIP_EIT = 0x4000; - static const int SCAN_PSIP_ETT = 0x8000; - static const int SCAN_EIT_PF_ALL = SCAN_EIT_PF_ACT | SCAN_EIT_PF_OTH; - static const int SCAN_EIT_SCHE_ALL = SCAN_EIT_SCHE_ACT | SCAN_EIT_SCHE_OTH; - static const int SCAN_EIT_ALL = SCAN_EIT_PF_ALL | SCAN_EIT_SCHE_ALL; - static const int SCAN_ALL = SCAN_PAT | SCAN_PMT | SCAN_CAT | SCAN_SDT | SCAN_NIT | SCAN_TDT | SCAN_EIT_ALL | - SCAN_MGT | SCAN_VCT | SCAN_STT | SCAN_RRT | SCAN_PSIP_EIT | SCAN_PSIP_ETT; - - static const int INVALID_ID = -1; - - //egp notify - /*static const int EVENT_PF_EIT_END = 1; - static const int EVENT_SCH_EIT_END = 2; - static const int EVENT_PMT_END = 3; - static const int EVENT_SDT_END = 4; - static const int EVENT_TDT_END = 5; - static const int EVENT_NIT_END = 6; - static const int EVENT_PROGRAM_AV_UPDATE = 7; - static const int EVENT_PROGRAM_NAME_UPDATE = 8; - static const int EVENT_PROGRAM_EVENTS_UPDATE = 9; - static const int EVENT_CHANNEL_UPDATE = 10;*/ - // - class EpgEvent : public CTvEv { - public: - EpgEvent(): CTvEv(CTvEv::TV_EVENT_EPG) - { - - }; - ~EpgEvent() - { - }; - static const int EVENT_PF_EIT_END = 1; - static const int EVENT_SCH_EIT_END = 2; - static const int EVENT_PMT_END = 3; - static const int EVENT_SDT_END = 4; - static const int EVENT_TDT_END = 5; - static const int EVENT_NIT_END = 6; - static const int EVENT_PROGRAM_AV_UPDATE = 7; - static const int EVENT_PROGRAM_NAME_UPDATE = 8; - static const int EVENT_PROGRAM_EVENTS_UPDATE = 9; - static const int EVENT_CHANNEL_UPDATE = 10; - static const int EVENT_CHANNEL_UPDATE_END = 11; - - int type; - int channelID; - int programID; - int dvbOrigNetID; - int dvbTSID; - int dvbServiceID; - long time; - int dvbVersion; - }; - - class IObserver { - public: - IObserver() {}; - virtual ~IObserver() {}; - virtual void onEvent(const EpgEvent &ev) = 0; - }; - //1 VS n - //int addObserver(IObserver* ob); - //int removeObserver(IObserver* ob); - - //1 VS 1 - int setObserver(IObserver *ob) - { - mpObserver = ob; - return 0; - } - - CTvEpg() - { - mCurScanChannelId = INVALID_ID; - mCurScanProgramId = INVALID_ID; - mEpgScanHandle = NULL; - mpObserver = NULL; - } - void Init(int fend, int dmx, int fend_mod, char *textLanguages, char *dvb_text_coding); - - ~CTvEpg() - { - epg_destroy(); - } - - /*Enter a channel.*/ - void enterChannel(int chan_id); - /*Leave the channel.*/ - void leaveChannel(); - /*Enter the program.*/ - void enterProgram(int prog_id); - /*Leave the program.*/ - void leaveProgram(); - -private: - // - void epg_create(int fend_id, int dmx_id, int src, char *textLangs); - void epg_destroy(); - void epg_change_mode(int op, int mode); - void epg_monitor_service(int srv_id); - void epg_set_dvb_text_coding(char *coding); - - - /*Start scan the sections.*/ - void startScan(int mode); - /*Stop scan the sections.*/ - void stopScan(int mode); - - static void epg_evt_callback(long dev_no, int event_type, void *param, void *user_data); - - // - IObserver *mpObserver; - - // - AM_EPG_Handle_t mEpgScanHandle; - int mFend_dev_id; - int mDmx_dev_id ; - int mFend_mod; - int mCurScanChannelId ; - int mCurScanProgramId ; - - // - EpgEvent mCurEpgEv; -}; -#endif //_CDTVEPG_H diff --git a/tvapi/libtv/tv/CTvEv.cpp b/tvapi/libtv/tv/CTvEv.cpp deleted file mode 100644 index eb7129d..0000000 --- a/tvapi/libtv/tv/CTvEv.cpp +++ b/dev/null @@ -1,11 +0,0 @@ -// amlogic 2014 -// -// @ Project : tv -// @ File Name : -// @ Date : 2014-02 -// @ Author : -#include "CTvEv.h" -CTvEv::CTvEv(int type) -{ - mEvType = type; -} diff --git a/tvapi/libtv/tv/CTvEv.h b/tvapi/libtv/tv/CTvEv.h deleted file mode 100644 index 7227efb..0000000 --- a/tvapi/libtv/tv/CTvEv.h +++ b/dev/null @@ -1,150 +0,0 @@ -// amlogic 2014 -// -// @ Project : tv -// @ File Name : -// @ Date : 2014-02 -// @ Author : -#ifndef _CTVEV_H_ -#define _CTVEV_H_ - -#include <utils/String8.h> -#define CC_MAX_SERIAL_RD_BUF_LEN (1200) - -using namespace android; - -class CTvEv { -public: - static const int TV_EVENT_COMMOM = 0;//通用消息 - static const int TV_EVENT_SCANNER = 1;//搜索消息 - static const int TV_EVENT_EPG = 2;//EPG - static const int TV_EVENT_SOURCE_SWITCH = 3;//信源切换 - static const int TV_EVENT_SIGLE_DETECT = 4; - static const int TV_EVENT_ADC_CALIBRATION = 5;//ADC校准 - static const int TV_EVENT_VGA = 6;//VGA - static const int TV_EVENT_3D_STATE = 7;//3D - static const int TV_EVENT_AV_PLAYBACK = 8;//PLAYBACK EVENT MSG - static const int TV_EVENT_SERIAL_COMMUNICATION = 9; - static const int TV_EVENT_SOURCE_CONNECT = 10; - static const int TV_EVENT_HDMIRX_CEC = 11; - static const int TV_EVENT_BLOCK = 12; - static const int TV_EVENT_CC = 13; //close caption - static const int TV_EVENT_VCHIP = 14; //VCHIP - static const int TV_EVENT_HDMI_IN_CAP = 15; - static const int TV_EVENT_UPGRADE_FBC = 16; - static const int TV_EVENT_2d4G_HEADSET = 17; - static const int TV_EVENT_AV = 18; - static const int TV_EVENT_SUBTITLE = 19; - - CTvEv(int type); - virtual ~CTvEv() {}; - int getEvType() const { - return mEvType; - }; -private: - int mEvType; -}; - -namespace TvEvent { - //events - class SignalInfoEvent: public CTvEv { - public: - SignalInfoEvent() : CTvEv ( CTvEv::TV_EVENT_SIGLE_DETECT ) {} - ~SignalInfoEvent() {} - int mTrans_fmt; - int mFmt; - int mStatus; - int mReserved; - }; - - class VGAEvent: public CTvEv { - public: - VGAEvent() : CTvEv ( CTvEv::TV_EVENT_VGA ) {} - ~VGAEvent() {} - int mState; - }; - - class ADCCalibrationEvent: public CTvEv { - public: - ADCCalibrationEvent() : CTvEv ( CTvEv::TV_EVENT_ADC_CALIBRATION ) {} - ~ADCCalibrationEvent() {} - int mState; - }; - - class SerialCommunicationEvent: public CTvEv { - public: - SerialCommunicationEvent(): CTvEv(CTvEv::TV_EVENT_SERIAL_COMMUNICATION) {} - ~SerialCommunicationEvent() {} - - int mDevId; - int mDataCount; - unsigned char mDataBuf[CC_MAX_SERIAL_RD_BUF_LEN]; - }; - - class SourceConnectEvent: public CTvEv { - public: - SourceConnectEvent() : CTvEv ( CTvEv::TV_EVENT_SOURCE_CONNECT ) {} - ~SourceConnectEvent() {} - int mSourceInput; - int connectionState; - }; - - class HDMIRxCECEvent: public CTvEv { - public: - HDMIRxCECEvent() : CTvEv ( CTvEv::TV_EVENT_HDMIRX_CEC ) {} - ~HDMIRxCECEvent() {} - int mDataCount; - int mDataBuf[32]; - }; - - class AVPlaybackEvent: public CTvEv { - public: - AVPlaybackEvent() : CTvEv ( CTvEv::TV_EVENT_AV_PLAYBACK ) {} - ~AVPlaybackEvent() {} - static const int EVENT_AV_PLAYBACK_NODATA = 1; - static const int EVENT_AV_PLAYBACK_RESUME = 2; - static const int EVENT_AV_SCAMBLED = 3; - static const int EVENT_AV_UNSUPPORT = 4; - - int mMsgType; - int mProgramId; - }; - - class BlockEvent: public CTvEv { - public: - BlockEvent() : CTvEv ( CTvEv::TV_EVENT_BLOCK ) {} - ~BlockEvent() {} - - bool block_status; - int programBlockType; - String8 vchipDimension; - String8 vchipAbbrev; - String8 vchipAbbtext; - }; - - class UpgradeFBCEvent: public CTvEv { - public: - UpgradeFBCEvent() : CTvEv ( CTvEv::TV_EVENT_UPGRADE_FBC ) {} - ~UpgradeFBCEvent() {} - int mState; - int param; - }; - - class HeadSetOf2d4GEvent: public CTvEv { - public: - HeadSetOf2d4GEvent(): CTvEv(CTvEv::TV_EVENT_2d4G_HEADSET) {} - ~HeadSetOf2d4GEvent() {} - - int state; - int para; - }; - - class SubtitleEvent: public CTvEv { - public: - SubtitleEvent(): CTvEv(CTvEv::TV_EVENT_SUBTITLE) {} - ~SubtitleEvent() {} - int pic_width; - int pic_height; - }; -}; -#endif - diff --git a/tvapi/libtv/tv/CTvLog.cpp b/tvapi/libtv/tv/CTvLog.cpp deleted file mode 100644 index 9cdf19b..0000000 --- a/tvapi/libtv/tv/CTvLog.cpp +++ b/dev/null @@ -1,20 +0,0 @@ -// -// -// amlogic 2013 -// -// @ Project : tv -// @ File Name : CTvDatabase.h -// @ Date : 2013-11 -// @ Author : -// -// -#include "CTvLog.h" -/*void CTvLog::LOGD() -{ -} -void CTvLog::LOGE() -{ -} -void CTvLog::LOGW() -{ -}*/ diff --git a/tvapi/libtv/tv/CTvLog.h b/tvapi/libtv/tv/CTvLog.h deleted file mode 100644 index fd34289..0000000 --- a/tvapi/libtv/tv/CTvLog.h +++ b/dev/null @@ -1,28 +0,0 @@ -// -// -// amlogic 2013 -// -// @ Project : tv -// @ File Name : CTvDatabase.h -// @ Date : 2013-11 -// @ Author : -// -// -#include <utils/Log.h> -#if !defined(_CTVLOG_H) -#define _CTVLOG_H - -#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__) - -#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR, LOG_TAG, __VA_ARGS__) - -#define LOGW(...) __android_log_print(ANDROID_LOG_WARN, LOG_TAG, __VA_ARGS__) - - -//class CTvLog{ -// public: -// inline static void LOGD(); -// inline static void LOGW(); -// inline static void LOGE(); -//}; -#endif // diff --git a/tvapi/libtv/tv/CTvRecord.cpp b/tvapi/libtv/tv/CTvRecord.cpp deleted file mode 100644 index 16ea23e..0000000 --- a/tvapi/libtv/tv/CTvRecord.cpp +++ b/dev/null @@ -1,273 +0,0 @@ -#define LOG_TAG "CTvRecord" - -#include <string.h> -#include <fcntl.h> -#include <sys/ioctl.h> -#include <am_debug.h> -#include <am_dmx.h> -#include <am_av.h> - -#include <am_misc.h> - -#include <am_fend.h> -#include <am_dvr.h> -#include <errno.h> -#include "CTvProgram.h" -#include "../tvconfig/tvconfig.h" -#include "CTvRecord.h" - -#define FEND_DEV_NO 0 -#define DVR_DEV_NO 0 -#define DVR_BUF_SIZE 1024*1024 -#define DVR_DEV_COUNT (2) - -typedef struct { - int id; - char file_name[256]; - pthread_t thread; - int running; - int fd; -} DVRData; - -static DVRData data_threads[DVR_DEV_COUNT]; -int pvr_init = 0; -CTvRecord::CTvRecord() -{ - AM_DVR_OpenPara_t dpara; - memset(&dpara, 0, sizeof(dpara)); - AM_DVR_Open(DVR_DEV_NO, &dpara); - data_threads[DVR_DEV_NO].id = 0; - data_threads[DVR_DEV_NO].fd = -1; - data_threads[DVR_DEV_NO].running = 0; - - AM_DVR_SetSource(DVR_DEV_NO, AM_DVR_SRC_ASYNC_FIFO0); - AM_DVR_SetBufferSize(DVR_DEV_NO, DVR_BUF_SIZE); - - memset(filename, 0, sizeof(filename)); - progid = 0xFFFF; - vpid = 0x1fff; - apid = 0x1fff; -} -CTvRecord::~CTvRecord() -{ - AM_DVR_Close(DVR_DEV_NO); - -} -void CTvRecord::dvr_init(void) -{ - AM_DVR_OpenPara_t para; - char buf[32]; - - if (pvr_init) - return; - - memset(¶, 0, sizeof(para)); - LOGD("%s,%d", "TV", __LINE__); - - AM_DVR_Open(DVR_DEV_NO, ¶); - AM_DVR_SetSource(DVR_DEV_NO, AM_DVR_SRC_ASYNC_FIFO0); - AM_DVR_SetBufferSize(DVR_DEV_NO, DVR_BUF_SIZE); - - snprintf(buf, sizeof(buf), "%d", (512 * 1024)); - AM_FileEcho("/sys/class/dmx/asyncfifo_len", buf); - - pvr_init = 1; -} - -char *CTvRecord::GetRecordFileName() -{ - return filename; -} -void CTvRecord::SetRecordFileName(char *name) -{ - strcpy(filename, name); -} -void CTvRecord::SetCurRecProgramId(int id) -{ - progid = id; -} - -int CTvRecord::dvr_data_write(int fd, uint8_t *buf, int size) -{ - int ret; - int left = size; - uint8_t *p = buf; - LOGD("%s,%d", "TV", __LINE__); - - while (left > 0) { - ret = write(fd, p, left); - if (ret == -1) { - if (errno != EINTR) { - LOGD("Write DVR data failed: %s", strerror(errno)); - break; - } - ret = 0; - } - - left -= ret; - p += ret; - } - - return (size - left); -} -void *CTvRecord::dvr_data_thread(void *arg) -{ - DVRData *dd = (DVRData *)arg; - int cnt; - uint8_t buf[256 * 1024]; - - LOGD("Data thread for DVR%d start ,record file will save to '%s'", dd->id, dd->file_name); - LOGD("%s,%d", "TV", __LINE__); - - while (dd->running) { - cnt = AM_DVR_Read(dd->id, buf, sizeof(buf), 1000); - if (cnt <= 0) { - LOGD("No data available from DVR%d", dd->id); - usleep(200 * 1000); - continue; - } - //AM_DEBUG(1, "read from DVR%d return %d bytes", dd->id, cnt); - if (dd->fd != -1) { - dvr_data_write(dd->fd, buf, cnt); - } - } - - if (dd->fd != -1) { - close(dd->fd); - dd->fd = -1; - } - LOGD("Data thread for DVR%d now exit", dd->id); - - return NULL; -} - -void CTvRecord::start_data_thread(int dev_no) -{ - DVRData *dd = &data_threads[dev_no]; - - if (dd->running) - return; - LOGD("%s,%d,dev=%d", "TV", __LINE__, dev_no); - dd->fd = open(dd->file_name, O_TRUNC | O_WRONLY | O_CREAT, 0666); - if (dd->fd == -1) { - LOGD("Cannot open record file '%s' for DVR%d, %s", dd->file_name, dd->id, strerror(errno)); - return; - } - dd->running = 1; - pthread_create(&dd->thread, NULL, dvr_data_thread, dd); -} -void CTvRecord::get_cur_program_pid(int progId) -{ - CTvProgram prog; - int aindex; - CTvProgram::Audio *pA; - CTvProgram::Video *pV; - int ret = CTvProgram::selectByID(progId, prog); - if (ret != 0) return; - - LOGD("%s,%d", "TV", __LINE__); - pV = prog.getVideo(); - if (pV != NULL) { - setvpid(pV->getPID()); - } - - aindex = prog.getCurrAudioTrackIndex(); - if (-1 == aindex) { //db is default - aindex = prog.getCurrentAudio(String8("eng")); - if (aindex >= 0) { - prog.setCurrAudioTrackIndex(progId, aindex); - } - } - - if (aindex >= 0) { - pA = prog.getAudio(aindex); - if (pA != NULL) { - setapid(pA->getPID()); - } - } - -} -int CTvRecord::start_dvr() -{ - AM_DVR_StartRecPara_t spara; - int pid_cnt; - int pids[2]; - - /**8PID*/ - get_cur_program_pid(progid); - pids[0] = getvpid(); - pids[1] = getapid(); - - strcpy(data_threads[DVR_DEV_NO].file_name, GetRecordFileName()); - LOGD("%s,%d", "TV", __LINE__); - //sprintf(data_threads[DVR_DEV_NO].file_name,"%s","/storage/external_storage/sda4/testdvr.ts"); - spara.pid_count = 2; - memcpy(&spara.pids, pids, sizeof(pids)); - - if (AM_DVR_StartRecord(DVR_DEV_NO, &spara) == AM_SUCCESS) { - start_data_thread(DVR_DEV_NO); - } - - return 0; -} -void CTvRecord::stop_data_thread(int dev_no) -{ - DVRData *dd = &data_threads[dev_no]; - LOGD("%s,%d", "TV", __LINE__); - - if (! dd->running) - return; - dd->running = 0; - pthread_join(dd->thread, NULL); - LOGD("Data thread for DVR%d has exit", dd->id); -} - - -void CTvRecord::StartRecord(int id) -{ - AM_DVR_OpenPara_t dpara; - fe_status_t status; - char buf[32]; - - AM_FEND_GetStatus(FEND_DEV_NO, &status); - - if (status & FE_HAS_LOCK) { - LOGD("locked\n"); - } else { - LOGD("unlocked\n"); - return ; - } - SetCurRecProgramId(id); - start_dvr(); - - return; -} -void CTvRecord::StopRecord() -{ - int i = 0; - LOGD("stop record for %d", DVR_DEV_NO); - AM_DVR_StopRecord(DVR_DEV_NO); - - //for (i=0; i< DVR_DEV_COUNT; i++) - { - if (data_threads[DVR_DEV_NO].running) - stop_data_thread(DVR_DEV_NO); - //LOGD("Closing DMX%d...", i); - } - - -} -void CTvRecord::SetRecCurTsOrCurProgram(int sel) -{ - int i = 0; - char buf[50]; - memset(buf, 0, sizeof(buf)); - for (; i < 3; i++) { - snprintf(buf, sizeof(buf), "/sys/class/stb/dvr%d_mode", i); - if (sel) - AM_FileEcho(buf, "ts"); - else - AM_FileEcho(buf, "pid"); - } -} - diff --git a/tvapi/libtv/tv/CTvRecord.h b/tvapi/libtv/tv/CTvRecord.h deleted file mode 100644 index 29d13e7..0000000 --- a/tvapi/libtv/tv/CTvRecord.h +++ b/dev/null @@ -1,46 +0,0 @@ - - -class CTvRecord { -private : - char filename[256]; - int progid; - int vpid; - int apid; - static void dvr_init(void); - void setvpid(int vid) - { - this->vpid = vid; - } - int getvpid() - { - return vpid; - } - void setapid(int aid) - { - this->apid = aid; - } - int getapid() - { - return apid; - } - static int dvr_data_write(int fd, uint8_t *buf, int size); - static void *dvr_data_thread(void *arg); - char *GetRecordFileName(); - void SetCurRecProgramId(int id); - void start_data_thread(int dev_no); - void get_cur_program_pid(int progId); - int start_dvr(void); - void stop_data_thread(int dev_no); - - -public: - CTvRecord(); - ~CTvRecord(); - void SetRecordFileName(char *name); - void StartRecord(int id); - void StopRecord(); - void SetRecCurTsOrCurProgram(int sel); // 1: all program in the Ts; 0:current program - - - -}; diff --git a/tvapi/libtv/tv/CTvSatellite.h b/tvapi/libtv/tv/CTvSatellite.h deleted file mode 100644 index df008ad..0000000 --- a/tvapi/libtv/tv/CTvSatellite.h +++ b/dev/null @@ -1,21 +0,0 @@ -// -// -// amlogic 2013 -// -// @ Project : tv -// @ File Name : CTvSatellite.h -// @ Date : 2013-11 -// @ Author : -// -// - - -#if !defined(_CTVSATELLITE_H) -#define _CTVSATELLITE_H - - -// TV SatelliteϢ -class CTvSatellite { -}; - -#endif //_CTVSATELLITE_H diff --git a/tvapi/libtv/tv/CTvScanner.cpp b/tvapi/libtv/tv/CTvScanner.cpp deleted file mode 100644 index e029b6d..0000000 --- a/tvapi/libtv/tv/CTvScanner.cpp +++ b/dev/null @@ -1,1640 +0,0 @@ -// -// -// amlogic 2013 -// -// @ Project : tv -// @ File Name : -// @ Date : 2013-11 -// @ Author : -// -#define LOG_TAG "CTvScanner" - -#include "CTvScanner.h" -#include "CTvProgram.h" -#include "CTvRegion.h" -#include "CFrontEnd.h" - -CTvScanner *CTvScanner::m_s_Scanner = NULL; -//int CTvScanner::getStartPara() -//{ -// -//} -CTvScanner::CTvScanner() -{ - mbScanStart = false; - mpObserver = NULL; - mSource = 0xff; - mMinFreq = 1; - mMaxFreq = 100; - mCurScanStartFreq = 1; - mCurScanEndFreq = 100; -} - -CTvScanner::~CTvScanner() -{ - AM_EVT_Unsubscribe((long)mScanHandle, AM_SCAN_EVT_PROGRESS, tv_scan_evt_callback, NULL); - AM_EVT_Unsubscribe((long)mScanHandle, AM_SCAN_EVT_SIGNAL, tv_scan_evt_callback, NULL); -} - - -AM_Bool_t CTvScanner::atv_cvbs_lock_check(v4l2_std_id *colorStd) -{ - tvafe_cvbs_video_t cvbs_lock_status; - int ret, i = 0; - - *colorStd = 0; - while (i < 20) { - ret = CTvin::getInstance()->AFE_GetCVBSLockStatus(&cvbs_lock_status); - - if (cvbs_lock_status == TVAFE_CVBS_VIDEO_HV_LOCKED) - //||cvbs_lock_status == TVAFE_CVBS_VIDEO_V_LOCKED - //||cvbs_lock_status == TVAFE_CVBS_VIDEO_H_LOCKED) - { - usleep(2000 * 1000); - tvin_info_t info; - CTvin::getInstance()->VDIN_GetSignalInfo(&info); - *colorStd = CTvin::CvbsFtmToV4l2ColorStd(info.fmt); - LOGD("atv_cvbs_lock_check locked and cvbs fmt = %d std = 0x%p", info.fmt, colorStd); - return true; - } - usleep(50 * 1000); - i++; - } - return false; -} - -AM_Bool_t CTvScanner::s_atv_cvbs_lock_check(void *data) -{ - if (data == NULL) return false; - AM_SCAN_ATV_LOCK_PARA_t *pAtvPara = (AM_SCAN_ATV_LOCK_PARA_t *)data; - CTvScanner *pScan = (CTvScanner *)(pAtvPara->pData); - v4l2_std_id std; - AM_Bool_t isLock = pScan->atv_cvbs_lock_check(&std); - pAtvPara->pOutColorSTD = std; - return isLock; -} - -int CTvScanner::ATVManualScan(int min_freq, int max_freq, int std, int store_Type, int channel_num) -{ - stopScan(); - if (min_freq <= 0 || max_freq <= 0 || min_freq == max_freq) { - LOGD("atv manual scan freq error start = %d end = %d", min_freq, max_freq); - return -1; - } - int direction = (max_freq >= min_freq) ? 1 : 0; - - if (!mbScanStart) { //not start or stop - // - mCurScanStartFreq = min_freq; - mCurScanEndFreq = max_freq; - AM_SCAN_CreatePara_t para; - AM_DMX_OpenPara_t dmx_para; - AM_SCAN_Handle_t handle = 0, i; - LOGD("startScanThread"); - // Create the scan - memset(¶, 0, sizeof(para)); - para.fend_dev_id = 0;//default - para.mode = AM_SCAN_MODE_ATV_DTV;// - para.atv_para.mode = AM_SCAN_ATVMODE_MANUAL; - para.atv_para.storeMode = store_Type; - para.dtv_para.mode = AM_SCAN_DTVMODE_NONE; - - para.atv_para.am_scan_atv_cvbs_lock = s_atv_cvbs_lock_check; - - para.atv_para.fe_cnt = 3; - para.atv_para.fe_paras = static_cast<AM_FENDCTRL_DVBFrontendParameters_t *>(calloc(3, sizeof(AM_FENDCTRL_DVBFrontendParameters_t))); - if (para.atv_para.fe_paras != NULL) { - memset(para.atv_para.fe_paras, 0, 3 * sizeof(AM_FENDCTRL_DVBFrontendParameters_t)); - para.atv_para.fe_paras[0].m_type = FE_ANALOG; - para.atv_para.fe_paras[0].analog.para.frequency = min_freq; - para.atv_para.fe_paras[1].m_type = FE_ANALOG; - para.atv_para.fe_paras[1].analog.para.frequency = max_freq; - para.atv_para.fe_paras[2].m_type = FE_ANALOG; - para.atv_para.fe_paras[2].analog.para.frequency = min_freq; - } - para.atv_para.direction = direction; - para.atv_para.default_std = std; - - para.atv_para.channel_id = -1; - para.atv_para.cvbs_unlocked_step = 1000000; - para.atv_para.cvbs_locked_step = 3000000; - para.atv_para.afc_range = 2000000; - - para.dtv_para.resort_all = AM_FALSE; - para.dtv_para.sort_method = AM_SCAN_SORT_BY_FREQ_SRV_ID; - para.store_cb = am_scan_atv_store; - para.atv_para.channel_num = channel_num; - - memset(&dmx_para, 0, sizeof(dmx_para)); - AM_DMX_Open(para.dtv_para.dmx_dev_id, &dmx_para); - - if ((para.dtv_para.mode & 0x07) != AM_SCAN_DTVMODE_NONE) { - AM_FEND_SetMode(para.fend_dev_id, para.dtv_para.source); - tv_scan_reconnect_dmx_to_fend(para.dtv_para.dmx_dev_id, para.fend_dev_id); - } - - LOGD("atv manual scan mode = %d", para.dtv_para.mode); - // Start Scan - if (AM_SCAN_Create(¶, &handle) != AM_SUCCESS) { - LOGD("SCAN CREATE fail"); - handle = NULL; - } else { - mScanHandle = handle; - AM_SCAN_SetUserData(handle, (void *)this); - AM_EVT_Subscribe((long)handle, AM_SCAN_EVT_PROGRESS, tv_scan_evt_callback, NULL); - AM_EVT_Subscribe((long)handle, AM_SCAN_EVT_SIGNAL, tv_scan_evt_callback, NULL); - if (AM_SCAN_Start(handle) != AM_SUCCESS) { - AM_SCAN_Destroy(handle, AM_FALSE); - AM_EVT_Unsubscribe((long)handle, AM_SCAN_EVT_PROGRESS, tv_scan_evt_callback, NULL); - AM_EVT_Unsubscribe((long)handle, AM_SCAN_EVT_SIGNAL, tv_scan_evt_callback, NULL); - handle = NULL; - } - } - if (para.atv_para.fe_paras != NULL) - free(para.atv_para.fe_paras); - if (para.dtv_para.fe_paras != NULL) - free(para.dtv_para.fe_paras); - - if (handle == NULL) { - return -1; - } - mbScanStart = true;//start call ok - } else { - LOGD("scanning and not stop"); - } - - return 0; - -} - -void CTvScanner::am_scan_atv_store(AM_SCAN_Result_t *result) -{ - AM_SCAN_TS_t *ts; - int i, ret, db_sat_id = -1; - //AM_SCAN_RecTab_t srv_tab; - for (ts = result->tses; ts != NULL; ts = ts->p_next) { - // - m_s_Scanner->mCurEv.clear(); - m_s_Scanner->mCurEv.mType = ScannerEvent::EVENT_ATV_PROG_DATA; - m_s_Scanner->mCurEv.mVideoStd = CFrontEnd::stdAndColorToVideoEnum(ts->analog.std); - m_s_Scanner->mCurEv.mAudioStd = CFrontEnd::stdAndColorToAudioEnum(ts->analog.std); - m_s_Scanner->mCurEv.mIsAutoStd = ((ts->analog.std & V4L2_COLOR_STD_AUTO) == V4L2_COLOR_STD_AUTO) ? 1 : 0; - m_s_Scanner->mCurEv.mFrequency = ts->analog.freq; - // - m_s_Scanner->sendEvent(m_s_Scanner->mCurEv); - LOGD("ATV: > freq:%d", m_s_Scanner->mCurEv.mFrequency); - } -} - -void CTvScanner::setGlobalScanerObject(CTvScanner *s) -{ - m_s_Scanner = s; -} - -int CTvScanner::autoAtvScan(int min_freq, int max_freq, int std, int search_type) -{ - stopScan(); - if (min_freq <= 0 || max_freq <= 0 || min_freq > max_freq) - return -1; - if (!mbScanStart) { //not start or stop - mCurScanStartFreq = min_freq; - mCurScanEndFreq = max_freq; - - AM_SCAN_CreatePara_t para; - AM_DMX_OpenPara_t dmx_para; - AM_SCAN_Handle_t handle = 0, i; - // Create the scan - memset(¶, 0, sizeof(para)); - - para.fend_dev_id = 0;//default - para.mode = AM_SCAN_MODE_ATV_DTV;// - para.atv_para.mode = AM_SCAN_ATVMODE_AUTO; - if (search_type == 1) - para.atv_para.storeMode = 1; - else - para.atv_para.storeMode = 0; - para.dtv_para.mode = AM_SCAN_DTVMODE_NONE; - - para.atv_para.am_scan_atv_cvbs_lock = s_atv_cvbs_lock_check; - - para.atv_para.fe_cnt = 3; - para.atv_para.fe_paras = static_cast<AM_FENDCTRL_DVBFrontendParameters_t *>(calloc(3, sizeof(AM_FENDCTRL_DVBFrontendParameters_t))); - if (para.atv_para.fe_paras != NULL) { - memset(para.atv_para.fe_paras, 0, 3 * sizeof(AM_FENDCTRL_DVBFrontendParameters_t)); - para.atv_para.fe_paras[0].m_type = FE_ANALOG; - para.atv_para.fe_paras[0].analog.para.frequency = min_freq; - para.atv_para.fe_paras[1].m_type = FE_ANALOG; - para.atv_para.fe_paras[1].analog.para.frequency = max_freq; - para.atv_para.fe_paras[2].m_type = FE_ANALOG; - para.atv_para.fe_paras[2].analog.para.frequency = 0; - } - - para.atv_para.direction = 0; - para.atv_para.default_std = std; - - para.atv_para.channel_id = -1; - para.atv_para.afc_unlocked_step = 3000000; - para.atv_para.cvbs_unlocked_step = 1500000; - para.atv_para.cvbs_locked_step = 6000000; - para.atv_para.afc_range = 2000000; - - para.dtv_para.resort_all = AM_FALSE; - para.dtv_para.sort_method = AM_SCAN_SORT_BY_FREQ_SRV_ID; - para.store_cb = am_scan_atv_store; - - memset(&dmx_para, 0, sizeof(dmx_para)); - AM_DMX_Open(para.dtv_para.dmx_dev_id, &dmx_para); - - if ((para.dtv_para.mode & 0x07) != AM_SCAN_DTVMODE_NONE) { - AM_FEND_SetMode(para.fend_dev_id, para.dtv_para.source); - tv_scan_reconnect_dmx_to_fend(para.dtv_para.dmx_dev_id, para.fend_dev_id); - } - - // prog->dmx_id = para.dtv_para.dmx_dev_id; - // prog->fend_id = para.fend_dev_id; - // prog->mode = para.dtv_para.mode; - LOGD(" mode = %d", para.dtv_para.mode); - // Start Scan - if (AM_SCAN_Create(¶, &handle) != AM_SUCCESS) { - LOGD("SCAN CREATE fail"); - handle = NULL; - } else { - mScanHandle = handle; - AM_SCAN_SetUserData(handle, (void *)this); - //注册搜索事件 - AM_EVT_Subscribe((long)handle, AM_SCAN_EVT_PROGRESS, tv_scan_evt_callback, NULL); - //注册信号质量通知事件 - AM_EVT_Subscribe((long)handle, AM_SCAN_EVT_SIGNAL, tv_scan_evt_callback, NULL); - if (AM_SCAN_Start(handle) != AM_SUCCESS) { - AM_SCAN_Destroy(handle, AM_FALSE); - AM_EVT_Unsubscribe((long)handle, AM_SCAN_EVT_PROGRESS, tv_scan_evt_callback, NULL); - AM_EVT_Unsubscribe((long)handle, AM_SCAN_EVT_SIGNAL, tv_scan_evt_callback, NULL); - handle = NULL; - } - } - if (para.atv_para.fe_paras != NULL) - free(para.atv_para.fe_paras); - if (para.dtv_para.fe_paras != NULL) - free(para.dtv_para.fe_paras); - - if (handle == NULL) { - return -1; - } - mbScanStart = true;//start call ok - } else { - LOGD("scanning and not stop"); - } - - return 0; -} - -/* -int CTvScanner::manualAtscScan(int channelID, int attennaType, int std) -{ - stopScan(); - if (!mbScanStart) { //not start or stop - AM_SCAN_CreatePara_t para; - AM_DMX_OpenPara_t dmx_para; - AM_SCAN_Handle_t handle = 0; - int i; - // Create the scan - memset(¶, 0, sizeof(para)); - - //strcpy(para.default_text_lang,"eng");//config - //strcpy(para.text_langs, "local eng zho chi chs first");//config - para.fend_dev_id = 0;//default - para.mode = AM_SCAN_MODE_ADTV;//DTV - para.atv_para.mode = AM_SCAN_ATVMODE_NONE; - - para.atv_para.default_std = std; - - para.dtv_para.mode = AM_SCAN_DTVMODE_MANUAL;//DTV_MODE_ALLBAND - //para.dtv_para.mode |= (*env)->GetIntField(env, para, doptions);//忽略 - para.dtv_para.source = FE_ATSC;//fe_type - para.dtv_para.dmx_dev_id = 0;//default 0 - para.dtv_para.resort_all = AM_TRUE; - para.dtv_para.clear_source = AM_FALSE; - para.dtv_para.mix_tv_radio = AM_FALSE; - para.dtv_para.sort_method = AM_SCAN_SORT_BY_FREQ_SRV_ID; - para.store_cb = NULL; - //para.dtv_para.attenna = attennaType; - - para.dtv_para.standard = AM_SCAN_DTV_STD_ATSC; - - mSource = para.dtv_para.source; - - Vector<sp<CTvChannel> > vcp; - - //CTvDatabase::getChannelParaList("/data/tv_default.xml", vcp);//channel list from xml or db - getAtscChannelPara(attennaType, vcp); - LOGD("ANDESEN test attenna type is %d", attennaType); - - int size = vcp.size(); - LOGD("channel list size = %d", size); - //showboz - if (size == 0) { - CTvDatabase::GetTvDb()->importXmlToDB("/etc/tv_default.xml"); - getAtscChannelPara(attennaType, vcp); - size = vcp.size(); - } - - if (!(para.dtv_para.fe_paras = static_cast<AM_FENDCTRL_DVBFrontendParameters_t *>(calloc(1, sizeof(AM_FENDCTRL_DVBFrontendParameters_t))))) - return -1; - - //memset(pfp, 0, size * sizeof(AM_FENDCTRL_DVBFrontendParameters_t)); - - for (i = 0; i < size; i++) { - if (channelID == vcp[i]->getLogicalChannelNum()) { - para.dtv_para.fe_paras[0].m_type = 3;//MODE_ATSC - para.dtv_para.fe_paras[0].atsc.para.frequency = vcp[i]->getFrequency(); - para.dtv_para.fe_paras[0].atsc.para.u.vsb.modulation = (fe_modulation_t)(vcp[i]->getModulation()); - LOGD("andesen test atsc manual type=%d,num=%d,freq=%d,modu=%d", - para.dtv_para.fe_paras[0].m_type, para.dtv_para.fe_paras[0].m_logicalChannelNum, - para.dtv_para.fe_paras[0].atsc.para.frequency, para.dtv_para.fe_paras[0].atsc.para.u.vsb.modulation); - } - } - //allband - para.dtv_para.fe_cnt = 1; - memset(&dmx_para, 0, sizeof(dmx_para)); - AM_DMX_Open(para.dtv_para.dmx_dev_id, &dmx_para); - - if ((para.dtv_para.mode & 0x07) != AM_SCAN_DTVMODE_NONE) { - AM_FEND_SetMode(para.fend_dev_id, para.dtv_para.source); - tv_scan_reconnect_dmx_to_fend(para.dtv_para.dmx_dev_id, para.fend_dev_id); - } - - // prog->dmx_id = para.dtv_para.dmx_dev_id; - // prog->fend_id = para.fend_dev_id; - // prog->mode = para.dtv_para.mode; - // Start Scan - if (AM_SCAN_Create(¶, &handle) != AM_SUCCESS) { - LOGD("SCAN CREATE fail"); - handle = 0; - } else { - mScanHandle = handle; - AM_SCAN_SetUserData(handle, (void *)this); - //注册搜索事件 - AM_EVT_Subscribe(handle, AM_SCAN_EVT_PROGRESS, tv_scan_evt_callback, NULL); - //注册信号质量通知事件 - AM_EVT_Subscribe(handle, AM_SCAN_EVT_SIGNAL, tv_scan_evt_callback, NULL); - if (AM_SCAN_Start(handle) != AM_SUCCESS) { - AM_SCAN_Destroy(handle, AM_FALSE); - AM_EVT_Unsubscribe(handle, AM_SCAN_EVT_PROGRESS, tv_scan_evt_callback, NULL); - AM_EVT_Unsubscribe(handle, AM_SCAN_EVT_SIGNAL, tv_scan_evt_callback, NULL); - handle = 0; - } - } - if (para.atv_para.fe_paras != NULL) - free(para.atv_para.fe_paras); - if (para.dtv_para.fe_paras != NULL) - free(para.dtv_para.fe_paras); - if (handle == 0) { - return -1; - } - mbScanStart = true;//start call ok - } else { - LOGD("scanning and not stop"); - } - return 0; -} -*/ - -#define dvb_fend_para(_p) ((struct dvb_frontend_parameters*)(&_p)) -#define IS_DVBT2_TS(_para) (_para.m_type == FE_OFDM && _para.terrestrial.para.u.ofdm.ofdm_mode == OFDM_DVBT2) -#define IS_ISDBT_TS(_para) (_para.m_type == FE_ISDBT) - -dvbpsi_pat_t *CTvScanner::get_valid_pats(AM_SCAN_TS_t *ts) -{ - dvbpsi_pat_t *valid_pat = NULL; - if (!IS_DVBT2_TS(ts->digital.fend_para)) { - valid_pat = ts->digital.pats; - } else if (IS_ISDBT_TS(ts->digital.fend_para)) { - /* process for isdbt one-seg inserted PAT, which ts_id is 0xffff */ - valid_pat = ts->digital.pats; - while (valid_pat != NULL && valid_pat->i_ts_id == 0xffff) { - valid_pat = valid_pat->p_next; - } - - if (valid_pat == NULL && ts->digital.pats != NULL) { - valid_pat = ts->digital.pats; - - if (ts->digital.sdts != NULL) - valid_pat->i_ts_id = ts->digital.sdts->i_ts_id; - } - } else { - int plp; - - for (plp = 0; plp < ts->digital.dvbt2_data_plp_num; plp++) { - if (ts->digital.dvbt2_data_plps[plp].pats != NULL) { - valid_pat = ts->digital.dvbt2_data_plps[plp].pats; - break; - } - } - } - - return valid_pat; -} - -void CTvScanner::scan_process_ts_info(AM_SCAN_Result_t *result __unused, AM_SCAN_TS_t *ts, ScannerEvent *evt) -{ - dvbpsi_nit_t *nit; - dvbpsi_descriptor_t *descr; - - evt->mONetId = -1; - evt->mTsId = -1; - - if (ts->digital.sdts) - evt->mONetId = ts->digital.sdts->i_network_id; - else if (IS_DVBT2_TS(ts->digital.fend_para) && ts->digital.dvbt2_data_plp_num > 0 && ts->digital.dvbt2_data_plps[0].sdts) - evt->mONetId = ts->digital.dvbt2_data_plps[0].sdts->i_network_id; - evt->mTsId = get_valid_pats(ts)->i_ts_id; - - evt->mFrequency = (int)dvb_fend_para(ts->digital.fend_para)->frequency; - evt->mMode = ts->digital.fend_para.m_type; - if (IS_DVBT2_TS(ts->digital.fend_para)) - evt->mOfdm_mode = (int)dvb_fend_para(ts->digital.fend_para)->u.ofdm.ofdm_mode; - else if ((ts->digital.fend_para.m_type == FE_DTMB) || (ts->digital.fend_para.m_type == FE_OFDM)) - evt->mBandwidth = (int)dvb_fend_para(ts->digital.fend_para)->u.ofdm.bandwidth; - else if (ts->digital.fend_para.m_type == FE_QAM) { - evt->mSymbolRate = (int)dvb_fend_para(ts->digital.fend_para)->u.qam.symbol_rate; - evt->mModulation = (int)dvb_fend_para(ts->digital.fend_para)->u.qam.modulation; - } -} -void CTvScanner::scan_init_service_info(SCAN_ServiceInfo_t *srv_info) -{ - memset(srv_info, 0, sizeof(SCAN_ServiceInfo_t)); - srv_info->vid = 0x1fff; - srv_info->vfmt = -1; - srv_info->free_ca = 1; - srv_info->srv_id = 0xffff; - srv_info->srv_dbid = -1; - srv_info->satpara_dbid = -1; - srv_info->pmt_pid = 0x1fff; - srv_info->plp_id = -1; - srv_info->sdt_version = 0xff; -} -int CTvScanner::get_pmt_pid(dvbpsi_pat_t *pats, int program_number) -{ - dvbpsi_pat_t *pat; - dvbpsi_pat_program_t *prog; - - AM_SI_LIST_BEGIN(pats, pat) - AM_SI_LIST_BEGIN(pat->p_first_program, prog) - if (prog->i_number == program_number) - return prog->i_pid; - AM_SI_LIST_END() - AM_SI_LIST_END() - - return 0x1fff; -} - -void CTvScanner::scan_extract_ca_scrambled_flag(dvbpsi_descriptor_t *p_first_descriptor, int *flag) -{ - dvbpsi_descriptor_t *descr; - - AM_SI_LIST_BEGIN(p_first_descriptor, descr) - if (descr->i_tag == AM_SI_DESCR_CA && ! *flag) { - LOGD( "Found CA descr, set scrambled flag to 1"); - *flag = 1; - break; - } - AM_SI_LIST_END() -} - -void CTvScanner::scan_extract_srv_info_from_sdt(AM_SCAN_Result_t *result, dvbpsi_sdt_t *sdts, SCAN_ServiceInfo_t *srv_info) -{ - dvbpsi_sdt_service_t *srv; - dvbpsi_sdt_t *sdt; - dvbpsi_descriptor_t *descr; - const uint8_t split = 0x80; - const int name_size = (int)sizeof(srv_info->name); - int curr_name_len = 0, tmp_len; - char name[AM_DB_MAX_SRV_NAME_LEN + 1]; - - UNUSED(result); - -#define COPY_NAME(_s, _slen)\ - AM_MACRO_BEGIN\ - int copy_len = ((curr_name_len+_slen)>=name_size) ? (name_size-curr_name_len) : _slen;\ - if (copy_len > 0) {\ - memcpy(srv_info->name+curr_name_len, _s, copy_len);\ - curr_name_len += copy_len;\ - }\ - AM_MACRO_END - - - AM_SI_LIST_BEGIN(sdts, sdt) - AM_SI_LIST_BEGIN(sdt->p_first_service, srv) - /*从SDT表中查找该service并获取信息*/ - if (srv->i_service_id == srv_info->srv_id) { - LOGD("SDT for service %d found!", srv_info->srv_id); - srv_info->eit_sche = (uint8_t)srv->b_eit_schedule; - srv_info->eit_pf = (uint8_t)srv->b_eit_present; - srv_info->rs = srv->i_running_status; - srv_info->free_ca = (uint8_t)srv->b_free_ca; - srv_info->sdt_version = sdt->i_version; - - AM_SI_LIST_BEGIN(srv->p_first_descriptor, descr) - if (descr->p_decoded && descr->i_tag == AM_SI_DESCR_SERVICE) { - dvbpsi_service_dr_t *psd = (dvbpsi_service_dr_t *)descr->p_decoded; - if (psd->i_service_name_length > 0) { - name[0] = 0; - AM_SI_ConvertDVBTextCode((char *)psd->i_service_name, psd->i_service_name_length, \ - name, AM_DB_MAX_SRV_NAME_LEN); - name[AM_DB_MAX_SRV_NAME_LEN] = 0; - LOGD("found name [%s]", name); - - /*3bytes language code, using xxx to simulate*/ - COPY_NAME("xxx", 3); - /*following by name text*/ - tmp_len = strlen(name); - COPY_NAME(name, tmp_len); - } - /*业务类型*/ - srv_info->srv_type = psd->i_service_type; - /*service type 0x16 and 0x19 is user defined, as digital television service*/ - /*service type 0xc0 is type of partial reception service in ISDBT*/ - if ((srv_info->srv_type == 0x16) || (srv_info->srv_type == 0x19) || (srv_info->srv_type == 0xc0)) { - srv_info->srv_type = 0x1; - } - break; - } - AM_SI_LIST_END() - - /* store multilingual service name */ - AM_SI_LIST_BEGIN(srv->p_first_descriptor, descr) - if (descr->p_decoded && descr->i_tag == AM_SI_DESCR_MULTI_SERVICE_NAME) { - int i; - dvbpsi_multi_service_name_dr_t *pmsnd = (dvbpsi_multi_service_name_dr_t *)descr->p_decoded; - - for (i = 0; i < pmsnd->i_name_count; i++) { - name[0] = 0; - AM_SI_ConvertDVBTextCode((char *)pmsnd->p_service_name[i].i_service_name, - pmsnd->p_service_name[i].i_service_name_length, - name, AM_DB_MAX_SRV_NAME_LEN); - name[AM_DB_MAX_SRV_NAME_LEN] = 0; - LOGD("found name [%s]", name); - - if (curr_name_len > 0) { - /*extra split mark*/ - COPY_NAME(&split, 1); - } - /*3bytes language code*/ - COPY_NAME(pmsnd->p_service_name[i].i_iso_639_code, 3); - /*following by name text*/ - tmp_len = strlen(name); - COPY_NAME(name, tmp_len); - } - } - AM_SI_LIST_END() - - /* set the ending null byte */ - if (curr_name_len >= name_size) - srv_info->name[name_size - 1] = 0; - else - srv_info->name[curr_name_len] = 0; - - break; - } - AM_SI_LIST_END() - AM_SI_LIST_END() -} - -void CTvScanner::scan_update_service_info(AM_SCAN_Result_t *result, SCAN_ServiceInfo_t *srv_info) -{ -#define str(i) (char*)(strings + i) - - static char strings[14][256]; - - if (srv_info->src != FE_ANALOG) { - int standard = result->start_para->dtv_para.standard; - int mode = result->start_para->dtv_para.mode; - - /* Transform service types for different dtv standards */ - if (standard != AM_SCAN_DTV_STD_ATSC) { - if (srv_info->srv_type == 0x1) - srv_info->srv_type = AM_SCAN_SRV_DTV; - else if (srv_info->srv_type == 0x2) - srv_info->srv_type = AM_SCAN_SRV_DRADIO; - } else { - if (srv_info->srv_type == 0x2) - srv_info->srv_type = AM_SCAN_SRV_DTV; - else if (srv_info->srv_type == 0x3) - srv_info->srv_type = AM_SCAN_SRV_DRADIO; - } - - /* if video valid, set this program to tv type, - * if audio valid, but video not found, set it to radio type, - * if both invalid, but service_type found in SDT/VCT, set to unknown service, - * this mechanism is OPTIONAL - */ - if (srv_info->vid < 0x1fff) { - srv_info->srv_type = AM_SCAN_SRV_DTV; - } else if (srv_info->aud_info.audio_count > 0) { - srv_info->srv_type = AM_SCAN_SRV_DRADIO; - } else if (srv_info->srv_type == AM_SCAN_SRV_DTV || - srv_info->srv_type == AM_SCAN_SRV_DRADIO) { - srv_info->srv_type = AM_SCAN_SRV_UNKNOWN; - } - /* Skip program for FTA mode */ - if (srv_info->scrambled_flag && (mode & AM_SCAN_DTVMODE_FTA)) { - LOGD( "Skip program '%s' for FTA mode", srv_info->name); - return; - } - - /* Skip program for service_type mode */ - if (srv_info->srv_type == AM_SCAN_SRV_DTV && (mode & AM_SCAN_DTVMODE_NOTV)) { - LOGD( "Skip program '%s' for NO-TV mode", srv_info->name); - return; - } - if (srv_info->srv_type == AM_SCAN_SRV_DRADIO && (mode & AM_SCAN_DTVMODE_NORADIO)) { - LOGD( "Skip program '%s' for NO-RADIO mode", srv_info->name); - return; - } - - /* Set default name to tv/radio program if no name specified */ - if (!strcmp(srv_info->name, "") && - (srv_info->srv_type == AM_SCAN_SRV_DTV || - srv_info->srv_type == AM_SCAN_SRV_DRADIO)) { - strcpy(srv_info->name, "xxxNo Name"); - } - } -} - -void CTvScanner::scan_store_dvb_ts_evt_service(SCAN_ServiceInfo_t *srv) -{ - LOGD("scan_store_dvb_ts_evt_service freq:%d, sid:%d", m_s_Scanner->mCurEv.mFrequency, srv->srv_id); - m_s_Scanner->mCurEv.clear(); - m_s_Scanner->mCurEv.mServiceId = srv->srv_id; - strncpy(m_s_Scanner->mCurEv.mProgramName, srv->name, 1024); - m_s_Scanner->mCurEv.mprogramType = srv->srv_type; - m_s_Scanner->mCurEv.mVid = srv->vid; - m_s_Scanner->mCurEv.mVfmt = srv->vfmt; - m_s_Scanner->mCurEv.mAcnt = srv->aud_info.audio_count; - for (int i = 0; i < srv->aud_info.audio_count; i++) { - m_s_Scanner->mCurEv.mAid[i] = srv->aud_info.audios[i].pid; - m_s_Scanner->mCurEv.mAfmt[i] = srv->aud_info.audios[i].fmt; - strncpy(m_s_Scanner->mCurEv.mAlang[i], srv->aud_info.audios[i].lang, 10); - m_s_Scanner->mCurEv.mAtype[i] = srv->aud_info.audios[i].audio_type; - } - m_s_Scanner->mCurEv.mPcr = srv->pcr_pid; - m_s_Scanner->mCurEv.mScnt = srv->sub_info.subtitle_count; - for (int i = 0; i < srv->sub_info.subtitle_count; i++) { - m_s_Scanner->mCurEv.mStype[i] = TYPE_DVB_SUBTITLE; - m_s_Scanner->mCurEv.mSid[i] = srv->sub_info.subtitles[i].pid; - m_s_Scanner->mCurEv.mSstype[i] = srv->sub_info.subtitles[i].type; - m_s_Scanner->mCurEv.mSid1[i] = srv->sub_info.subtitles[i].comp_page_id; - m_s_Scanner->mCurEv.mSid2[i] = srv->sub_info.subtitles[i].anci_page_id; - strncpy(m_s_Scanner->mCurEv.mSlang[i], srv->sub_info.subtitles[i].lang, 10); - } - int scnt = m_s_Scanner->mCurEv.mScnt; - for (int i = 0; i < srv->ttx_info.teletext_count; i++) { - if (srv->ttx_info.teletexts[i].type == 0x2 || - srv->ttx_info.teletexts[i].type == 0x5) { - if (scnt >= (int)(sizeof(m_s_Scanner->mCurEv.mStype) / sizeof(int))) - break; - m_s_Scanner->mCurEv.mStype[scnt] = TYPE_DTV_TELETEXT; - m_s_Scanner->mCurEv.mSid[scnt] = srv->ttx_info.teletexts[i].pid; - m_s_Scanner->mCurEv.mSstype[scnt] = srv->ttx_info.teletexts[i].type; - m_s_Scanner->mCurEv.mSid1[scnt] = srv->ttx_info.teletexts[i].magazine_no; - m_s_Scanner->mCurEv.mSid2[scnt] = srv->ttx_info.teletexts[i].page_no; - strncpy(m_s_Scanner->mCurEv.mSlang[scnt], srv->ttx_info.teletexts[i].lang, 10); - scnt++; - } - } - m_s_Scanner->mCurEv.mScnt = scnt; - - m_s_Scanner->mCurEv.mMSG[0] = '\0'; - - m_s_Scanner->mCurEv.mType = ScannerEvent::EVENT_DTV_PROG_DATA; - m_s_Scanner->sendEvent(m_s_Scanner->mCurEv); -} - -void CTvScanner::scan_store_dvb_ts(AM_SCAN_Result_t *result, AM_SCAN_TS_t *ts) -{ - dvbpsi_pmt_t *pmt; - dvbpsi_pmt_es_t *es; - dvbpsi_descriptor_t *descr; - int src = result->start_para->dtv_para.source; - int mode = result->start_para->dtv_para.mode; - int net_dbid = -1, dbid = -1, orig_net_id = -1, satpara_dbid = -1; - char selbuf[256]; - char insbuf[400]; - AM_Bool_t store = AM_TRUE; - dvbpsi_pat_t *valid_pat = NULL; - uint8_t plp_id; - SCAN_ServiceInfo_t srv_info; - - valid_pat = get_valid_pats(ts); - if (valid_pat == NULL) { - LOGD("No PAT found in ts, will not store to dbase"); - return; - } - - LOGD("@@ TS: src %d @@", src); - - scan_process_ts_info(result, ts, &m_s_Scanner->mCurEv); - - if (ts->digital.pmts || (IS_DVBT2_TS(ts->digital.fend_para) && ts->digital.dvbt2_data_plp_num > 0)) { - int loop_count, lc; - dvbpsi_sdt_t *sdt_list; - dvbpsi_pmt_t *pmt_list; - dvbpsi_pat_t *pat_list; - - /* For DVB-T2, search for each PLP, else search in current TS*/ - loop_count = IS_DVBT2_TS(ts->digital.fend_para) ? ts->digital.dvbt2_data_plp_num : 1; - LOGD("plp num %d", loop_count); - - for (lc = 0; lc < loop_count; lc++) { - pat_list = IS_DVBT2_TS(ts->digital.fend_para) ? ts->digital.dvbt2_data_plps[lc].pats : ts->digital.pats; - pmt_list = IS_DVBT2_TS(ts->digital.fend_para) ? ts->digital.dvbt2_data_plps[lc].pmts : ts->digital.pmts; - sdt_list = IS_DVBT2_TS(ts->digital.fend_para) ? ts->digital.dvbt2_data_plps[lc].sdts : ts->digital.sdts; - plp_id = IS_DVBT2_TS(ts->digital.fend_para) ? ts->digital.dvbt2_data_plps[lc].id : -1; - LOGD("plp_id %d", plp_id); - - AM_SI_LIST_BEGIN(pmt_list, pmt) { - scan_init_service_info(&srv_info); - srv_info.satpara_dbid = satpara_dbid; - srv_info.srv_id = pmt->i_program_number; - srv_info.src = src; - srv_info.pmt_pid = get_pmt_pid(pat_list, pmt->i_program_number); - srv_info.pcr_pid = pmt->i_pcr_pid; - srv_info.plp_id = plp_id; - - /* looking for CA descr */ - if (! srv_info.scrambled_flag) { - scan_extract_ca_scrambled_flag(pmt->p_first_descriptor, &srv_info.scrambled_flag); - } - - AM_SI_LIST_BEGIN(pmt->p_first_es, es) { - AM_SI_ExtractAVFromES(es, &srv_info.vid, &srv_info.vfmt, &srv_info.aud_info); - - if (store) { - AM_SI_ExtractDVBSubtitleFromES(es, &srv_info.sub_info); - AM_SI_ExtractDVBTeletextFromES(es, &srv_info.ttx_info); - } - - if (! srv_info.scrambled_flag) - scan_extract_ca_scrambled_flag(es->p_first_descriptor, &srv_info.scrambled_flag); - } - AM_SI_LIST_END() - - scan_extract_srv_info_from_sdt(result, sdt_list, &srv_info); - - /*Store this service*/ - scan_update_service_info(result, &srv_info); - - scan_store_dvb_ts_evt_service(&srv_info); - - } - AM_SI_LIST_END() - - /* All programs in PMTs added, now trying the programs in SDT but NOT in PMT */ - dvbpsi_sdt_service_t *srv; - dvbpsi_sdt_t *sdt; - - AM_SI_LIST_BEGIN(ts->digital.sdts, sdt) { - AM_SI_LIST_BEGIN(sdt->p_first_service, srv) { - AM_Bool_t found_in_pmt = AM_FALSE; - - /* Is already added in PMT? */ - AM_SI_LIST_BEGIN(ts->digital.pmts, pmt) - if (srv->i_service_id == pmt->i_program_number) { - found_in_pmt = AM_TRUE; - break; - } - AM_SI_LIST_END() - - if (found_in_pmt) - continue; - - scan_init_service_info(&srv_info); - srv_info.satpara_dbid = satpara_dbid; - srv_info.srv_id = srv->i_service_id; - srv_info.src = src; - - scan_extract_srv_info_from_sdt(result, sdt_list, &srv_info); - - scan_update_service_info(result, &srv_info); - - /*as no pmt for this srv, set type to data for invisible*/ - srv_info.srv_type = 0; - - scan_store_dvb_ts_evt_service(&srv_info); - - } - AM_SI_LIST_END() - } - AM_SI_LIST_END() - - } - } -} - -void CTvScanner::dtv_scan_store(AM_SCAN_Result_t *result) -{ - AM_SCAN_TS_t *ts; - - LOGD("Storing tses ..."); - - AM_SI_LIST_BEGIN(result->tses, ts) { - scan_store_dvb_ts(result, ts); - } - AM_SI_LIST_END() -} - -int CTvScanner::manualDtmbScan(int beginFreq, int endFreq, int modulation) -{ - stopScan(); - - if (!mbScanStart) { //not start or stop - AM_SCAN_CreatePara_t para; - AM_DMX_OpenPara_t dmx_para; - AM_SCAN_Handle_t handle = 0; - int i; - // Create the scan - memset(¶, 0, sizeof(para)); - - para.fend_dev_id = 0;//default - para.mode = AM_SCAN_MODE_DTV_ATV;//DTV - para.atv_para.mode = AM_SCAN_ATVMODE_NONE; - para.dtv_para.mode = AM_SCAN_DTVMODE_MANUAL; - para.dtv_para.source = FE_DTMB;//fe_type - para.dtv_para.dmx_dev_id = 0;//default 0 - - Vector<sp<CTvChannel> > vcp; - CTvRegion::getChannelListByNameAndFreqRange((char *)"CHINA,Default DTMB ALL", beginFreq, endFreq, vcp); - int size = vcp.size(); - - //@author:hao.fu - if (size == 0) { - return -1; - } - - if (!(para.dtv_para.fe_paras = static_cast<AM_FENDCTRL_DVBFrontendParameters_t *>(calloc(size, sizeof(AM_FENDCTRL_DVBFrontendParameters_t))))) - return -1; - - for (i = 0; i < size; i++) { - para.dtv_para.fe_paras[i].m_type = 5;//MODE_DTMB - para.dtv_para.fe_paras[i].dtmb.para.frequency = vcp[i]->getFrequency(); - para.dtv_para.fe_paras[i].dtmb.para.inversion = INVERSION_OFF; - para.dtv_para.fe_paras[i].dtmb.para.u.ofdm.bandwidth = (fe_bandwidth_t)(vcp[i]->getBandwidth()); - if (modulation == -1) - para.dtv_para.fe_paras[i].cable.para.u.qam.modulation = (fe_modulation_t)(vcp[i]->getModulation()); - else - para.dtv_para.fe_paras[i].cable.para.u.qam.modulation = (fe_modulation_t)modulation; - } - - para.dtv_para.fe_cnt = size; - para.dtv_para.resort_all = AM_FALSE; - para.dtv_para.sort_method = AM_SCAN_SORT_BY_FREQ_SRV_ID; - para.store_cb = dtv_scan_store; - - - memset(&dmx_para, 0, sizeof(dmx_para)); - AM_DMX_Open(para.dtv_para.dmx_dev_id, &dmx_para); - - if ((para.dtv_para.mode & 0x07) != AM_SCAN_DTVMODE_NONE) { - AM_FEND_SetMode(para.fend_dev_id, para.dtv_para.source); - tv_scan_reconnect_dmx_to_fend(para.dtv_para.dmx_dev_id, para.fend_dev_id); - } - - // Start Scan - if (AM_SCAN_Create(¶, &handle) != AM_SUCCESS) { - LOGD("SCAN CREATE fail"); - handle = NULL; - } else { - mScanHandle = handle; - AM_SCAN_SetUserData(handle, (void *)this); - AM_EVT_Subscribe((long)handle, AM_SCAN_EVT_PROGRESS, tv_scan_evt_callback, NULL); - AM_EVT_Subscribe((long)handle, AM_SCAN_EVT_SIGNAL, tv_scan_evt_callback, NULL); - if (AM_SCAN_Start(handle) != AM_SUCCESS) { - AM_SCAN_Destroy(handle, AM_FALSE); - AM_EVT_Unsubscribe((long)handle, AM_SCAN_EVT_PROGRESS, tv_scan_evt_callback, NULL); - AM_EVT_Unsubscribe((long)handle, AM_SCAN_EVT_SIGNAL, tv_scan_evt_callback, NULL); - handle = NULL; - } - } - if (para.atv_para.fe_paras != NULL) - free(para.atv_para.fe_paras); - if (para.dtv_para.fe_paras != NULL) - free(para.dtv_para.fe_paras); - - if (handle == NULL) { - return -1; - } - mbScanStart = true;//start call ok - } else { - LOGD("scanning and not stop"); - } - return 0; -} - - -/*int CTvScanner::autoTvScan() -{ - stopScan(); - - if(!mbScanStart) { //not start or stop - AM_SCAN_CreatePara_t para; - AM_DMX_OpenPara_t dmx_para; - int handle = 0,i; - // Create the scan - memset(¶, 0, sizeof(para)); - - //strcpy(para.default_text_lang,"eng");//config - //strcpy(para.text_langs, "eng zho chi");//config - para.fend_dev_id = 0;//default - para.mode = AM_SCAN_MODE_DTV_ATV;//DTV - para.atv_para.mode = AM_SCAN_ATVMODE_NONE; - para.dtv_para.mode = AM_SCAN_DTVMODE_ALLBAND;//DTV_MODE_ALLBAND - //para.dtv_para.mode |= (*env)->GetIntField(env, para, doptions);//忽略 - para.dtv_para.source = 1;//QAM - para.dtv_para.dmx_dev_id = 0;//default 0 - Vector<sp<CTvChannel> > vcp; - //CTvDatabase::getChannelParaList("/data/tv_default.xml", vcp);//channel list from xml or db - CTvRegion::getChannelListByName("China,DVB-C allband", vcp); - - int size = vcp.size(); - LOGD("channel list size = %d", size); - if(!(para.dtv_para.fe_paras = static_cast<AM_FENDCTRL_DVBFrontendParameters_t*>(calloc(size, sizeof(AM_FENDCTRL_DVBFrontendParameters_t))))) - return -1; - - //memset(pfp, 0, size * sizeof(AM_FENDCTRL_DVBFrontendParameters_t)); - - for (i = 0; i < size; i++) { - para.dtv_para.fe_paras[i].m_type = FE_QAM; - para.dtv_para.fe_paras[i].cable.para.frequency = vcp[i]->getFrequency(); - para.dtv_para.fe_paras[i].cable.para.inversion = INVERSION_OFF; - para.dtv_para.fe_paras[i].cable.para.u.qam.symbol_rate = vcp[i]->getSymbolRate(); - para.dtv_para.fe_paras[i].cable.para.u.qam.modulation = (fe_modulation_t)(vcp[i]->getModulation()); - } - //allband - para.dtv_para.fe_cnt = size; - - para.dtv_para.resort_all = AM_FALSE; - para.dtv_para.sort_method = AM_SCAN_SORT_BY_FREQ_SRV_ID; - para.store_cb = NULL; - memset(&dmx_para, 0, sizeof(dmx_para)); - AM_DMX_Open(para.dtv_para.dmx_dev_id, &dmx_para); - - if ((para.dtv_para.mode&0x07) != AM_SCAN_DTVMODE_NONE) { - AM_FEND_SetMode(para.fend_dev_id, para.dtv_para.source); - tv_scan_reconnect_dmx_to_fend(para.dtv_para.dmx_dev_id, para.fend_dev_id); - } - - // prog->dmx_id = para.dtv_para.dmx_dev_id; - // prog->fend_id = para.fend_dev_id; - // prog->mode = para.dtv_para.mode; - // Start Scan - if (AM_SCAN_Create(¶, &handle) != AM_SUCCESS) { - LOGD("SCAN CREATE fail"); - handle = 0; - } else { - LOGD("SCAN CREATE handle = %d", handle); - mScanHandle = handle; - AM_SCAN_SetUserData(handle, (void*)this); - //注册搜索事件 - AM_EVT_Subscribe(handle, AM_SCAN_EVT_PROGRESS, tv_scan_evt_callback, NULL); - //注册信号质量通知事件 - //AM_EVT_Subscribe(handle, AM_SCAN_EVT_SIGNAL, tv_scan_evt_callback, NULL); - if (AM_SCAN_Start(handle) != AM_SUCCESS) { - AM_SCAN_Destroy(handle, AM_FALSE); - AM_EVT_Unsubscribe(handle, AM_SCAN_EVT_PROGRESS, tv_scan_evt_callback, NULL); - // AM_EVT_Unsubscribe(handle, AM_SCAN_EVT_SIGNAL, tv_scan_evt_callback, NULL); - handle = 0; - } - } - if (para.atv_para.fe_paras != NULL) - free(para.atv_para.fe_paras); - if (para.dtv_para.fe_paras != NULL) - free(para.dtv_para.fe_paras); - - if (handle == 0) { - return -1; - } - mbScanStart = true;//start call ok - } else { - LOGD("scanning and not stop"); - } - return 0; -}*/ -//only test for dtv allbland auto -/*int CTvScanner::startScan() -{ - stopScan(); - - if(!mbScanStart) { //not start or stop - AM_SCAN_CreatePara_t para; - AM_DMX_OpenPara_t dmx_para; - int handle = 0,i; - // Create the scan - memset(¶, 0, sizeof(para)); - - //strcpy(para.default_text_lang,"eng");//config - //strcpy(para.text_langs, "eng zho chi");//config - para.fend_dev_id = 0;//default - para.mode = AM_SCAN_MODE_DTV_ATV;//DTV - para.atv_para.mode = AM_SCAN_ATVMODE_NONE; - para.dtv_para.mode = 3;//DTV_MODE_ALLBAND - //para.dtv_para.mode |= (*env)->GetIntField(env, para, doptions);//忽略 - para.dtv_para.source = 1;//QAM - para.dtv_para.dmx_dev_id = 0;//default 0 - Vector<sp<CTvChannel> > vcp; - //CTvDatabase::getChannelParaList("/data/tv_default.xml", vcp);//channel list from xml or db - CTvRegion::getChannelListByName("China,DVB-C allband", vcp); - - int size = vcp.size(); - LOGD("channel list size = %d", size); - if(!(para.dtv_para.fe_paras = static_cast<AM_FENDCTRL_DVBFrontendParameters_t*>(calloc(size, sizeof(AM_FENDCTRL_DVBFrontendParameters_t))))) - return -1; - - //memset(pfp, 0, size * sizeof(AM_FENDCTRL_DVBFrontendParameters_t)); - - for (i = 0; i < size; i++) { - para.dtv_para.fe_paras[i].m_type = FE_QAM; - para.dtv_para.fe_paras[i].cable.para.frequency = vcp[i]->getFrequency(); - para.dtv_para.fe_paras[i].cable.para.inversion = INVERSION_OFF; - para.dtv_para.fe_paras[i].cable.para.u.qam.symbol_rate = vcp[i]->getSymbolRate(); - para.dtv_para.fe_paras[i].cable.para.u.qam.modulation = (fe_modulation_t)(vcp[i]->getModulation()); - } - //allband - para.dtv_para.fe_cnt = size; - - para.dtv_para.resort_all = AM_FALSE; - para.dtv_para.sort_method = AM_SCAN_SORT_BY_FREQ_SRV_ID; - para.store_cb = NULL; - - memset(&dmx_para, 0, sizeof(dmx_para)); - AM_DMX_Open(para.dtv_para.dmx_dev_id, &dmx_para); - - if ((para.dtv_para.mode&0x07) != AM_SCAN_DTVMODE_NONE) { - AM_FEND_SetMode(para.fend_dev_id, para.dtv_para.source); - tv_scan_reconnect_dmx_to_fend(para.dtv_para.dmx_dev_id, para.fend_dev_id); - } - - // prog->dmx_id = para.dtv_para.dmx_dev_id; - // prog->fend_id = para.fend_dev_id; - // prog->mode = para.dtv_para.mode; - // Start Scan - if (AM_SCAN_Create(¶, &handle) != AM_SUCCESS) { - LOGD("SCAN CREATE fail"); - handle = 0; - } else { - mScanHandle = handle; - AM_SCAN_SetUserData(handle, (void*)this); - //注册搜索事件 - AM_EVT_Subscribe(handle, AM_SCAN_EVT_PROGRESS, tv_scan_evt_callback, NULL); - //注册信号质量通知事件 - //AM_EVT_Subscribe(handle, AM_SCAN_EVT_SIGNAL, tv_scan_evt_callback, NULL); - if (AM_SCAN_Start(handle) != AM_SUCCESS) { - AM_SCAN_Destroy(handle, AM_FALSE); - AM_EVT_Unsubscribe(handle, AM_SCAN_EVT_PROGRESS, tv_scan_evt_callback, NULL); - // AM_EVT_Unsubscribe(handle, AM_SCAN_EVT_SIGNAL, tv_scan_evt_callback, NULL); - handle = 0; - } - } - if (para.atv_para.fe_paras != NULL) - free(para.atv_para.fe_paras); - if (para.dtv_para.fe_paras != NULL) - free(para.dtv_para.fe_paras); - - if (handle == 0) { - return -1; - } - mbScanStart = true;//start call ok - } else { - LOGD("scanning and not stop"); - } - return 0; -}*/ - - -//only test for dtv allbland auto -int CTvScanner::autoDtmbScan() -{ - stopScan(); - - if (!mbScanStart) { //not start or stop - AM_SCAN_CreatePara_t para; - AM_DMX_OpenPara_t dmx_para; - AM_SCAN_Handle_t handle = 0; - // Create the scan - memset(¶, 0, sizeof(para)); - - //strcpy(para.default_text_lang,"eng");//config - //strcpy(para.text_langs, "local eng zho chi chs first");//config - para.fend_dev_id = 0;//default - para.mode = AM_SCAN_MODE_DTV_ATV;//DTV - para.atv_para.mode = AM_SCAN_ATVMODE_NONE; - para.dtv_para.mode = AM_SCAN_DTVMODE_ALLBAND;//DTV_MODE_ALLBAND - //para.dtv_para.mode |= (*env)->GetIntField(env, para, doptions);//忽略 - para.dtv_para.source = FE_DTMB;//fe_type - para.dtv_para.dmx_dev_id = 0;//default 0 - Vector<sp<CTvChannel> > vcp; - //CTvDatabase::getChannelParaList("/data/tv_default.xml", vcp);//channel list from xml or db - CTvRegion::getChannelListByName((char *)"CHINA,Default DTMB ALL", vcp); - - int size = vcp.size(); - LOGD("channel list size = %d", size); - //showboz - if (size == 0) { - CTvDatabase::GetTvDb()->importXmlToDB("/etc/tv_default.xml"); - CTvRegion::getChannelListByName((char *)"CHINA,Default DTMB ALL", vcp); - size = vcp.size(); - } - - if (!(para.dtv_para.fe_paras = static_cast<AM_FENDCTRL_DVBFrontendParameters_t *>(calloc(size, sizeof(AM_FENDCTRL_DVBFrontendParameters_t))))) - return -1; - - //memset(pfp, 0, size * sizeof(AM_FENDCTRL_DVBFrontendParameters_t)); - - for (int i = 0; i < size; i++) { - para.dtv_para.fe_paras[i].m_type = 5;//MODE_DTMB - para.dtv_para.fe_paras[i].dtmb.para.frequency = vcp[i]->getFrequency(); - para.dtv_para.fe_paras[i].dtmb.para.inversion = INVERSION_OFF; - para.dtv_para.fe_paras[i].dtmb.para.u.ofdm.bandwidth = (fe_bandwidth_t)(vcp[i]->getBandwidth()); - } - //allband - para.dtv_para.fe_cnt = size; - - para.dtv_para.resort_all = AM_FALSE; - para.dtv_para.sort_method = AM_SCAN_SORT_BY_FREQ_SRV_ID; - para.store_cb = dtv_scan_store; - - memset(&dmx_para, 0, sizeof(dmx_para)); - AM_DMX_Open(para.dtv_para.dmx_dev_id, &dmx_para); - - if ((para.dtv_para.mode & 0x07) != AM_SCAN_DTVMODE_NONE) { - AM_FEND_SetMode(para.fend_dev_id, para.dtv_para.source); - tv_scan_reconnect_dmx_to_fend(para.dtv_para.dmx_dev_id, para.fend_dev_id); - } - - // prog->dmx_id = para.dtv_para.dmx_dev_id; - // prog->fend_id = para.fend_dev_id; - // prog->mode = para.dtv_para.mode; - // Start Scan - if (AM_SCAN_Create(¶, &handle) != AM_SUCCESS) { - LOGD("SCAN CREATE fail"); - handle = NULL; - } else { - mScanHandle = handle; - AM_SCAN_SetUserData(handle, (void *)this); - //注册搜索事件 - AM_EVT_Subscribe((long)handle, AM_SCAN_EVT_PROGRESS, tv_scan_evt_callback, NULL); - //注册信号质量通知事件 - AM_EVT_Subscribe((long)handle, AM_SCAN_EVT_SIGNAL, tv_scan_evt_callback, NULL); - if (AM_SCAN_Start(handle) != AM_SUCCESS) { - AM_SCAN_Destroy(handle, AM_FALSE); - AM_EVT_Unsubscribe((long)handle, AM_SCAN_EVT_PROGRESS, tv_scan_evt_callback, NULL); - AM_EVT_Unsubscribe((long)handle, AM_SCAN_EVT_SIGNAL, tv_scan_evt_callback, NULL); - handle = NULL; - } - } - if (para.atv_para.fe_paras != NULL) - free(para.atv_para.fe_paras); - if (para.dtv_para.fe_paras != NULL) - free(para.dtv_para.fe_paras); - - if (handle == NULL) { - return -1; - } - mbScanStart = true;//start call ok - } else { - LOGD("scanning and not stop"); - } - return 0; -} - -/*int CTvScanner::autoAtscScan(int attennaType,int std) -{ - stopScan(); - - if(!mbScanStart) { //not start or stop - AM_SCAN_CreatePara_t para; - AM_DMX_OpenPara_t dmx_para; - int handle = 0,i; - // Create the scan - memset(¶, 0, sizeof(para)); - - //strcpy(para.default_text_lang,"eng");//config - //strcpy(para.text_langs, "local eng zho chi chs first");//config - para.fend_dev_id = 0;//default - para.mode = AM_SCAN_MODE_ADTV;//DTV - para.atv_para.mode = AM_SCAN_ATVMODE_NONE; - - - para.atv_para.default_std= std; - - - para.dtv_para.mode = AM_SCAN_DTVMODE_ALLBAND;//DTV_MODE_ALLBAND - //para.dtv_para.mode |= (*env)->GetIntField(env, para, doptions);//忽略 - para.dtv_para.source = FE_ATSC;//fe_type - para.dtv_para.dmx_dev_id = 0;//default 0 - para.dtv_para.resort_all = AM_TRUE; - para.dtv_para.clear_source = AM_TRUE; - para.dtv_para.mix_tv_radio = AM_FALSE; - para.dtv_para.sort_method = AM_SCAN_SORT_BY_FREQ_SRV_ID; - para.store_cb = NULL; - //para.dtv_para.attenna = attennaType;//see dvb atsc-cnc - - para.dtv_para.standard = AM_SCAN_DTV_STD_ATSC; - - mSource = para.dtv_para.source; - - Vector<sp<CTvChannel> > vcp; - //CTvDatabase::getChannelParaList("/data/tv_default.xml", vcp);//channel list from xml or db - getAtscChannelPara(attennaType,vcp); - LOGD("ANDESEN test attenna type is %d",attennaType); - - int size = vcp.size(); - LOGD("channel list size = %d", size); - //showboz - if(size == 0) { - CTvDatabase::GetTvDb()->importXmlToDB("/etc/tv_default.xml"); - getAtscChannelPara(attennaType,vcp); - size = vcp.size(); - } - - if(!(para.dtv_para.fe_paras = static_cast<AM_FENDCTRL_DVBFrontendParameters_t*>(calloc(size, sizeof(AM_FENDCTRL_DVBFrontendParameters_t))))) - return -1; - - //memset(pfp, 0, size * sizeof(AM_FENDCTRL_DVBFrontendParameters_t)); - - for (i = 0; i < size; i++) { - para.dtv_para.fe_paras[i].m_type = 3;//MODE_ATSC - para.dtv_para.fe_paras[i].m_logicalChannelNum = vcp[i]->getLogicalChannelNum(); - para.dtv_para.fe_paras[i].atsc.para.frequency = vcp[i]->getFrequency(); - para.dtv_para.fe_paras[i].atsc.para.u.vsb.modulation = (fe_modulation_t)(vcp[i]->getModulation()); - } - //allband - para.dtv_para.fe_cnt = size; - - memset(&dmx_para, 0, sizeof(dmx_para)); - AM_DMX_Open(para.dtv_para.dmx_dev_id, &dmx_para); - - if ((para.dtv_para.mode&0x07) != AM_SCAN_DTVMODE_NONE) { - AM_FEND_SetMode(para.fend_dev_id, para.dtv_para.source); - tv_scan_reconnect_dmx_to_fend(para.dtv_para.dmx_dev_id, para.fend_dev_id); - } - - // prog->dmx_id = para.dtv_para.dmx_dev_id; - // prog->fend_id = para.fend_dev_id; - // prog->mode = para.dtv_para.mode; - // Start Scan - if (AM_SCAN_Create(¶, &handle) != AM_SUCCESS) { - LOGD("SCAN CREATE fail"); - handle = 0; - } else { - mScanHandle = handle; - AM_SCAN_SetUserData(handle, (void*)this); - //注册搜索事件 - AM_EVT_Unsubscribe(handle, AM_SCAN_EVT_PROGRESS, tv_scan_evt_callback, NULL); - AM_EVT_Subscribe(handle, AM_SCAN_EVT_PROGRESS, tv_scan_evt_callback, NULL); - //注册信号质量通知事件 - AM_EVT_Subscribe(handle, AM_SCAN_EVT_SIGNAL, tv_scan_evt_callback, NULL); - if (AM_SCAN_Start(handle) != AM_SUCCESS) { - AM_SCAN_Destroy(handle, AM_FALSE); - AM_EVT_Unsubscribe(handle, AM_SCAN_EVT_PROGRESS, tv_scan_evt_callback, NULL); - AM_EVT_Unsubscribe(handle, AM_SCAN_EVT_SIGNAL, tv_scan_evt_callback, NULL); - handle = 0; - } - } - if (para.atv_para.fe_paras != NULL) - free(para.atv_para.fe_paras); - if (para.dtv_para.fe_paras != NULL) - free(para.dtv_para.fe_paras); - - if (handle == 0) { - return -1; - } - mbScanStart = true;//start call ok - } else { - LOGD("scanning and not stop"); - } - return 0; -}*/ - - -int CTvScanner::stopScan() -{ - LOGD("StopScan"); - //requestExit(); - if (mbScanStart) { //if start ok and not stop - int ret = AM_SCAN_Destroy(mScanHandle, AM_TRUE); - AM_EVT_Unsubscribe((long)mScanHandle, AM_SCAN_EVT_PROGRESS, tv_scan_evt_callback, NULL); - AM_EVT_Unsubscribe((long)mScanHandle, AM_SCAN_EVT_SIGNAL, tv_scan_evt_callback, NULL); - AM_SEC_Cache_Reset(0); - //stop loop - LOGD("StopScan , ret=%d", ret); - mbScanStart = false;//stop ok - } else { - LOGD("not start scan or scan stoped"); - } - return 0; -} - -void CTvScanner::tv_scan_evt_callback(long dev_no, int event_type, void *param, void *data __unused) -{ - CTvScanner *pT = NULL; - long long tmpFreq = 0; - - LOGD("evt evt:%d", event_type); - AM_SCAN_GetUserData((AM_SCAN_Handle_t)dev_no, (void **)&pT); - if (pT == NULL) { - return; - } - pT->mCurEv.clear(); - memset(pT->mCurEv.mProgramName, '\0', sizeof(pT->mCurEv.mProgramName)); - memset(pT->mCurEv.mMSG, '\0', sizeof(pT->mCurEv.mMSG)); - if (event_type == AM_SCAN_EVT_PROGRESS) { - AM_SCAN_Progress_t *evt = (AM_SCAN_Progress_t *)param; - LOGD("progress evt:%d", evt->evt); - switch (evt->evt) { - case AM_SCAN_PROGRESS_SCAN_BEGIN: - pT->mCurEv.mPercent = 0; - break; - case AM_SCAN_PROGRESS_NIT_BEGIN: - - break; - case AM_SCAN_PROGRESS_NIT_END: - - break; - case AM_SCAN_PROGRESS_TS_BEGIN: { - AM_SCAN_TSProgress_t *tp = (AM_SCAN_TSProgress_t *)evt->data; - if (tp == NULL) - break; - pT->mCurEv.mChannelNumber = tp->index; - pT->mCurEv.mMode = tp->fend_para.m_type; - pT->mCurEv.mFrequency = ((struct dvb_frontend_parameters *)(&tp->fend_para))->frequency; - pT->mCurEv.mSymbolRate = tp->fend_para.cable.para.u.qam.symbol_rate; - pT->mCurEv.mModulation = tp->fend_para.cable.para.u.qam.modulation; - pT->mCurEv.mBandwidth = tp->fend_para.terrestrial.para.u.ofdm.bandwidth; - pT->mCurEv.mOfdm_mode = tp->fend_para.terrestrial.para.u.ofdm.ofdm_mode; - pT->mCurEv.mAudio = tp->fend_para.analog.para.u.analog.audmode; - pT->mCurEv.mStandard = tp->fend_para.analog.para.u.analog.std; - pT->mCurEv.mSat_polarisation = tp->fend_para.sat.polarisation; - if (pT->mCurEv.mMode == FE_ANALOG) { - if (pT->mSource == FE_ATSC) { - pT->mCurEv.mPercent = (tp->index * 100) / tp->total; - } else { - pT->mCurEv.mPercent = 0; - } - } else { - pT->mCurEv.mPercent = (tp->index * 100) / tp->total; - } - - if (pT->mCurEv.mTotalChannelCount == 0) - pT->mCurEv.mTotalChannelCount = tp->total; - if (pT->mCurEv.mPercent >= 100) - pT->mCurEv.mPercent = 99; - - pT->mCurEv.mLockedStatus = 0; - pT->mCurEv.mStrength = 0; - pT->mCurEv.mSnr = 0; - pT->mCurEv.mType = ScannerEvent::EVENT_SCAN_PROGRESS; - - pT->sendEvent(pT->mCurEv); - } - break; - case AM_SCAN_PROGRESS_TS_END: { - /*pT->mCurEv.mLockedStatus = 0; - pT->mCurEv.mType = ScannerEvent::EVENT_SCAN_PROGRESS; - pT->sendEvent(pT->mCurEv);*/ - } - break; - - case AM_SCAN_PROGRESS_PAT_DONE: /*{ - if(pT->mCurEv.mTotalChannelCount == 1) { - pT->mCurEv.mType = ScannerEvent::EVENT_SCAN_PROGRESS; - pT->sendEvent(pT->mCurEv); - } - }*/ - break; - case AM_SCAN_PROGRESS_SDT_DONE: /*{ - dvbpsi_sdt_t *sdts = (dvbpsi_sdt_t *)evt->data; - dvbpsi_sdt_t *sdt; - - if (pT->mCurEv.mTotalChannelCount == 1) { - pT->mCurEv.mPercent += 25; - if (pT->mCurEv.mPercent >= 100) - pT->mCurEv.mPercent = 99; - pT->mCurEv.mType = ScannerEvent::EVENT_SCAN_PROGRESS; - - pT->sendEvent(pT->mCurEv); - } - }*/ - break; - case AM_SCAN_PROGRESS_CAT_DONE: /*{ - dvbpsi_cat_t *cat = (dvbpsi_cat_t *)evt->data; - if (pT->mCurEv.mTotalChannelCount == 1) { - pT->mCurEv.mPercent += 25; - if (pT->mCurEv.mPercent >= 100) - pT->mCurEv.mPercent = 99; - - pT->mCurEv.mType = ScannerEvent::EVENT_SCAN_PROGRESS; - - pT->sendEvent(pT->mCurEv); - } - }*/ - break; - case AM_SCAN_PROGRESS_PMT_DONE: /*{ - dvbpsi_pmt_t *pmt = (dvbpsi_pmt_t *)evt->data; - if (pT->mCurEv.mTotalChannelCount == 1) { - pT->mCurEv.mPercent += 25; - if (pT->mCurEv.mPercent >= 100) - pT->mCurEv.mPercent = 99; - - pT->mCurEv.mType = ScannerEvent::EVENT_SCAN_PROGRESS; - pT->sendEvent(pT->mCurEv); - } - }*/ - break; - case AM_SCAN_PROGRESS_MGT_DONE: { - mgt_section_info_t *mgt = (mgt_section_info_t *)evt->data; - - if (pT->mCurEv.mTotalChannelCount == 1) { - pT->mCurEv.mPercent += 10; - if (pT->mCurEv.mPercent >= 100) - pT->mCurEv.mPercent = 99; - - pT->mCurEv.mType = ScannerEvent::EVENT_SCAN_PROGRESS; - - pT->sendEvent(pT->mCurEv); - } - } - break; - case AM_SCAN_PROGRESS_VCT_DONE: { - /*ATSC TVCT*/ - if (pT->mCurEv.mTotalChannelCount == 1) { - pT->mCurEv.mPercent += 30; - if (pT->mCurEv.mPercent >= 100) - pT->mCurEv.mPercent = 99; - pT->mCurEv.mType = ScannerEvent::EVENT_SCAN_PROGRESS; - - pT->sendEvent(pT->mCurEv); - } - } - break; - case AM_SCAN_PROGRESS_NEW_PROGRAM: { - /* Notify the new searched programs */ - AM_SCAN_ProgramProgress_t *pp = (AM_SCAN_ProgramProgress_t *)evt->data; - if (pp != NULL) { - pT->mCurEv.mprogramType = pp->service_type; - snprintf(pT->mCurEv.mProgramName, sizeof(pT->mCurEv.mProgramName), "%s", pp->name); - - pT->mCurEv.mType = ScannerEvent::EVENT_SCAN_PROGRESS; - - pT->sendEvent(pT->mCurEv); - } - } - break; - case AM_SCAN_PROGRESS_BLIND_SCAN: { - AM_SCAN_DTVBlindScanProgress_t *bs_prog = (AM_SCAN_DTVBlindScanProgress_t *)evt->data; - - if (bs_prog) { - pT->mCurEv.mPercent = bs_prog->progress; - - snprintf(pT->mCurEv.mMSG, sizeof(pT->mCurEv.mMSG), "%s/%s %dMHz", - bs_prog->polar == AM_FEND_POLARISATION_H ? "H" : "V", - bs_prog->lo == AM_FEND_LOCALOSCILLATORFREQ_L ? "L-LOF" : "H-LOF", - bs_prog->freq / 1000); - - pT->mCurEv.mType = ScannerEvent::EVENT_BLINDSCAN_PROGRESS; - - pT->sendEvent(pT->mCurEv); - - if (bs_prog->new_tp_cnt > 0) { - int i = 0; - for (i = 0; i < bs_prog->new_tp_cnt; i++) { - LOGD("====New tp: %dkS/s %d====", bs_prog->new_tps[i].frequency, - bs_prog->new_tps[i].u.qpsk.symbol_rate); - - pT->mCurEv.mFrequency = bs_prog->new_tps[i].frequency; - pT->mCurEv.mSymbolRate = bs_prog->new_tps[i].u.qpsk.symbol_rate; - pT->mCurEv.mSat_polarisation = bs_prog->polar; - - pT->mCurEv.mType = ScannerEvent::EVENT_BLINDSCAN_NEWCHANNEL; - - pT->sendEvent(pT->mCurEv); - } - } - if (bs_prog->progress >= 100) { - - pT->mCurEv.mType = ScannerEvent::EVENT_BLINDSCAN_END; - - pT->sendEvent(pT->mCurEv); - - pT->mCurEv.mPercent = 0; - } - } - } - break; - case AM_SCAN_PROGRESS_STORE_BEGIN: { - pT->mCurEv.mType = ScannerEvent::EVENT_STORE_BEGIN; - pT->mCurEv.mLockedStatus = 0; - pT->sendEvent(pT->mCurEv); - } - break; - case AM_SCAN_PROGRESS_STORE_END: { - pT->mCurEv.mLockedStatus = 0; - pT->mCurEv.mType = ScannerEvent::EVENT_STORE_END; - pT->sendEvent(pT->mCurEv); - } - break; - case AM_SCAN_PROGRESS_SCAN_END: { - pT->mCurEv.mPercent = 100; - pT->mCurEv.mLockedStatus = 0; - pT->mCurEv.mType = ScannerEvent::EVENT_SCAN_END; - pT->sendEvent(pT->mCurEv); - } - break; - case AM_SCAN_PROGRESS_SCAN_EXIT: { - pT->mCurEv.mLockedStatus = 0; - pT->mCurEv.mType = ScannerEvent::EVENT_SCAN_EXIT; - pT->sendEvent(pT->mCurEv); - } - break; - case AM_SCAN_PROGRESS_ATV_TUNING: { - pT->mCurEv.mFrequency = (int)evt->data; - pT->mCurEv.mLockedStatus = 0; - tmpFreq = (pT->mCurEv.mFrequency - pT->mCurScanStartFreq) / 1000000; - pT->mCurEv.mPercent = tmpFreq * 100UL / ((pT->mCurScanEndFreq - pT->mCurScanStartFreq) / 1000000); - pT->mCurEv.mType = ScannerEvent::EVENT_SCAN_PROGRESS; - pT->sendEvent(pT->mCurEv); - } - break; - - default: - break; - } - } else if (event_type == AM_SCAN_EVT_SIGNAL) { - AM_SCAN_DTVSignalInfo_t *evt = (AM_SCAN_DTVSignalInfo_t *)param; - //pT->mCurEv.mprogramType = 0xff; - pT->mCurEv.mFrequency = (int)evt->frequency; - pT->mCurEv.mLockedStatus = (evt->locked ? 1 : 0); - - if (pT->mCurEv.mMode == FE_ANALOG && evt->locked)//trick here for atv new prog - pT->mCurEv.mLockedStatus |= 0x10; - - pT->mCurEv.mType = ScannerEvent::EVENT_SCAN_PROGRESS; - if (pT->mCurEv.mMode != FE_ANALOG && evt->locked) { - pT->mCurEv.mStrength = evt->strength; - pT->mCurEv.mSnr = evt->snr; - } else { - pT->mCurEv.mStrength = 0; - pT->mCurEv.mSnr = 0; - } - - //if (pT->mCurEv.mMode == FE_ANALOG) - pT->sendEvent(pT->mCurEv); - - pT->mCurEv.mLockedStatus &= ~0x10; - } -} - -void CTvScanner::tv_scan_reconnect_dmx_to_fend(int dmx_no, int fend_no) -{ - AM_DMX_Source_t src; - - if (AM_FEND_GetTSSource(fend_no, &src) == AM_SUCCESS) { - LOGD("Set demux%d source to %d", dmx_no, src); - AM_DMX_SetSource(dmx_no, src); - } else { - LOGD("Cannot get frontend ts source!!"); - } -} - -int CTvScanner::getAtscChannelPara(int attennaType, Vector<sp<CTvChannel> > &vcp) -{ - switch (attennaType) { //region name should be remove to config file and read here - case 1: - CTvRegion::getChannelListByName((char *)"U.S.,ATSC Air", vcp); - break; - case 2: - CTvRegion::getChannelListByName((char *)"U.S.,ATSC Cable Standard", vcp); - break; - case 3: - CTvRegion::getChannelListByName((char *)"U.S.,ATSC Cable IRC", vcp); - break; - case 4: - CTvRegion::getChannelListByName((char *)"U.S.,ATSC Cable HRC", vcp); - break; - default: - return -1; - } - - return 0; -} - -void CTvScanner::sendEvent(ScannerEvent &evt) -{ - if (mpObserver) { - if (evt.mType != ScannerEvent::EVENT_DTV_PROG_DATA) { - evt.mAcnt = 0;//avoid invalid count confused the array. - evt.mScnt = 0; - } - mpObserver->onEvent(evt); - } -} - diff --git a/tvapi/libtv/tv/CTvScanner.h b/tvapi/libtv/tv/CTvScanner.h deleted file mode 100644 index d03f8cd..0000000 --- a/tvapi/libtv/tv/CTvScanner.h +++ b/dev/null @@ -1,264 +0,0 @@ -// -// -// amlogic 2013 -// -// @ Project : tv -// @ File Name : -// @ Date : 2013-11 -// @ Author : -// -// -#include <am_scan.h> -#include <am_epg.h> -#include <am_mem.h> -#include <am_db.h> -#include "CTvChannel.h" -#include "CTvLog.h" -#include "CTvEv.h" -#include "tvin/CTvin.h" - -#if !defined(_CTVSCANNER_H) -#define _CTVSCANNER_H -class CTvScanner { -public: - /** ATSC Attenna type */ - static const int AM_ATSC_ATTENNA_TYPE_AIR = 1; - static const int AM_ATSC_ATTENNA_TYPE_CABLE_STD = 2; - static const int AM_ATSC_ATTENNA_TYPE_CABLE_IRC = 3; - static const int AM_ATSC_ATTENNA_TYPE_CABLE_HRC = 4; - CTvScanner(); - ~CTvScanner(); - void setGlobalScanerObject(CTvScanner *); - int startScan(); - int stopScan(); - int ATVManualScan(int min_freq, int max_freq, int std, int store_Type = 0, int channel_num = 0); - int autoAtvScan(int min_freq, int max_freq, int std, int search_type); - int autoDtmbScan(); - int manualDtmbScan(int beginFreq, int endFreq, int modulation = -1); - int autoAtscScan(int attennaType, int std); - int manualDtmbScan(int freq); - int manualAtscScan(int freq, int attennaType, int std); - int autoTvScan(); - int unsubscribeEvent(); - - class ScannerEvent: public CTvEv { - public: - static const int EVENT_SCAN_PROGRESS = 0; - static const int EVENT_STORE_BEGIN = 1; - static const int EVENT_STORE_END = 2; - static const int EVENT_SCAN_END = 3; - static const int EVENT_BLINDSCAN_PROGRESS = 4; - static const int EVENT_BLINDSCAN_NEWCHANNEL = 5; - static const int EVENT_BLINDSCAN_END = 6; - static const int EVENT_ATV_PROG_DATA = 7; - static const int EVENT_DTV_PROG_DATA = 8; - static const int EVENT_SCAN_EXIT = 9; - - ScannerEvent(): CTvEv(CTvEv::TV_EVENT_SCANNER) - { - clear(); - } - void clear() - { - mType = -1; - mProgramName[0] = '\0'; - mMSG[0] = '\0'; - mAcnt = 0; - mScnt = 0; - } - ~ScannerEvent() - { - } - - //common - int mType; - int mPercent; - int mTotalChannelCount; - int mLockedStatus; - int mChannelNumber; - //CTvChannel mChannel; - int mMode; - int mFrequency; - int mSymbolRate; - int mModulation; - int mBandwidth; - int mOfdm_mode; - - int mAudio; - int mStandard; - int mSat_polarisation; - // - int mStrength; - int mSnr; - char mProgramName[1024]; - int mprogramType; - char mMSG[128]; - //for atv - int mVideoStd; - int mAudioStd; - int mIsAutoStd;//1 is true - int mAfcData; - - - //for DTV - int mTsId; - int mONetId; - int mServiceId; - int mVid; - int mVfmt; - int mAcnt; - int mAid[32]; - int mAfmt[32]; - char mAlang[32][10]; - int mAtype[32]; - int mPcr; - - int mScnt; - int mStype[32]; - int mSid[32]; - int mSstype[32]; - int mSid1[32]; - int mSid2[32]; - char mSlang[32][10]; - - // ScannerEvent(int type){ - // this->mType = type; - // } - }; - - class IObserver { - public: - IObserver() {}; - virtual ~IObserver() {}; - virtual void onEvent(const ScannerEvent &ev) = 0; - }; - //1 VS n - //int addObserver(IObserver* ob); - //int removeObserver(IObserver* ob); - - //1 VS 1 - int setObserver(IObserver *ob) - { - mpObserver = ob; - return 0; - } -private: - static AM_Bool_t s_atv_cvbs_lock_check(void *); - AM_Bool_t atv_cvbs_lock_check(v4l2_std_id *colorStd); - static void tv_scan_evt_callback(long dev_no, int event_type, void *param, void *data); - static void am_scan_atv_store(AM_SCAN_Result_t *result); - void tv_scan_reconnect_dmx_to_fend(int dmx_no, int fend_no); - int getAtscChannelPara(int attennaType, Vector<sp<CTvChannel> > &vcp); - void sendEvent(ScannerEvent &evt); - // - AM_SCAN_Handle_t mScanHandle; - volatile bool mbScanStart; - - //scan para info - /** General TV Scan Mode */ - static const int TV_MODE_ATV = 0; // Only search ATV - static const int TV_MODE_DTV = 1; // Only search DTV - static const int TV_MODE_ADTV = 2; // A/DTV will share a same frequency list, like ATSC - /** DTV scan mode */ - static const int DTV_MODE_AUTO = 1; - static const int DTV_MODE_MANUAL = 2; - static const int DTV_MODE_ALLBAND = 3; - static const int DTV_MODE_BLIND = 4; - - /** DTV scan options, DONOT channge */ - static const int DTV_OPTION_UNICABLE = 0x10; //Satellite unicable mode - static const int DTV_OPTION_FTA = 0x20; //Only store free programs - static const int DTV_OPTION_NO_TV = 0x40; //Only store tv programs - static const int DTV_OPTION_NO_RADIO = 0x80; //Only store radio programs - - /** ATV scan mode */ - static const int ATV_MODE_AUTO = 1; - static const int ATV_MODE_MANUAL = 2; - - // - /*subtitle*/ - static const int TYPE_DVB_SUBTITLE = 1; - static const int TYPE_DTV_TELETEXT = 2; - static const int TYPE_ATV_TELETEXT = 3; - static const int TYPE_DTV_CC = 4; - static const int TYPE_ATV_CC = 5; - -#define AM_SCAN_MAX_SRV_NAME_LANG 4 - - typedef struct { - uint8_t srv_type, eit_sche, eit_pf, rs, free_ca, access_controlled, hidden, hide_guide, plp_id; - int vid, aid1, aid2, srv_id, pmt_pid, pcr_pid; - int vfmt, chan_num, afmt_tmp, vfmt_tmp, scrambled_flag, major_chan_num, minor_chan_num, source_id; - int src, srv_dbid, satpara_dbid; - char name[(AM_DB_MAX_SRV_NAME_LEN + 4)*AM_SCAN_MAX_SRV_NAME_LANG + 1]; - char *default_text_lang; - char *text_langs; - AM_SI_AudioInfo_t aud_info; - AM_SI_SubtitleInfo_t sub_info; - AM_SI_TeletextInfo_t ttx_info; - int sdt_version; - } SCAN_ServiceInfo_t; - - - static dvbpsi_pat_t *get_valid_pats(AM_SCAN_TS_t *ts); - static void scan_process_ts_info(AM_SCAN_Result_t *result, AM_SCAN_TS_t *ts, ScannerEvent *evt); - static void scan_init_service_info(SCAN_ServiceInfo_t *srv_info); - static int get_pmt_pid(dvbpsi_pat_t *pats, int program_number); - static void scan_extract_ca_scrambled_flag(dvbpsi_descriptor_t *p_first_descriptor, int *flag); - static void scan_extract_srv_info_from_sdt(AM_SCAN_Result_t *result, dvbpsi_sdt_t *sdts, SCAN_ServiceInfo_t *srv_info); - static void scan_update_service_info(AM_SCAN_Result_t *result, SCAN_ServiceInfo_t *srv_info); - static void scan_store_dvb_ts_evt_service(SCAN_ServiceInfo_t *srv); - static void scan_store_dvb_ts(AM_SCAN_Result_t *result, AM_SCAN_TS_t *ts); - static void dtv_scan_store(AM_SCAN_Result_t *result); - - -private: - - // - IObserver *mpObserver; - // - CTvin *mpTvin; - int mMode; - int mFendID; - /** DTV parameters */ - int mTvMode; - int mTvOptions; - int mSat_id; - int mSource; - - //showboz - //TVSatelliteParams tv_satparams; - int mTsSourceID; - CTvChannel mStartChannel; - Vector<CTvChannel> mvChooseListChannels; - /** ATV parameters */ - int mAtvMode; - int mStartFreq; - int mDirection; - int mChannelID; - - - - //extern for scanner - //int channelID; //can be used for manual scan - /** Atv set */ - int mMinFreq; - int mMaxFreq; - long long mCurScanStartFreq; - long long mCurScanEndFreq; - int tunerStd; - /** Tv set */ - int demuxID;//default 0 - String8 defaultTextLang; - String8 orderedTextLangs; - //showboz - //Vector<CTvChannel> ChannelList;//VS mvChooseListChannels - - /** Dtv-Sx set Unicable settings*/ - int user_band; - int ub_freq;//!< kHz - - ScannerEvent mCurEv; - static CTvScanner *m_s_Scanner; -}; -#endif //CTVSCANNER_H diff --git a/tvapi/libtv/tv/CTvScreenCapture.cpp b/tvapi/libtv/tv/CTvScreenCapture.cpp deleted file mode 100644 index 57e2234..0000000 --- a/tvapi/libtv/tv/CTvScreenCapture.cpp +++ b/dev/null @@ -1,796 +0,0 @@ - -#include <stdlib.h> -#include <fcntl.h> -#include <strings.h> -#include <sys/ioctl.h> -#include <asm/types.h> -#include <fcntl.h> -#include <unistd.h> -#include <errno.h> -#include <malloc.h> -#include <sys/stat.h> -#include <sys/types.h> -#include <time.h> -#include <sys/mman.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <assert.h> -#include <linux/videodev2.h> -#include <dirent.h> - -#include <binder/MemoryHeapBase.h> -#include <binder/MemoryBase.h> - -//#include <media/stagefright/MediaSource.h> -//#include <media/stagefright/MediaBuffer.h> -//#include <OMX_IVCommon.h> -//#include <media/stagefright/MetaData.h> -//#include <media/stagefright/ScreenCatch.h> -using namespace android; - - -#include "CTvScreenCapture.h" - -#define CLEAR(x) memset (&(x), 0, sizeof (x)) - -int CTvScreenCapture::xioctl(int fd, int request, void *arg) -{ - /* - int r = 0; - do { - r = ioctl(fd, request, arg); - } while (-1 == r && EINTR == errno); - - return r;*/ - - //for warning - fd = fd; - request = request; - arg = arg; - return 0; -} - -int CTvScreenCapture::OpenCamera(struct camera *pCameraDev) -{ - /* - int iOutRet = 0, iRet; - struct stat st; - - do { - if (-1 == stat(pCameraDev->device_name, &st)) { - LOGD( "Cannot identify '%s'\n", pCameraDev->device_name); - iOutRet = FAILED; - break; - } - - if (!S_ISCHR(st.st_mode)) { - LOGD("%s is no device\n", pCameraDev->device_name); - iOutRet = FAILED; - break; - } - - pCameraDev->fd = open(pCameraDev->device_name, O_RDWR | O_NONBLOCK, 0); // O_NONBLOCK - if (SUCCEED > pCameraDev->fd) { - LOGD("Cannot open '%s'\n", pCameraDev->device_name); - iOutRet = FAILED; - break; - } - } while (FALSE); - - return iOutRet;*/ - - //for warning - pCameraDev = pCameraDev; - return 0; -} - - -int CTvScreenCapture::InitVCap(sp<IMemory> Mem) -{ - /* - int iOutRet = FAILED; - - do { - m_pMem = Mem; - m_pData = (char *)m_pMem->pointer(); - LOGD("VVVVVVVVVVVVVVVVVVVVVVVVVVVVV %p\n", m_pData); - //default - } while (FALSE); - - return iOutRet;*/ - - //for warning - Mem = Mem; - return 0; -} - -int CTvScreenCapture::InitMmap(struct camera *cam) -{ - /* - int iOutRet = SUCCEED, iRet; - struct v4l2_requestbuffers req; - - do { - CLEAR(req); - - req.count = 4; - req.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - req.memory = V4L2_MEMORY_MMAP; - - iRet = xioctl(cam->fd, VIDIOC_REQBUFS, &req); - if (FAILED == iRet) { - if (EINVAL == errno) { - LOGD("VIDIOC_REQBUFS %s does not support memory mapping\n", cam->device_name); - } - iOutRet = iRet; - break; - } - - if (req.count < 2) { - LOGD("Insufficient buffer memory on %s\n", cam->device_name); - iOutRet = FAILED; - break; - } - - cam->buffers = (struct buffer *)calloc(req.count, sizeof(*(cam->buffers))); - if (!cam->buffers) { - LOGD("Out of memory\n"); - iOutRet = FAILED; - break; - } - - for (m_capNumBuffers = 0; m_capNumBuffers < req.count; ++m_capNumBuffers) { - struct v4l2_buffer buf; - - CLEAR(buf); - - buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - buf.memory = V4L2_MEMORY_MMAP; - buf.index = m_capNumBuffers; - - if (FAILED == xioctl(cam->fd, VIDIOC_QUERYBUF, &buf)) { - LOGD("VIDIOC_QUERYBUF ERROR\n"); - iOutRet = FAILED; - goto IS_ERROR; - } - - cam->buffers[m_capNumBuffers].length = buf.length; - cam->buffers[m_capNumBuffers].start = mmap(NULL \, - buf.length, PROT_READ | PROT_WRITE, - MAP_SHARED, cam->fd, buf.m.offset); - - if (MAP_FAILED == cam->buffers[m_capNumBuffers].start) { - iOutRet = FAILED; - break; - } - - - } - - LOGD("END m_capNumBuffers : %d\n", m_capNumBuffers); - } while (FALSE); -IS_ERROR: - return iOutRet;*/ - - //for warning - cam = cam; - return 0; -} - -int CTvScreenCapture::InitCamera(struct camera *cam) -{ - /* - int iOutRet = SUCCEED, iRet; - struct v4l2_capability *cap = &(cam->v4l2_cap); - struct v4l2_cropcap *cropcap = &(cam->v4l2_cropcap); - struct v4l2_crop *crop = &(cam->crop); - struct v4l2_format *fmt = &(cam->v4l2_fmt); - unsigned int min; - - do { - iRet = xioctl(cam->fd, VIDIOC_QUERYCAP, cap); - if (FAILED == iRet) { - if (EINVAL == errno) { - LOGD("%s is no V4L2 device\n", cam->device_name); - } - iOutRet = iRet; - break; - } - - if (!(cap->capabilities & V4L2_CAP_VIDEO_CAPTURE)) { - LOGD("%s is no video capture device\n", cam->device_name); - iOutRet = FAILED; - break; - } - - if (!(cap->capabilities & V4L2_CAP_STREAMING)) { - LOGD("%s does not support streaming i/o\n", cam->device_name); - iOutRet = FAILED; - break; - } - - LOGD("VIDOOC_QUERYCAP camera driver is [%s] card is [%s] businfo is [%s] version is [%d]\n", cap->driver, - cap->card, cap->bus_info, cap->version); - - // Select video input, video standard and tune here. - - CLEAR(*cropcap); - cropcap->type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - - crop->c.width = cam->width; - crop->c.height = cam->height; - crop->c.left = 0; - crop->c.top = 0; - crop->type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - - CLEAR(*fmt); - fmt->type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - fmt->fmt.pix.width = cam->width; - fmt->fmt.pix.height = cam->height; - fmt->fmt.pix.pixelformat = V4L2_PIX_FMT_NV21; - fmt->fmt.pix.field = V4L2_FIELD_INTERLACED; - iRet = xioctl(cam->fd, VIDIOC_S_FMT, fmt); - if (FAILED == iRet) { - iOutRet = iRet; - LOGD("VIDIOC_S_FMT is ERROR\n"); - break; - } - - // Note VIDIOC_S_FMT may change width and height. - // Buggy driver paranoia. - min = fmt->fmt.pix.width * 2; - LOGD("bytesperline : %d w:h [%d %d]\n", fmt->fmt.pix.bytesperline, fmt->fmt.pix.width, fmt->fmt.pix.height); - if (fmt->fmt.pix.bytesperline < min) { - fmt->fmt.pix.bytesperline = min; - } - - min = fmt->fmt.pix.bytesperline * fmt->fmt.pix.height; - if (fmt->fmt.pix.sizeimage < min) { - fmt->fmt.pix.sizeimage = min; - } - - iRet = InitMmap(cam); - if (FAILED == iRet) { - LOGD("INIT MMAP FAILED\n"); - iOutRet = iRet; - break; - } - } while (FALSE); - return iOutRet; - */ - - //for warning - cam = cam; - return 0; -} - - -int CTvScreenCapture::SetVideoParameter(int width, int height, int frame) -{ - /* - int iOutRet = SUCCEED, iRet; - - do { - m_capV4l2Cam.device_name = "/dev/video11"; - m_capV4l2Cam.buffers = NULL; - m_capV4l2Cam.width = 1280; - m_capV4l2Cam.height = 720; - m_capV4l2Cam.display_depth = 24; //5; //RGB24 - m_capV4l2Cam.frame_number = 1; //fps - iOutRet = OpenCamera(&m_capV4l2Cam) ; - if (SUCCEED != iOutRet) { - LOGD("ERROR:::Open Camera device failed\n"); - break; - } - m_capV4l2Cam.width = width; - m_capV4l2Cam.height = height; - m_capV4l2Cam.frame_number = frame; - - iRet = InitCamera(&m_capV4l2Cam); - if (SUCCEED != iRet) { - iOutRet = iRet; - break; - } - - } while (FALSE); - - return iOutRet ;*/ - - //for warning - width = width; - height = height; - frame = frame; - return 0; -} - -int CTvScreenCapture::StartCapturing(struct camera *cam) -{ - /* - unsigned int i; - int iOutRet = SUCCEED, iRet; - enum v4l2_buf_type type; - - do { - for (i = 0; i < m_capNumBuffers; ++i) { - struct v4l2_buffer buf; - - //CLEAR(buf); - - buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - buf.memory = V4L2_MEMORY_MMAP; - buf.index = i; - - iRet = xioctl(cam->fd, VIDIOC_QBUF, &buf); - if (FAILED == iRet) { - iOutRet = iRet; - goto IS_ERROR; - } - } - - type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - iRet = xioctl(cam->fd, VIDIOC_STREAMON, &type); - if (FAILED == iRet) { - iOutRet = iRet; - break; - } - } while (FALSE); - -IS_ERROR: - return iOutRet;*/ - - //for warning - cam = cam; - return 0; -} - -int CTvScreenCapture::VideoStart() -{ - /* - int iOutRet = SUCCEED, iRet; - do { - iRet = StartCapturing(&m_capV4l2Cam); - if (FAILED == iRet) { - iOutRet = iRet; - break; - } - } while (FALSE); - - return iOutRet;*/ - - return 0; -} - -void CTvScreenCapture::yuv_to_rgb32(unsigned char y, unsigned char u, unsigned char v, unsigned char *rgb) -{ - /* - register int r, g, b; - int rgb24; - - r = (1192 * (y - 16) + 1634 * (v - 128) ) >> 10; - g = (1192 * (y - 16) - 833 * (v - 128) - 400 * (u - 128) ) >> 10; - b = (1192 * (y - 16) + 2066 * (u - 128) ) >> 10; - - r = r > 255 ? 255 : r < 0 ? 0 : r; - g = g > 255 ? 255 : g < 0 ? 0 : g; - b = b > 255 ? 255 : b < 0 ? 0 : b; - - rgb24 = (int)((r << 16) | (g << 8) | b); - - //ARGB - *rgb = (unsigned char)r; - rgb ++; - *rgb = (unsigned char)g; - rgb++; - *rgb = (unsigned char)b; - rgb++; - *rgb = 0xff;*/ - - //for warning - y = y; - u = u; - v = v; - rgb = rgb; -} - -void CTvScreenCapture::nv21_to_rgb32(unsigned char *buf, unsigned char *rgb, int width, int height, int *len) -{ - /* - int x, y, z = 0; - int h, w; - int blocks; - unsigned char Y1, Y2, U, V; - - *len = 0; - blocks = (width * height) * 2; - for (h = 0, z = 0; h < height; h += 2) { - for (y = 0; y < width * 2; y += 2) { - Y1 = buf[ h * width + y + 0]; - V = buf[ blocks / 2 + h * width / 2 + y % width + 0 ]; - Y2 = buf[ h * width + y + 1]; - U = buf[ blocks / 2 + h * width / 2 + y % width + 1 ]; - - yuv_to_rgb32(Y1, U, V, &rgb[z]); - yuv_to_rgb32(Y2, U, V, &rgb[z + 4]); - z += 8; - } - } - *len = z; - */ - - //for warning - buf = buf; - rgb = rgb; - width = width; - height = height; - len = len; -} - -int CTvScreenCapture::GetVideoData(int *length) -{ - /* - int iOutRet = SUCCEED, iRet; - - *length = 0; - while (true) { - fd_set fds; - struct timeval tv; - FD_ZERO(&fds); - FD_SET(m_capV4l2Cam.fd, &fds); - // Timeout. - tv.tv_sec = 0; - tv.tv_usec = 30000; - iRet = select(m_capV4l2Cam.fd + 1, &fds, NULL, NULL, &tv); - if (FAILED == iRet) { - LOGD("select FAILED\n"); - if (EINTR == errno) { - LOGD("select FAILED Continue\n"); - continue; - } - } - - if (0 == iRet) { - LOGD("select timeout\n"); - continue ; - } - - struct v4l2_buffer buf; - CLEAR(buf); - - buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - buf.memory = V4L2_MEMORY_MMAP; - iRet = xioctl(m_capV4l2Cam.fd, VIDIOC_DQBUF, &buf); - if (FAILED == iRet) { - if (errno == EAGAIN) { - LOGD("GetVideoData EAGAIN \n"); - } - continue; - } - - LOGD("DDDDDDDDDDAAAAAAAAAAAAAAAAAAAATTTTTTTTTTTTTTAAAAAAAAAAAAAAAAAAAAAAAAAAAAA %d %d [width:%d] [height:%d]\n", buf.length, iRet, - m_capV4l2Cam.width, m_capV4l2Cam.height); - int tmpLen = 0; - nv21_to_rgb32((unsigned char *)m_capV4l2Cam.buffers[buf.index].start, (unsigned char *)m_pData, m_capV4l2Cam.width, m_capV4l2Cam.height, &tmpLen); - //memcpy(m_pData,m_capV4l2Cam.buffers[buf.index].start, buf.length +1); - *length = buf.length; - break; - } - - if (*length > 0) { - mCapEvt.mFrameWide = m_capV4l2Cam.width; - mCapEvt.mFrameHeight = m_capV4l2Cam.height; - mCapEvt.mFrameNum = 1; - mCapEvt.mFrameSize = *length; - } else { - mCapEvt.mFrameWide = 0; - mCapEvt.mFrameHeight = 0; - mCapEvt.mFrameNum = 0; - mCapEvt.mFrameSize = 0; - } - - if (NULL != mpObserver) { - mpObserver->onTvEvent(mCapEvt); - } - - return iOutRet;*/ - - //for warning - length = length; - return 0; -} - -int CTvScreenCapture::StopCapturing(struct camera *cam) -{ - /* - int iOutRet = SUCCEED, iRet; - enum v4l2_buf_type type; - - do { - type = V4L2_BUF_TYPE_VIDEO_CAPTURE; - - iRet = xioctl(cam->fd, VIDIOC_STREAMOFF, &type); - if (FAILED == iRet) { - iOutRet = iRet; - break; - } - } while (FALSE); - return iOutRet;*/ - - //for warning - cam = cam; - return 0; -} - -int CTvScreenCapture::VideoStop() -{ - /* - StopCapturing(&m_capV4l2Cam); - UninitCamera(&m_capV4l2Cam); - return SUCCEED;*/ - return 0; -} - -int CTvScreenCapture::UninitCamera(struct camera *cam) -{ - /* - unsigned int i; - - for (i = 0; i < m_capNumBuffers; ++i) { - if (cam->buffers[i].start == NULL) { - break; - } - - if (FAILED == munmap(cam->buffers[i].start, cam->buffers[i].length)) { - LOGD("ERROR::munmap cam buffer failed\n"); - break; - } - } - - if (NULL != cam->buffers) - free(cam->buffers); - cam->buffers = NULL; - return SUCCEED;*/ - - //for warning - cam = cam; - return 0; -} - -int CTvScreenCapture::CloseCamera(struct camera *cam) -{ - /* - int iOutRet = SUCCEED, iRet; - - do { - if (cam->fd > 0) { - iRet = close(cam->fd); - if (FAILED == iRet) { - iOutRet = iRet; - break; - } - - cam->fd = -1; - } - } while (FALSE); - - return iOutRet;*/ - - //for warning - cam = cam; - return 0; -} - -int CTvScreenCapture::DeinitVideoCap() -{ - /* - CloseCamera(&m_capV4l2Cam); - return SUCCEED ; - */ - return 0; -} - -int CTvScreenCapture::AmvideocapCapFrame(char *buf, int size, int *w, int *h, int *ret_size) -{ - /* - int iOutRet = SUCCEED, iRet; - int iDevFd = -1; - int format = FORMAT_S32_ABGR; - - do { - iDevFd = open(VIDEOCAPDEV, O_RDWR); - if (iDevFd < 0) { - LOGD("ERROR,open amvideocap0 failed\n"); - iOutRet = FAILED; - break; - } - - if ((w != NULL) && (*w > 0)) { - iRet = ioctl(iDevFd, AMVIDEOCAP_IOW_SET_WANTFRAME_WIDTH, *w); - if (iRet < 0) { - iOutRet = iRet; - break; - } - } - - if ((h != NULL) && (*h > 0)) { - iRet = ioctl(iDevFd, AMVIDEOCAP_IOW_SET_WANTFRAME_HEIGHT, *h); - if (iRet < 0) { - iOutRet = iRet; - break; - } - } - - iRet = ioctl(iDevFd, AMVIDEOCAP_IOW_SET_WANTFRAME_FORMAT, format); - if (iRet < 0) { - iOutRet = iRet; - break; - } - - *ret_size = read(iDevFd, buf, size); - if (0 == *ret_size) { - LOGD("ERROR:: Cann't Read video data\n"); - iOutRet = FAILED; - *ret_size = 0; - break; - } - - LOGD("========== Got Data Size : %d ==============\n", *ret_size); -#if 0 - if (w != NULL) { - iRet = ioctl(iDevFd, AMVIDEOCAP_IOR_GET_FRAME_WIDTH, w); - } - - if (h != NULL) { - iRet = ioctl(iDevFd, AMVIDEOCAP_IOR_GET_FRAME_HEIGHT, h); - } -#endif - } while (FALSE); - - close(iDevFd); - return iOutRet;*/ - - //for warning - buf = buf; - size = size; - w = w; - h = h; - ret_size = ret_size; - return 0; -} - -int CTvScreenCapture::CapOsdAndVideoLayer(int width, int height) -{ - /* - int iOutRet = SUCCEED, iRet; - status_t iStatus; - ScreenCatch *mScreenCatch = NULL; - MetaData *pMeta = NULL; - MediaBuffer *buffer = NULL; - int dataLen = 0; - - do { - mScreenCatch = new ScreenCatch(width, height, 32); - if (NULL == mScreenCatch) { - LOGD("ERROR!!! mScreenCatch is NULL\n"); - iOutRet = FAILED; - break; - } - - pMeta = new MetaData(); - if (NULL == pMeta) { - LOGD("ERROR!!! pMeta is NULL\n"); - iOutRet = FAILED; - break; - } - pMeta->setInt32(kKeyColorFormat, OMX_COLOR_Format32bitARGB8888); - - mScreenCatch->start(pMeta); - - while (true) { - iStatus = mScreenCatch->read(&buffer); - if (iStatus != OK ) { - usleep(1000); - continue; - } - - if (NULL == buffer) { - iOutRet = FAILED; - break; - } - - LOGD("DDDDDDDDDDAAAAAAAAAAAAAAAAAAAATTTTTTTTTTTTTTAAAAAAAAAAAAAAAAAAAAAAAAAAAAA %d %d\n", buffer->size(), iStatus); - //nv21_to_rgb32((unsigned char*)buffer->data(),(unsigned char *)m_pData,width,height,&dataLen); - memcpy((unsigned char *)m_pData, (unsigned char *)buffer->data(), buffer->size()); - break; - } - } while (FALSE); - - if (dataLen > 0) { - mCapEvt.mFrameWide = width; - mCapEvt.mFrameHeight = height; - mCapEvt.mFrameNum = 1; - mCapEvt.mFrameSize = dataLen; - } else { - mCapEvt.mFrameWide = 0; - mCapEvt.mFrameHeight = 0; - mCapEvt.mFrameNum = 0; - mCapEvt.mFrameSize = 0; - } - - if (NULL != mpObserver) { - mpObserver->onTvEvent(mCapEvt); - } - - mScreenCatch->stop(); - - mScreenCatch->free(buffer); - buffer = NULL; - return iOutRet;*/ - - //for warning - width = width; - height = height; - return 0; -} - -int CTvScreenCapture::CapMediaPlayerVideoLayerOnly(int width, int height) -{ - /* - int iOutRet = SUCCEED, iRet; - int ibufSize, iDataSize = 0; - int w, h; - - do { - ibufSize = width * height * 4; - w = width; - h = height; - - iRet = AmvideocapCapFrame(m_pData, ibufSize, &w, &h, &iDataSize); - if (SUCCEED != iRet) { - LOGD("AmvideocapCapFrame Cannt CapFram\n"); - iOutRet = iRet; - break; - } - - LOGD("GOT DDDDDDDDDAAAAAAAATTTTTTTTTTTAAAAAA Size : %d w:%d h: %d\n", iDataSize, w, h); - - if (iDataSize > 0) { - mCapEvt.mFrameWide = w; - mCapEvt.mFrameHeight = h; - mCapEvt.mFrameNum = 1; - mCapEvt.mFrameSize = iDataSize; - } else { - mCapEvt.mFrameWide = 0; - mCapEvt.mFrameHeight = 0; - mCapEvt.mFrameNum = 0; - mCapEvt.mFrameSize = 0; - } - - if (NULL != mpObserver) { - mpObserver->onTvEvent(mCapEvt); - } - } while (FALSE); - - return iOutRet;*/ - - //for warning - width = width; - height = height; - return 0; -} - -CTvScreenCapture::CTvScreenCapture() -{ - /* - m_capNumBuffers = 0; - memset(&m_capV4l2Cam, 0x00, sizeof(camera)); - mpObserver = NULL;*/ -} - -CTvScreenCapture::~CTvScreenCapture() -{ - /* - memset(&m_capV4l2Cam, 0x00, sizeof(camera)); - m_pData = NULL;*/ -} - diff --git a/tvapi/libtv/tv/CTvScreenCapture.h b/tvapi/libtv/tv/CTvScreenCapture.h deleted file mode 100644 index c72ca8e..0000000 --- a/tvapi/libtv/tv/CTvScreenCapture.h +++ b/dev/null @@ -1,176 +0,0 @@ -#ifndef CTVSCREENCAPTURE_H__ -#define CTVSCREENCAPTURE_H__ - -#define VIDEOCAPDEV "/dev/amvideocap0" - -#define AMVIDEOCAP_IOC_MAGIC 'V' -#include <linux/videodev2.h> -#include <binder/MemoryHeapBase.h> -#include <binder/MemoryBase.h> -#include "CTvLog.h" -#include "CTvEv.h" - -#define CAP_FLAG_AT_CURRENT 0 -#define CAP_FLAG_AT_TIME_WINDOW 1 -#define CAP_FLAG_AT_END 2 - - -#define FALSE 0 -#define SUCCEED 0 -#define FAILED -1 - -using namespace android; - -struct buffer { - void *start; - size_t length; -}; - -struct camera { - char *device_name; - int fd; - int width; - int height; - int display_depth; - int image_size; - int frame_number; //fps - int bitrate ; // bitrate - struct v4l2_capability v4l2_cap; - struct v4l2_cropcap v4l2_cropcap; - struct v4l2_format v4l2_fmt; - struct v4l2_crop crop; - struct buffer *buffers; -}; - -/* -format see linux/ge2d/ge2d.h -like: -GE2D_FORMAT_S24_RGB -*/ -#define ENDIAN_SHIFT 24 -#define TV_LITTLE_ENDIAN (1 << ENDIAN_SHIFT) -#define FMT_S24_RGB (TV_LITTLE_ENDIAN|0x00200) /* 10_00_0_00_0_00 */ -#define FMT_S16_RGB (TV_LITTLE_ENDIAN|0x00100) /* 01_00_0_00_0_00 */ -#define FMT_S32_RGBA (TV_LITTLE_ENDIAN|0x00300) /* 11_00_0_00_0_00 */ - -#define COLOR_MAP_SHIFT 20 -#define COLOR_MAP_MASK (0xf << COLOR_MAP_SHIFT) -/* 16 bit */ -#define COLOR_MAP_RGB565 (5 << COLOR_MAP_SHIFT) -/* 24 bit */ -#define COLOR_MAP_RGB888 (0 << COLOR_MAP_SHIFT) -#define COLOR_MAP_BGR888 (5 << COLOR_MAP_SHIFT) -/* 32 bit */ -#define COLOR_MAP_RGBA8888 (0 << COLOR_MAP_SHIFT) -#define COLOR_MAP_ARGB8888 (1 << COLOR_MAP_SHIFT) -#define COLOR_MAP_ABGR8888 (2 << COLOR_MAP_SHIFT) -#define COLOR_MAP_BGRA8888 (3 << COLOR_MAP_SHIFT) - -/*16 bit*/ -#define FORMAT_S16_RGB_565 (FMT_S16_RGB | COLOR_MAP_RGB565) -/*24 bit*/ -#define FORMAT_S24_BGR (FMT_S24_RGB | COLOR_MAP_BGR888) -#define FORMAT_S24_RGB (FMT_S24_RGB | COLOR_MAP_RGB888) -/*32 bit*/ -#define FORMAT_S32_ARGB (FMT_S32_RGBA | COLOR_MAP_ARGB8888) -#define FORMAT_S32_ABGR (FMT_S32_RGBA | COLOR_MAP_ABGR8888) -#define FORMAT_S32_BGRA (FMT_S32_RGBA | COLOR_MAP_BGRA8888) -#define FORMAT_S32_RGBA (FMT_S32_RGBA | COLOR_MAP_RGBA8888) - -#define AMVIDEOCAP_IOW_SET_WANTFRAME_FORMAT _IOW(AMVIDEOCAP_IOC_MAGIC, 0x01, int) -#define AMVIDEOCAP_IOW_SET_WANTFRAME_WIDTH _IOW(AMVIDEOCAP_IOC_MAGIC, 0x02, int) -#define AMVIDEOCAP_IOW_SET_WANTFRAME_HEIGHT _IOW(AMVIDEOCAP_IOC_MAGIC, 0x03, int) -#define AMVIDEOCAP_IOW_SET_WANTFRAME_TIMESTAMP_MS _IOW(AMVIDEOCAP_IOC_MAGIC, 0x04, u64) -#define AMVIDEOCAP_IOW_SET_WANTFRAME_WAIT_MAX_MS _IOW(AMVIDEOCAP_IOC_MAGIC, 0x05, u64) -#define AMVIDEOCAP_IOW_SET_WANTFRAME_AT_FLAGS _IOW(AMVIDEOCAP_IOC_MAGIC, 0x06, int) - - -#define AMVIDEOCAP_IOR_GET_FRAME_FORMAT _IOR(AMVIDEOCAP_IOC_MAGIC, 0x10, int) -#define AMVIDEOCAP_IOR_GET_FRAME_WIDTH _IOR(AMVIDEOCAP_IOC_MAGIC, 0x11, int) -#define AMVIDEOCAP_IOR_GET_FRAME_HEIGHT _IOR(AMVIDEOCAP_IOC_MAGIC, 0x12, int) -#define AMVIDEOCAP_IOR_GET_FRAME_TIMESTAMP_MS _IOR(AMVIDEOCAP_IOC_MAGIC, 0x13, int) - - -#define AMVIDEOCAP_IOR_GET_SRCFRAME_FORMAT _IOR(AMVIDEOCAP_IOC_MAGIC, 0x20, int) -#define AMVIDEOCAP_IOR_GET_SRCFRAME_WIDTH _IOR(AMVIDEOCAP_IOC_MAGIC, 0x21, int) -#define AMVIDEOCAP_IOR_GET_SRCFRAME_HEIGHT _IOR(AMVIDEOCAP_IOC_MAGIC, 0x22, int) - - -#define AMVIDEOCAP_IOR_GET_STATE _IOR(AMVIDEOCAP_IOC_MAGIC, 0x31, int) -#define AMVIDEOCAP_IOW_SET_START_CAPTURE _IOW(AMVIDEOCAP_IOC_MAGIC, 0x32, int) -#define AMVIDEOCAP_IOW_SET_CANCEL_CAPTURE _IOW(AMVIDEOCAP_IOC_MAGIC, 0x33, int) - -#define AMVIDEOCAP_IOR_SET_SRC_X _IOR(AMVIDEOCAP_IOC_MAGIC, 0x40, int) -#define AMVIDEOCAP_IOR_SET_SRC_Y _IOR(AMVIDEOCAP_IOC_MAGIC, 0x41, int) -#define AMVIDEOCAP_IOR_SET_SRC_WIDTH _IOR(AMVIDEOCAP_IOC_MAGIC, 0x42, int) -#define AMVIDEOCAP_IOR_SET_SRC_HEIGHT _IOR(AMVIDEOCAP_IOC_MAGIC, 0x43, int) - -enum amvideocap_state { - AMVIDEOCAP_STATE_INIT = 0, - AMVIDEOCAP_STATE_ON_CAPTURE = 200, - AMVIDEOCAP_STATE_FINISHED_CAPTURE = 300, - AMVIDEOCAP_STATE_ERROR = 0xffff, -}; - -class CTvScreenCapture { -public: - CTvScreenCapture(); - ~CTvScreenCapture(); - - int InitVCap(sp<IMemory> Mem); - int SetVideoParameter(int width, int height, int frame); - int VideoStart(); - int GetVideoData( int *length); - int VideoStop(); - int DeinitVideoCap(); - int CapMediaPlayerVideoLayerOnly(int width, int height); - int CapOsdAndVideoLayer(int width, int height); - class CapEvent : public CTvEv { - public: - CapEvent(): CTvEv(CTvEv::TV_EVENT_HDMI_IN_CAP) {}; - ~CapEvent() {}; - - int mFrameNum; - int mFrameWide; - int mFrameHeight; - int mFrameSize; - }; - - class TvIObserver { - public: - TvIObserver() {}; - virtual ~TvIObserver() {}; - virtual void onTvEvent ( const CTvEv &ev ) = 0; - }; - - int setObserver(TvIObserver *ob) - { - mpObserver = ob; - return 0; - } - -private: - - int xioctl(int fd, int request, void *arg); - int OpenCamera(struct camera *pCameraDev); - int InitMmap(struct camera *cam) ; - //int SetFrameRate( struct camera *cam); - int InitCamera(struct camera *cam) ; - int StartCapturing(struct camera *cam); - int StopCapturing(struct camera *cam); - int UninitCamera(struct camera *cam); - int CloseCamera(struct camera *cam); - void yuv_to_rgb32(unsigned char y, unsigned char u, unsigned char v, unsigned char *rgb); - void nv21_to_rgb32(unsigned char *buf, unsigned char *rgb, int width, int height, int *len); - int AmvideocapCapFrame(char *buf, int size, int *w, int *h, int *ret_size); -private: - sp<IMemory> m_pMem; - camera m_capV4l2Cam; - unsigned int m_capNumBuffers; - - char *m_pData; - TvIObserver *mpObserver; - CapEvent mCapEvt; -}; -#endif - diff --git a/tvapi/libtv/tv/CTvSubtitle.cpp b/tvapi/libtv/tv/CTvSubtitle.cpp deleted file mode 100644 index 2b9505e..0000000 --- a/tvapi/libtv/tv/CTvSubtitle.cpp +++ b/dev/null @@ -1,654 +0,0 @@ -// -// -// amlogic 2013 -// -// @ Project : tv -// @ Date : 2013-11 -// @ Author : -// -#define LOG_TAG "CTvSubtitle" - -#include "CTvSubtitle.h" -#include "am_misc.h" -#include "am_dmx.h" - -CTvSubtitle::CTvSubtitle() -{ - mpObser = NULL; -} - -CTvSubtitle::~CTvSubtitle() -{ -} - -void CTvSubtitle::setObserver(IObserver *pObser) -{ - isSubOpen = false; - mpObser = pObser; -} - -void CTvSubtitle::setBuffer(char *share_mem) -{ - pthread_mutex_lock(&lock); - buffer = (unsigned char *)share_mem; - pthread_mutex_unlock(&lock); -} - -void CTvSubtitle::stopDecoder() -{ -} - -/** - * 开始字幕信息解析showboz sync - */ -void CTvSubtitle::startSub() -{ -} - -/** - * 停止图文/字幕信息解析 - */ -void CTvSubtitle::stop() -{ -} - -/** - * 停止图文/字幕信息解析并清除缓存数据 - */ -void CTvSubtitle::clear() -{ -} - -/** - * 在图文模式下进入下一页 - */ -void CTvSubtitle::nextPage() -{ -} - -/** - * 在图文模式下进入上一页 - */ -void CTvSubtitle::previousPage() -{ -} - -/** - * 在图文模式下跳转到指定页 - * @param page 要跳转到的页号 - */ -void CTvSubtitle::gotoPage(int page __unused) -{ -} - -/** - * 在图文模式下跳转到home页 - */ -void CTvSubtitle::goHome() -{ -} - -/** - * 在图文模式下根据颜色跳转到指定链接 - * @param color 颜色,COLOR_RED/COLOR_GREEN/COLOR_YELLOW/COLOR_BLUE - */ -void CTvSubtitle::colorLink(int color __unused) -{ -} - -/** - * 在图文模式下设定搜索字符串 - * @param pattern 搜索匹配字符串 - * @param casefold 是否区分大小写 - */ -void CTvSubtitle::setSearchPattern(char *pattern __unused, bool casefold __unused) -{ -} - -/** - * 搜索下一页 - */ -void CTvSubtitle::searchNext() -{ -} - -/** - * 搜索上一页 - */ -void CTvSubtitle::searchPrevious() -{ -} - -int CTvSubtitle::sub_init(int bmp_width, int bmp_height) -{ - pthread_mutex_init(&lock, NULL); - bmp_w = bmp_width; - bmp_h = bmp_height; - sub_w = 720; - sub_h = 576; - bmp_pitch = bmp_w * 4; - return 0; -} - -int CTvSubtitle::sub_destroy() -{ - return 0; -} - -int CTvSubtitle::sub_lock() -{ - pthread_mutex_lock(&lock); - return 0; -} - -int CTvSubtitle::sub_unlock() -{ - pthread_mutex_unlock(&lock); - return 0; -} - -int CTvSubtitle::sub_clear() -{ - return 0; -} - -static void clear_bitmap(CTvSubtitle *pSub) -{ - unsigned char *ptr = pSub->buffer; - int y = pSub->bmp_h; - - while (y--) { - memset(ptr, 0, pSub->bmp_pitch); - ptr += pSub->bmp_pitch; - } -} - -static void show_sub_cb(AM_SUB2_Handle_t handle, AM_SUB2_Picture_t *pic) -{ - LOGD("dvb callback-----------"); - - CTvSubtitle *pSub = ((CTvSubtitle *) AM_SUB2_GetUserData(handle)); - pthread_mutex_lock(&pSub->lock); - clear_bitmap(pSub); - - if (pic) { - AM_SUB2_Region_t *rgn = pic->p_region; - pSub->sub_w = pic->original_width; - pSub->sub_h = pic->original_height; - while (rgn) { - int sx, sy, dx, dy, rw, rh; - - // ensure we have a valid buffer - if (! rgn->p_buf) { - rgn = rgn->p_next; - continue; - } - - sx = 0; - sy = 0; - dx = pic->original_x + rgn->left; - dy = pic->original_y + rgn->top; - rw = rgn->width; - rh = rgn->height; - - if (dx < 0) { - sx = -dx; - dx = 0; - rw += dx; - } - - if (dx + rw > pSub->bmp_w) { - rw = pSub->bmp_w - dx; - } - - if (dy < 0) { - sy = -dy; - dy = 0; - rh += dy; - } - - if (dy + rh > pSub->bmp_h) { - rh = pSub->bmp_h - dy; - } - - if ((rw > 0) && (rh > 0)) { - unsigned char *sbegin = (unsigned char *)rgn->p_buf + sy * rgn->width + sx; - unsigned char *dbegin = pSub->buffer + dy * pSub->bmp_pitch + dx * 4; - unsigned char *src, *dst; - int size; - - while (rh) { - src = sbegin; - dst = dbegin; - size = rw; - while (size--) { - int c = src[0]; - - if (c < (int)rgn->entry) { - if (rgn->clut[c].a) { - *dst++ = rgn->clut[c].r; - *dst++ = rgn->clut[c].g; - *dst++ = rgn->clut[c].b; - } else { - dst += 3; - } - *dst++ = rgn->clut[c].a; - } else { - dst += 4; - } - src ++; - } - sbegin += rgn->width; - dbegin += pSub->bmp_pitch; - rh--; - } - } - - rgn = rgn->p_next; - } - pSub->mpObser->updateSubtitle(pic->original_width, pic->original_height); - } - pthread_mutex_unlock(&pSub->lock); - -} - -static uint64_t get_pts_cb(void *handle __unused, uint64_t pts __unused) -{ - char buf[32]; - AM_ErrorCode_t ret; - uint32_t v; - uint64_t r; - - ret = AM_FileRead("/sys/class/tsync/pts_pcrscr", buf, sizeof(buf)); - if (!ret) { - v = strtoul(buf, 0, 16); - if (pts & (1LL << 32)) { - r = ((uint64_t)v) | (1LL << 32); - } else { - r = (uint64_t)v; - } - } else { - r = 0LL; - } - - return r; -} - -static void pes_data_cb(int dev_no __unused, int fhandle __unused, - const uint8_t *data, int len, void *user_data) -{ - CTvSubtitle *pSub = ((CTvSubtitle *) user_data); - AM_PES_Decode(pSub->pes_handle, (uint8_t *)data, len); -} - -static int close_dmx(CTvSubtitle *pSub) -{ - AM_DMX_FreeFilter(pSub->dmx_id, pSub->filter_handle); - AM_DMX_Close(pSub->dmx_id); - pSub->dmx_id = -1; - pSub->filter_handle = -1; - - return 0; -} - -static int open_dmx(CTvSubtitle *pSub, int dmx_id, int pid) -{ - close_dmx(pSub); - AM_DMX_OpenPara_t op; - struct dmx_pes_filter_params pesp; - AM_ErrorCode_t ret; - - pSub->dmx_id = -1; - pSub->filter_handle = -1; - memset(&op, 0, sizeof(op)); - - ret = AM_DMX_Open(dmx_id, &op); - if (ret != AM_SUCCESS) { - LOGD("error AM_DMX_Open != AM_SUCCESS"); - goto error; - } - pSub->dmx_id = dmx_id; - - ret = AM_DMX_AllocateFilter(dmx_id, &pSub->filter_handle); - if (ret != AM_SUCCESS) { - LOGD("error AM_DMX_AllocateFilter != AM_SUCCESS"); - goto error; - } - - ret = AM_DMX_SetBufferSize(dmx_id, pSub->filter_handle, 0x80000); - if (ret != AM_SUCCESS) { - LOGD("error AM_DMX_SetBufferSize != AM_SUCCESS"); - goto error; - } - - memset(&pesp, 0, sizeof(pesp)); - pesp.pid = pid; - pesp.output = DMX_OUT_TAP; - pesp.pes_type = DMX_PES_TELETEXT0; - - ret = AM_DMX_SetPesFilter(dmx_id, pSub->filter_handle, &pesp); - if (ret != AM_SUCCESS) { - LOGD("error AM_DMX_SetPesFilter != AM_SUCCESS, err = %s", strerror(errno)); - goto error; - } - - ret = AM_DMX_SetCallback(dmx_id, pSub->filter_handle, pes_data_cb, pSub); - if (ret != AM_SUCCESS) { - LOGD("error AM_DMX_SetCallback != AM_SUCCESS"); - goto error; - } - - ret = AM_DMX_StartFilter(dmx_id, pSub->filter_handle); - if (ret != AM_SUCCESS) { - LOGD("error AM_DMX_StartFilter != AM_SUCCESS,dmx_id=%d,filter_handle=%d, ret = %d", dmx_id, pSub->filter_handle, ret); - goto error; - } - - return 0; -error: - if (pSub->filter_handle != -1) { - AM_DMX_FreeFilter(dmx_id, pSub->filter_handle); - } - if (pSub->dmx_id != -1) { - AM_DMX_Close(dmx_id); - } - - return -1; -} - -static void pes_sub_cb(AM_PES_Handle_t handle, uint8_t *buf, int size) -{ - CTvSubtitle *pSub = ((CTvSubtitle *) AM_SUB2_GetUserData(handle)); - AM_SUB2_Decode(pSub->sub_handle, buf, size); -} - -int CTvSubtitle::sub_switch_status() -{ - return isSubOpen ? 1 : 0; -} -int CTvSubtitle::sub_start_dvb_sub(int dmx_id, int pid, int page_id, int anc_page_id) -{ - LOGD("start dvb subtitle=----------------"); - - AM_PES_Para_t pesp; - AM_SUB2_Para_t subp; - int ret; - - memset(&pesp, 0, sizeof(pesp)); - pesp.packet = pes_sub_cb; - pesp.user_data = this; - ret = AM_PES_Create(&pes_handle, &pesp); - if (ret != AM_SUCCESS) { - LOGD("error AM_PES_Create != AM_SUCCESS"); - goto error; - } - - memset(&subp, 0, sizeof(subp)); - subp.show = show_sub_cb; - subp.get_pts = get_pts_cb; - subp.composition_id = page_id; - subp.ancillary_id = anc_page_id; - subp.user_data = this; - ret = AM_SUB2_Create(&sub_handle, &subp); - if (ret != AM_SUCCESS) { - LOGD("error AM_SUB2_Create != AM_SUCCESS"); - goto error; - } - - ret = AM_SUB2_Start(sub_handle); - if (ret != AM_SUCCESS) { - LOGD("error AM_SUB2_Start != AM_SUCCESS"); - goto error; - } - - ret = open_dmx(this, dmx_id, pid); - if (ret < 0) { - LOGD("error open_dmx != AM_SUCCESS"); - goto error; - } - isSubOpen = true; - return 0; -error: - if (sub_handle) { - AM_SUB2_Destroy(sub_handle); - sub_handle = NULL; - } - if (pes_handle) { - AM_PES_Destroy(pes_handle); - pes_handle = NULL; - } - return -1; -} - -int CTvSubtitle::sub_start_dtv_tt(int dmx_id __unused, int region_id __unused, int pid __unused, - int page __unused, int sub_page __unused, bool is_sub __unused) -{ - return 0; -} - -int CTvSubtitle::sub_stop_dvb_sub() -{ - pthread_mutex_lock(&lock); - close_dmx(this); - AM_SUB2_Destroy(sub_handle); - AM_PES_Destroy(pes_handle); - - clear_bitmap(this); - mpObser->updateSubtitle(0, 0); - - sub_handle = NULL; - pes_handle = NULL; - isSubOpen = false; - pthread_mutex_unlock(&lock); - return 0; -} - -int CTvSubtitle::sub_stop_dtv_tt() -{ - return 0; -} - -int CTvSubtitle::sub_tt_goto(int page __unused) -{ - return 0; -} - -int CTvSubtitle::sub_tt_color_link(int color __unused) -{ - return 0; -} - -int CTvSubtitle::sub_tt_home_link() -{ - return 0; -} - -int CTvSubtitle::sub_tt_next(int dir __unused) -{ - return 0; -} - -int CTvSubtitle::sub_tt_set_search_pattern(char *pattern __unused, bool casefold __unused) -{ - return 0; -} - -int CTvSubtitle::sub_tt_search(int dir __unused) -{ - return 0; -} - -/* - * 1, Set the country first and parameters should be either USA or KOREA -#define CMD_SET_COUNTRY_USA 0x5001 -#define CMD_SET_COUNTRY_KOREA 0x5002 - -2, Set the source type which including - a)VBI data(for analog program only) - b)USER data(for AIR or Cable service) -CMD_CC_SET_VBIDATA = 0x7001, -CMD_CC_SET_USERDATA = 0x7002, -2.1 If the frontend type is Analog we must set the channel Index - with command 'CMD_CC_SET_CHAN_NUM' and the parameter is like 57M - we set 0x20000, this should according to USA standard frequency - table. - -3, Next is to set the CC service type - -#define CMD_CC_1 0x3001 -#define CMD_CC_2 0x3002 -#define CMD_CC_3 0x3003 -#define CMD_CC_4 0x3004 - -//this doesn't support currently -#define CMD_TT_1 0x3005 -#define CMD_TT_2 0x3006 -#define CMD_TT_3 0x3007 -#define CMD_TT_4 0x3008 - -#define CMD_SERVICE_1 0x4001 -#define CMD_SERVICE_2 0x4002 -#define CMD_SERVICE_3 0x4003 -#define CMD_SERVICE_4 0x4004 -#define CMD_SERVICE_5 0x4005 -#define CMD_SERVICE_6 0x4006 - -4, Then set CMD_CC_START to start the CC service, and you needn't to stop - -CC service while switching services - -5, CMD_CC_STOP should be called in some cases like switch source, change - -program, no signal, blocked...*/ - -//channel_num == 0 ,if frontend is dtv -//else != 0 -int CTvSubtitle::sub_start_atsc_cc(enum cc_param_country country, enum cc_param_source_type src_type, int channel_num, enum cc_param_caption_type caption_type) -{ - LOGD("----sub_start_atsc_cc-1--- country=%d,src=%d,ctype=%d", country, src_type, caption_type); - switch (country) { - case CC_PARAM_COUNTRY_USA: - AM_CC_Cmd(CMD_SET_COUNTRY_USA); - break; - case CC_PARAM_COUNTRY_KOREA: - AM_CC_Cmd(CMD_SET_COUNTRY_KOREA); - break; - default: - AM_CC_Cmd(CMD_SET_COUNTRY_USA); - break; - } - - switch (src_type) { - case CC_PARAM_SOURCE_VBIDATA: - AM_CC_Cmd(CMD_CC_SET_VBIDATA); - break; - case CC_PARAM_SOURCE_USERDATA: - AM_CC_Cmd(CMD_CC_SET_USERDATA); - break; - default: - AM_CC_Cmd(CMD_CC_SET_USERDATA); - break; - } - - //just for test - if (channel_num == 0) { - } else { - //AM_CC_Cmd(CMD_CC_SET_CHAN_NUM); - } - - AM_CLOSECAPTION_cmd_t cc_t_cmd; - switch (caption_type) { - case CC_PARAM_ANALOG_CAPTION_TYPE_CC1: - cc_t_cmd = CMD_CC_1; - break; - case CC_PARAM_ANALOG_CAPTION_TYPE_CC2: - cc_t_cmd = CMD_CC_2; - break; - case CC_PARAM_ANALOG_CAPTION_TYPE_CC3: - cc_t_cmd = CMD_CC_3; - break; - case CC_PARAM_ANALOG_CAPTION_TYPE_CC4: - cc_t_cmd = CMD_CC_4; - break; - case CC_PARAM_DIGITAL_CAPTION_TYPE_SERVICE1: - cc_t_cmd = CMD_SERVICE_1; - break; - case CC_PARAM_DIGITAL_CAPTION_TYPE_SERVICE2: - cc_t_cmd = CMD_SERVICE_2; - break; - case CC_PARAM_DIGITAL_CAPTION_TYPE_SERVICE3: - cc_t_cmd = CMD_SERVICE_3; - break; - case CC_PARAM_DIGITAL_CAPTION_TYPE_SERVICE4: - cc_t_cmd = CMD_SERVICE_4; - break; - default: - cc_t_cmd = CMD_SERVICE_1; - break; - } - AM_CC_Cmd(cc_t_cmd); - - AM_CC_Set_CallBack(close_caption_callback, this); - AM_VCHIP_Set_CallBack(atv_vchip_callback, this); - //start - AM_CC_Cmd(CMD_CC_START); - LOGD("----sub_start_atsc_cc-2--- country=%d,src=%d,ctype=%d", country, src_type, caption_type); - return 0; -} - -int CTvSubtitle::sub_stop_atsc_cc() -{ - LOGD("----sub_stop_atsc_cc----"); - AM_CC_Cmd(CMD_CC_STOP); - return 0; -} - -int CTvSubtitle::ResetVchipChgStat() -{ - avchip_chg = 0; - AM_CC_Cmd(CMD_VCHIP_RST_CHGSTAT); - return 0; -} - -int CTvSubtitle::IsVchipChange() -{ - return avchip_chg; -} - -//cnt :data buf len -//databuf len is max 512 -//cmdbuf len is max 128 -void CTvSubtitle::close_caption_callback(char *str, int cnt, int data_buf[], int cmd_buf[], void *user_data) -{ - /* - CTvSubtitle *pSub = (CTvSubtitle *)user_data; - - if (pSub == NULL) - { - LOGD("sub cc callback is null user data for this"); - return; - } - - if (pSub->mpObser == NULL) return; - - pSub->mCurCCEv.mDataBufSize = cnt; - pSub->mCurCCEv.mpDataBuffer = data_buf; - pSub->mCurCCEv.mCmdBufSize = 128;//max - pSub->mCurCCEv.mpCmdBuffer = cmd_buf; - - pSub->mpObser->onEvent(pSub->mCurCCEv); - */ - - str = str; - cnt = cnt; - data_buf = data_buf; - cmd_buf = cmd_buf; - user_data = user_data; -} - -void CTvSubtitle::atv_vchip_callback(int Is_chg, void *user_data) -{ - CTvSubtitle *pSub = (CTvSubtitle *)user_data; - pSub->avchip_chg = Is_chg; -} - diff --git a/tvapi/libtv/tv/CTvSubtitle.h b/tvapi/libtv/tv/CTvSubtitle.h deleted file mode 100644 index 284f982..0000000 --- a/tvapi/libtv/tv/CTvSubtitle.h +++ b/dev/null @@ -1,250 +0,0 @@ -// -// -// amlogic 2013 -// -// @ Project : tv -// @ File Name : CTvSubtitle.h -// @ Date : 2013-11 -// @ Author : -// -// -#if !defined(_CTVSUBTITLE_H) -#define _CTVSUBTITLE_H -#include <stdlib.h> -#include "CTvLog.h" -using namespace android; -#include "am_cc.h" -#include "am_sub2.h" -#include "am_pes.h" -#include "CTvEv.h" - -enum cc_param_country { - CC_PARAM_COUNTRY_USA = 0, - CC_PARAM_COUNTRY_KOREA, -}; - -enum cc_param_source_type { - CC_PARAM_SOURCE_VBIDATA = 0, - CC_PARAM_SOURCE_USERDATA, -}; - -enum cc_param_caption_type { - CC_PARAM_ANALOG_CAPTION_TYPE_CC1 = 0, - CC_PARAM_ANALOG_CAPTION_TYPE_CC2, - CC_PARAM_ANALOG_CAPTION_TYPE_CC3, - CC_PARAM_ANALOG_CAPTION_TYPE_CC4, - CC_PARAM_ANALOG_CAPTION_TYPE_TEXT1, - CC_PARAM_ANALOG_CAPTION_TYPE_TEXT2, - CC_PARAM_ANALOG_CAPTION_TYPE_TEXT3, - CC_PARAM_ANALOG_CAPTION_TYPE_TEXT4, - // - CC_PARAM_DIGITAL_CAPTION_TYPE_SERVICE1, - CC_PARAM_DIGITAL_CAPTION_TYPE_SERVICE2, - CC_PARAM_DIGITAL_CAPTION_TYPE_SERVICE3, - CC_PARAM_DIGITAL_CAPTION_TYPE_SERVICE4, - CC_PARAM_DIGITAL_CAPTION_TYPE_SERVICE5, - CC_PARAM_DIGITAL_CAPTION_TYPE_SERVICE6, -}; - -class CTvSubtitle { -public: - class IObserver { - public: - IObserver() {}; - virtual ~IObserver() {}; - //virtual void onEvent(const CloseCaptionEvent &ev); - virtual void updateSubtitle(int, int) {}; - }; - - AM_SUB2_Handle_t sub_handle; - AM_PES_Handle_t pes_handle; - int dmx_id; - int filter_handle; - int bmp_w; - int bmp_h; - int bmp_pitch; - unsigned char *buffer; - int sub_w; - int sub_h; - pthread_mutex_t lock; - - IObserver *mpObser; - CTvSubtitle(); - ~CTvSubtitle(); - - class CloseCaptionEvent: public CTvEv { - public: - //static const int CC_CMD_LEN = 128; - //static const int CC_DATA_LEN = 512; - CloseCaptionEvent(): CTvEv(CTvEv::TV_EVENT_CC) - { - } - ~CloseCaptionEvent() - { - } - public: - int mCmdBufSize; - int *mpCmdBuffer; - int mDataBufSize; - int *mpDataBuffer; - }; - - void setObserver(IObserver *pObser); - void setBuffer(char *share_mem); - void stopDecoder(); - /** - * 开始字幕信息解析showboz sync - */ - void startSub(); - /** - * 停止图文/字幕信息解析 - */ - void stop(); - - /** - * 停止图文/字幕信息解析并清除缓存数据 - */ - void clear(); - /** - * 在图文模式下进入下一页 - */ - void nextPage(); - /** - * 在图文模式下进入上一页 - */ - void previousPage(); - /** - * 在图文模式下跳转到指定页 - * @param page 要跳转到的页号 - */ - void gotoPage(int page); - - /** - * 在图文模式下跳转到home页 - */ - void goHome(); - /** - * 在图文模式下根据颜色跳转到指定链接 - * @param color 颜色,COLOR_RED/COLOR_GREEN/COLOR_YELLOW/COLOR_BLUE - */ - void colorLink(int color); - - /** - * 在图文模式下设定搜索字符串 - * @param pattern 搜索匹配字符串 - * @param casefold 是否区分大小写 - */ - void setSearchPattern(char *pattern, bool casefold); - /** - * 搜索下一页 - */ - void searchNext(); - /** - * 搜索上一页 - */ - void searchPrevious(); - - int sub_init(int, int); - // - int sub_destroy(); - // - int sub_lock(); - // - int sub_unlock(); - // - int sub_clear(); - // - int sub_switch_status(); - int sub_start_dvb_sub(int dmx_id, int pid, int page_id, int anc_page_id); - // - int sub_start_dtv_tt(int dmx_id, int region_id, int pid, int page, int sub_page, bool is_sub); - // - int sub_stop_dvb_sub(); - // - int sub_stop_dtv_tt(); - // - int sub_tt_goto(int page); - // - int sub_tt_color_link(int color); - // - int sub_tt_home_link(); - // - int sub_tt_next(int dir); - // - int sub_tt_set_search_pattern(char *pattern, bool casefold); - // - int sub_tt_search(int dir); - // - int sub_start_atsc_cc(enum cc_param_country country, enum cc_param_source_type src_type, int channel_num, enum cc_param_caption_type caption_type); - // - int sub_stop_atsc_cc(); - static void close_caption_callback(char *str, int cnt, int data_buf[], int cmd_buf[], void *user_data); - static void atv_vchip_callback(int Is_chg, void *user_data); - int IsVchipChange(); - int ResetVchipChgStat(); -private: - - /** - * DVB subtitle 参数 - */ - struct DVBSubParams { - int mDmx_id; - int mPid; - int mComposition_page_id; - int mAncillary_page_id; - - /** - * 创建DVB subtitle参数 - * @param dmx_id 接收使用demux设备的ID - * @param pid subtitle流的PID - * @param page_id 字幕的page_id - * @param anc_page_id 字幕的ancillary_page_id - */ - DVBSubParams() - { - } - DVBSubParams(int dmx_id, int pid, int page_id, int anc_page_id) - { - mDmx_id = dmx_id; - mPid = pid; - mComposition_page_id = page_id; - mAncillary_page_id = anc_page_id; - } - }; - - /** - * 数字电视teletext图文参数 - */ - struct DTVTTParams { - int mDmx_id; - int mPid; - int mPage_no; - int mSub_page_no; - int mRegion_id; - - DTVTTParams() - { - } - /** - * 创建数字电视teletext图文参数 - * @param dmx_id 接收使用demux设备的ID - * @param pid 图文信息流的PID - * @param page_no 要显示页号 - * @param sub_page_no 要显示的子页号 - */ - DTVTTParams(int dmx_id, int pid, int page_no, int sub_page_no, int region_id) - { - mDmx_id = dmx_id; - mPid = pid; - mPage_no = page_no; - mSub_page_no = sub_page_no; - mRegion_id = region_id; - } - }; - - int mSubType; - CloseCaptionEvent mCurCCEv; - int avchip_chg; - bool isSubOpen; -}; -#endif //_CTVSUBTITLE_H diff --git a/tvapi/libtv/tv/CTvTime.cpp b/tvapi/libtv/tv/CTvTime.cpp deleted file mode 100644 index 10b9f7a..0000000 --- a/tvapi/libtv/tv/CTvTime.cpp +++ b/dev/null @@ -1,64 +0,0 @@ -// -// -// amlogic 2013 -// -// @ Project : tv -// @ File Name : CTvChannel.h -// @ Date : 2013-11 -// @ Author : -// -#define LOG_TAG "CTvTime" - -#include "CTvTime.h" - -/** - *设定当前时间 - *@param time 当前时间(毫秒单位) - */ -long CTvTime::getSysUTCTime() -{ - //struct tm tm; - //time_t t; - //int64_t r = mktime_tz(&(tm), NULL); - //time_t t = time(NULL); - //LOGD("---------utc t = %ld time t=%ld", r, t); - return 0; -} - -void CTvTime::setTime(long t) -{ - //long utcMS; - //time(&utcMS); - //nsecs_t ns = systemTime(CLOCK_REALTIME); - //nsecs_t tm = ns2s(ns); - //unsigned long ticks = times(NULL); - //long tm = ticks/mHZ; - struct sysinfo s_info; - int error; - error = sysinfo(&s_info); - - mDiff = t - s_info.uptime; - LOGD("--- mDiff=%ld", mDiff); -} - -/** - *取得当前时间 - *@return 返回当前时间 - */ -long CTvTime::getTime() -{ - //long utcMS; - //time(&utcMS); - //nsecs_t ns = systemTime(CLOCK_REALTIME); - //nsecs_t sec = ns2s(ns); - - //unsigned long ticks = times(NULL); - //long sec = ticks/mHZ; - struct sysinfo s_info; - int error; - error = sysinfo(&s_info); - - - LOGD("--- mDiff=%ld, sec=%ld", mDiff, s_info.uptime); - return s_info.uptime + mDiff; -} diff --git a/tvapi/libtv/tv/CTvTime.h b/tvapi/libtv/tv/CTvTime.h deleted file mode 100644 index ef41ddb..0000000 --- a/tvapi/libtv/tv/CTvTime.h +++ b/dev/null @@ -1,56 +0,0 @@ -// -// -// amlogic 2013 -// -// @ Project : tv -// @ File Name : CTvChannel.h -// @ Date : 2013-11 -// @ Author : -// -// - -#ifndef _C_TV_TIME_H_ -#define _C_TV_TIME_H_ - -#include <utils/Timers.h> -#include "CTvLog.h" -#include <time.h> -//#include <cutils/tztime.h> -#include <sys/times.h> -#include <sys/sysinfo.h> - -/** - *TV时间管理 - */ -class CTvTime { -public: - CTvTime() { - mDiff = 0; - mHZ = sysconf( _SC_CLK_TCK ); - } - - long getSysUTCTime(); - void setTime(long t); - long getTime(); - - /** - *取得TDT/STT与系统时间的差值 - *@return 返回差值时间 - */ - long getDiffTime() { - return mDiff; - } - - /** - *设置TDT/STT与系统时间的差值 - */ - void setDiffTime(long diff) { - mDiff = diff; - } - -private: - long mDiff; - unsigned long mHZ; -}; -#endif/*_C_TV_TIME_H_*/ - diff --git a/tvapi/libtv/tv/CTvVchipCheck.cpp b/tvapi/libtv/tv/CTvVchipCheck.cpp deleted file mode 100644 index e83afcb..0000000 --- a/tvapi/libtv/tv/CTvVchipCheck.cpp +++ b/dev/null @@ -1,163 +0,0 @@ -#include "CTvVchipCheck.h" -CTvVchipCheck:: CTvVchipCheck() -{ -} - -CTvVchipCheck:: ~CTvVchipCheck() -{ -} - -bool CTvVchipCheck::CheckProgramBlock(int id) -{ - bool lock = false; - CTvProgram prog; - CTvEvent ev; - int ret = 0; - - ret = CTvProgram::selectByID(id, prog); - if (ret != 0) return false; - - int type = prog.getProgType(); - - if (type == CTvProgram::TYPE_ATV) { - ret = ev.getATVProgEvent(prog.getSrc(), prog.getID(), ev); - } else { - //long epgtime = mDmTime.getTime(); - //ret = ev.getProgPresentEvent(prog.getSrc(),prog.getSourceId(), epgtime, ev); - } - if (ret == 0) { - if (prog.isATSCMode()) { - // ATSC V-Chip - Vector<CTvDimension::VChipRating *> definedRatings = ev.getVChipRatings(); - for (int i = 0; i < (int)definedRatings.size(); i++) { - CTvDimension dm; - if (dm.isBlocked(dm, definedRatings[i])) { - lock = true; - { - /*CurvchipDimension = dm.getName(); - CurvchipAbbrev = dm.getAbbrev(definedRatings[i]->getValue()); - CurvchipText= dm.getText(definedRatings[i]->getValue()); - LOGD("%s, %d Dimension:%s, Abbrev: %s, idx:%d","TV",__LINE__,CurvchipDimension.string(), - CurvchipAbbrev.string(),definedRatings[i]->getValue());*/ - } - break; - } - } - } - } else { - LOGD("Present event of playing program not received yet, will unblock this program."); - } - - return lock; -} - -void *CTvVchipCheck::VchipCheckingThread (void *arg __unused) -{ - /*CTv *pt = static_cast<CTv *> ( arg ); - - if ( !pt->IsVchipEnable() ) { - return NULL; - } - - while ( pt->mvchip_running ) { - bool lock = 0; - String8 curdm; - String8 curabbrev; - tvin_info_t siginfo = pt->Tv_GetCurrentSignalInfo(); - - //if ( TVIN_SIG_STATUS_STABLE == siginfo.status ) { - lock = pt->mTvVchip.CheckProgramBlock ( pt->getDTVProgramID() ); - curdm = pt->mTvVchip.getCurdimension(); - curabbrev = pt->mTvVchip.getCurAbbr(); - - if ( ( lock != pt->mlastlockstatus ) || ( pt->mlastdm != curdm ) || ( pt->mlastabbrev != curabbrev ) ) { - pt->mlastlockstatus = lock; - pt->mlastdm = curdm; - pt->mlastabbrev = curabbrev; - BlockEvent evt; - - if ( lock ) { - evt.programBlockType = 0; - evt.block_status = 1; - evt.vchipDimension = curdm; - evt.vchipAbbrev = curdm; - LOGD ( "%s, %d block the program by type %s, %s", "TV", __LINE__, curdm.string(), curabbrev.string() ); - } else { - LOGD ( "unblock the program" ); - evt.programBlockType = 0; - evt.block_status = 0; - } - - pt->sendTvEvent ( evt ); - pt->Programblock ( lock ); - } - - usleep ( 1000 * 1000 ); - //} else { - //usleep ( 500 * 1000 ); - //} - }*/ - - return NULL; -} - -int CTvVchipCheck::stopVChipCheck() -{ - CMutex::Autolock _l ( mLock ); - LOGD ( "stopVChipCheck() and exit thread" ); - requestExit(); - return 0; -} - -int CTvVchipCheck::pauseVChipCheck() -{ - CMutex::Autolock _l ( mLock ); - LOGD ( "pauseVChipCheck() set request pause flag, when flag true, thread loop go pause on condition" ); - m_request_pause_detect = true; - return 0; -} - -int CTvVchipCheck::requestAndWaitPauseVChipCheck() -{ - CMutex::Autolock _l ( mLock ); - LOGD ( "requestAndWaitPauseVChipCheck(),first set pause flag to true, and wait when loop run to pause code segment" ); - m_request_pause_detect = true; - - if ( mDetectState == STATE_RUNNING ) { - mRequestPauseCondition.wait ( mLock ); - } - - return 0; -} - -int CTvVchipCheck::resumeVChipCheck() -{ - CMutex::Autolock _l ( mLock ); - LOGD ( "resumeVChipCheck() first set flag false, and signal to paused condition, let run loop" ); - m_request_pause_detect = false; - mDetectPauseCondition.signal(); - return 0; -} - -bool CTvVchipCheck::threadLoop() -{ - while ( !exitPending() ) { //requietexit() or requietexitWait() not call - while ( m_request_pause_detect ) { - mRequestPauseCondition.broadcast(); - mLock.lock(); - mDetectState = STATE_PAUSE; - mDetectPauseCondition.wait ( mLock ); //first unlock,when return,lock again,so need,call unlock - mDetectState = STATE_RUNNING; - mLock.unlock(); - } - //loop codes - - if ( !m_request_pause_detect ) { //not request pause, sleep 1s which loop - usleep ( 1000 * 1000 ); - } - } - //exit - mDetectState = STATE_STOPED; - //return true, run again, return false,not run. - return false; -} diff --git a/tvapi/libtv/tv/CTvVchipCheck.h b/tvapi/libtv/tv/CTvVchipCheck.h deleted file mode 100644 index d254c6c..0000000 --- a/tvapi/libtv/tv/CTvVchipCheck.h +++ b/dev/null @@ -1,49 +0,0 @@ -// -// -// amlogic 2013 -// -// @ Project : tv -// @ File Name : CTvDimension.h -// @ Date : 2013-11 -// @ Author : -// -// - -#if !defined(_CTVVCHIPCHECK_H) -#define _CTVVCHIPCHECK_H -#include <utils/Vector.h> -#include "CTvDatabase.h" -#include <utils/String8.h> -#include <stdlib.h> -#include "CTvDimension.h" -#include "CTvProgram.h" -#include "CTvTime.h" -#include "CTvEvent.h" -#include "CTvLog.h" -#include "tvutils/CThread.h" -// TV ATSC rating dimension -class CTvVchipCheck: public CThread { -public: - CTvVchipCheck(); - ~CTvVchipCheck(); - bool CheckProgramBlock(int id); - static void *VchipCheckingThread ( void *arg ); - int startVChipCheck(); - int stopVChipCheck(); - int pauseVChipCheck(); - int resumeVChipCheck(); - int requestAndWaitPauseVChipCheck(); -private: - bool threadLoop(); - mutable CMutex mLock; - CCondition mDetectPauseCondition; - CCondition mRequestPauseCondition; - volatile bool m_request_pause_detect; - enum DetectState { - STATE_STOPED = 0, - STATE_RUNNING, - STATE_PAUSE - }; - int mDetectState; -}; -#endif //_CTVDIMENSION_H diff --git a/tvapi/libtv/tv/CUpgradeFBC.cpp b/tvapi/libtv/tv/CUpgradeFBC.cpp deleted file mode 100644 index 6847a55..0000000 --- a/tvapi/libtv/tv/CUpgradeFBC.cpp +++ b/dev/null @@ -1,553 +0,0 @@ -#define LOG_TAG "CUpgradeFBC" - -#include <CTvLog.h> -#include <stdio.h> -#include <stdlib.h> -#include <unistd.h> -#include <sys/prctl.h> -#include <fcntl.h> -#include <errno.h> - -#include <cutils/log.h> - -#include "CUpgradeFBC.h" - -CUpgradeFBC::CUpgradeFBC() -{ - mUpgradeMode = CC_UPGRADE_MODE_MAIN; - mFileName[0] = 0; - - mOPTotalSize = 0; - mBinFileSize = 0; - mBinFileBuf = NULL; - mUpgradeBlockSize = 0x10000; - - mpObserver = NULL; - mState = STATE_STOPED; - mCfbcIns = GetSingletonFBC(); - mCfbcIns->SetUpgradeFlag(0); -} - -CUpgradeFBC::~CUpgradeFBC() -{ - if (mBinFileBuf != NULL) { - delete mBinFileBuf; - mBinFileBuf = NULL; - } -} - -int CUpgradeFBC::start() -{ - if (mState == STATE_STOPED || mState == STATE_ABORT || mState == STATE_FINISHED) { - mCfbcIns->SetUpgradeFlag(1); - - this->run(); - } - - return 0; -} - -int CUpgradeFBC::stop() -{ - requestExit(); - mState = STATE_STOPED; - - return 0; -} - -int CUpgradeFBC::GetUpgradeFBCProgress() -{ - return 0; -} - -int CUpgradeFBC::SetUpgradeFileName(char *file_name) -{ - if (file_name == NULL) { - return -1; - } - - strcpy(mFileName, file_name); - - return 0; -} - -int CUpgradeFBC::SetUpgradeFileSize(int file_size) -{ - mBinFileSize = file_size; - return 0; -} - -int CUpgradeFBC::SetUpgradeBlockSize(int block_size) -{ - mUpgradeBlockSize = block_size; - return 0; -} - -int CUpgradeFBC::SetUpgradeMode(int mode) -{ - int tmp_val = 0; - - tmp_val = mUpgradeMode; - mUpgradeMode = mode; - - return tmp_val; -} - -int CUpgradeFBC::AddCRCToDataBuf(unsigned char data_buf[], int data_len) -{ - unsigned int tmp_crc = 0; - - tmp_crc = mCfbcIns->Calcrc32(0, data_buf, data_len); - data_buf[data_len + 0] = (tmp_crc >> 0) & 0xFF; - data_buf[data_len + 1] = (tmp_crc >> 8) & 0xFF; - data_buf[data_len + 2] = (tmp_crc >> 16) & 0xFF; - data_buf[data_len + 3] = (tmp_crc >> 24) & 0xFF; - - return 0; -} - -bool CUpgradeFBC::threadLoop() -{ - int file_handle = -1; - int i = 0, tmp_flag = 0, cmd_len = 0, tmp_prog = 0, total_item = 0; - int start_off = 0, end_off = 0, cur_off = 0, old_off = 0, rw_size = 0; - int upgrade_version = 0, upgrade_flag = 0, upgrade_err_code = 0, upgrade_try_cnt = 0; - int upgrade_pq_wb_flag = 0; - unsigned char tmp_buf[128] = {0}; - - if (mpObserver == NULL) { - return false; - } - - LOGD("%s, entering...\n", "TV"); - - prctl(PR_SET_NAME, (unsigned long)"CUpgradeFBC thread loop"); - - mState = STATE_RUNNING; - - LOGD("%s, upgrade mode = %d\n", __FUNCTION__, mUpgradeMode); - if (mUpgradeMode != CC_UPGRADE_MODE_BOOT_MAIN && mUpgradeMode != CC_UPGRADE_MODE_BOOT && - mUpgradeMode != CC_UPGRADE_MODE_MAIN && mUpgradeMode != CC_UPGRADE_MODE_COMPACT_BOOT && - mUpgradeMode != CC_UPGRADE_MODE_ALL && mUpgradeMode != CC_UPGRADE_MODE_MAIN_PQ_WB && - mUpgradeMode != CC_UPGRADE_MODE_ALL_PQ_WB && mUpgradeMode != CC_UPGRADE_MODE_MAIN_WB && - mUpgradeMode != CC_UPGRADE_MODE_ALL_WB && mUpgradeMode != CC_UPGRADE_MODE_MAIN_PQ && - mUpgradeMode != CC_UPGRADE_MODE_ALL_PQ && mUpgradeMode != CC_UPGRADE_MODE_PQ_WB_ONLY && - mUpgradeMode != CC_UPGRADE_MODE_WB_ONLY && mUpgradeMode != CC_UPGRADE_MODE_PQ_ONLY && - mUpgradeMode != CC_UPGRADE_MODE_CUR_PQ_BIN && mUpgradeMode != CC_UPGRADE_MODE_BURN && - mUpgradeMode != CC_UPGRADE_MODE_DUMMY) { - mState = STATE_ABORT; - upgrade_err_code = ERR_NOT_SUPPORT_UPGRADE_MDOE; - mpObserver->onUpgradeStatus(mState, upgrade_err_code); - mCfbcIns->SetUpgradeFlag(0); - - return false; - } - - if (mUpgradeBlockSize % 0x1000 != 0) { - mState = STATE_ABORT; - upgrade_err_code = ERR_NOT_CORRECT_UPGRADE_BLKSIZE; - mpObserver->onUpgradeStatus(mState, upgrade_err_code); - mCfbcIns->SetUpgradeFlag(0); - - return false; - } - - struct stat tmp_st; - stat(mFileName, &tmp_st); - if (tmp_st.st_size == CC_FBC_V01_FILE_SIZE) { - upgrade_version = CC_FBC_V01_00_VAL; - mOPTotalSize = CC_UPGRADE_V01_ALL_LENGTH; - mBinFileSize = CC_FBC_V01_FILE_SIZE; - } else if (tmp_st.st_size == CC_FBC_V02_FILE_SIZE) { - upgrade_version = CC_FBC_V02_00_VAL; - mOPTotalSize = CC_UPGRADE_V02_ALL_LENGTH; - mBinFileSize = CC_FBC_V02_FILE_SIZE; - } else if (tmp_st.st_size == CC_FBC_V02_CUR_PQ_BIN_FILE_SIZE) { - upgrade_version = CC_FBC_V02_01_VAL; - mOPTotalSize = CC_UPGRADE_V02_ALL_LENGTH; - mBinFileSize = CC_FBC_V02_CUR_PQ_BIN_FILE_SIZE; - } else if (tmp_st.st_size == CC_FBC_V03_FILE_SIZE) { - upgrade_version = CC_FBC_V03_00_VAL; - mOPTotalSize = CC_UPGRADE_V03_ALL_LENGTH; - mBinFileSize = CC_FBC_V03_FILE_SIZE; - } else if (tmp_st.st_size == CC_FBC_V03_CUR_PQ_BIN_FILE_SIZE) { - upgrade_version = CC_FBC_V03_01_VAL; - mOPTotalSize = CC_UPGRADE_V03_ALL_LENGTH; - mBinFileSize = CC_FBC_V03_CUR_PQ_BIN_FILE_SIZE; - } else { - upgrade_version = 0; - mOPTotalSize = 0; - mBinFileSize = 0; - mState = STATE_ABORT; - upgrade_err_code = ERR_BIN_FILE_SIZE; - mpObserver->onUpgradeStatus(mState, upgrade_err_code); - mCfbcIns->SetUpgradeFlag(0); - return false; - } - - //open upgrade source file and read it to temp buffer. - file_handle = open(mFileName, O_RDONLY); - if (file_handle < 0) { - LOGE("%s, Can't Open file %s\n", __FUNCTION__, mFileName); - mState = STATE_ABORT; - upgrade_err_code = ERR_OPEN_BIN_FILE; - mpObserver->onUpgradeStatus(mState, upgrade_err_code); - mCfbcIns->SetUpgradeFlag(0); - return false; - } - - lseek(file_handle, 0, SEEK_SET); - - mBinFileBuf = new unsigned char[mOPTotalSize]; - - memset(mBinFileBuf, 0, mOPTotalSize); - rw_size = read(file_handle, mBinFileBuf, mBinFileSize); - if (rw_size != mBinFileSize || rw_size <= 0) { - LOGE("%s, read file %s error(%d, %d)\n", __FUNCTION__, mFileName, mBinFileSize, rw_size); - mState = STATE_ABORT; - upgrade_err_code = ERR_READ_BIN_FILE; - mpObserver->onUpgradeStatus(mState, upgrade_err_code); - mCfbcIns->SetUpgradeFlag(0); - - if (mBinFileBuf != NULL) { - delete mBinFileBuf; - mBinFileBuf = NULL; - } - return false; - } - - close(file_handle); - file_handle = -1; - - if (upgrade_version == CC_FBC_V02_00_VAL) { - memcpy((void *)(mBinFileBuf + CC_UPGRADE_V02_BOOT_BAK_OFFSET), (void *)(mBinFileBuf + CC_UPGRADE_V02_BOOT_OFFSET), CC_UPGRADE_V02_BOOT_LEN); - memcpy((void *)(mBinFileBuf + CC_UPGRADE_V02_MAIN_BAK_OFFSET), (void *)(mBinFileBuf + CC_UPGRADE_V02_MAIN_OFFSET), CC_UPGRADE_V02_MAIN_LEN); - } else if (upgrade_version == CC_FBC_V02_01_VAL) { - memcpy((void *)(mBinFileBuf + CC_UPGRADE_V02_CUR_PQ_OFFSET), (void *)(mBinFileBuf + 0), CC_FBC_V02_CUR_PQ_BIN_FILE_SIZE); - } else if (upgrade_version == CC_FBC_V03_01_VAL) { - memcpy((void *)(mBinFileBuf + CC_UPGRADE_V03_CUR_PQ_OFFSET), (void *)(mBinFileBuf + 0), CC_FBC_V03_CUR_PQ_BIN_FILE_SIZE); - } - - //calculate start addr - if (upgrade_version == CC_FBC_V01_00_VAL) { - start_off = CC_UPGRADE_V01_MAIN_OFFSET; - end_off = 0; - if (mUpgradeMode == CC_UPGRADE_MODE_ALL || mUpgradeMode == CC_UPGRADE_MODE_BOOT_MAIN) { - start_off = CC_UPGRADE_V01_BOOT_OFFSET; - end_off = CC_UPGRADE_V01_BOOT_OFFSET + CC_UPGRADE_V01_ALL_LENGTH; - total_item = (end_off - start_off) / mUpgradeBlockSize + 2; - } else if (mUpgradeMode == CC_UPGRADE_MODE_BOOT) { - start_off = CC_UPGRADE_V01_BOOT_OFFSET; - end_off = CC_UPGRADE_V01_BOOT_OFFSET + CC_UPGRADE_V01_BOOT_LEN; - total_item = (end_off - start_off) / mUpgradeBlockSize + 2; - } else if (mUpgradeMode == CC_UPGRADE_MODE_MAIN) { - start_off = CC_UPGRADE_V01_MAIN_OFFSET; - end_off = CC_UPGRADE_V01_MAIN_OFFSET + CC_UPGRADE_V01_MAIN_LEN; - total_item = (end_off - start_off) / mUpgradeBlockSize + 2; - } - } else if (upgrade_version == CC_FBC_V02_00_VAL) { - start_off = CC_UPGRADE_V02_MAIN_OFFSET; - end_off = 0; - if (mUpgradeMode == CC_UPGRADE_MODE_ALL || mUpgradeMode == CC_UPGRADE_MODE_ALL_PQ_WB || - mUpgradeMode == CC_UPGRADE_MODE_ALL_WB || mUpgradeMode == CC_UPGRADE_MODE_ALL_PQ) { - start_off = CC_UPGRADE_V02_COMPACT_BOOT_OFFSET; - end_off = CC_UPGRADE_V02_COMPACT_BOOT_OFFSET + CC_UPGRADE_V02_ALL_LENGTH; - total_item = (end_off - start_off) / mUpgradeBlockSize + 2; - } else if (mUpgradeMode == CC_UPGRADE_MODE_BOOT) { - start_off = CC_UPGRADE_V02_BOOT_OFFSET; - end_off = CC_UPGRADE_V02_BOOT_OFFSET + CC_UPGRADE_V02_BOOT_LEN; - total_item = (end_off - start_off) / mUpgradeBlockSize + 2; - } else if (mUpgradeMode == CC_UPGRADE_MODE_MAIN || mUpgradeMode == CC_UPGRADE_MODE_MAIN_PQ_WB || - mUpgradeMode == CC_UPGRADE_MODE_MAIN_WB || mUpgradeMode == CC_UPGRADE_MODE_MAIN_PQ ) { - start_off = CC_UPGRADE_V02_MAIN_OFFSET; - end_off = CC_UPGRADE_V02_MAIN_OFFSET + CC_UPGRADE_V02_MAIN_LEN; - total_item = (end_off - start_off) / mUpgradeBlockSize + 2; - } else if (mUpgradeMode == CC_UPGRADE_MODE_COMPACT_BOOT) { - start_off = CC_UPGRADE_V02_COMPACT_BOOT_OFFSET; - end_off = CC_UPGRADE_V02_COMPACT_BOOT_OFFSET + CC_UPGRADE_V02_COMPACT_BOOT_LEN; - total_item = (end_off - start_off) / mUpgradeBlockSize + 2; - } else if (mUpgradeMode == CC_UPGRADE_MODE_BOOT_MAIN) { - start_off = CC_UPGRADE_V02_BOOT_OFFSET; - end_off = CC_UPGRADE_V02_BOOT_OFFSET + CC_UPGRADE_V02_BOOT_LEN + CC_UPGRADE_V02_MAIN_LEN; - total_item = (end_off - start_off) / mUpgradeBlockSize + 2; - } - } else if (upgrade_version == CC_FBC_V02_01_VAL) { - start_off = CC_UPGRADE_V02_CUR_PQ_OFFSET; - end_off = 0; - if (mUpgradeMode == CC_UPGRADE_MODE_CUR_PQ_BIN) { - start_off = CC_UPGRADE_V02_CUR_PQ_OFFSET; - end_off = CC_UPGRADE_V02_CUR_PQ_OFFSET + CC_FBC_V02_CUR_PQ_BIN_FILE_SIZE; - total_item = (end_off - start_off) / mUpgradeBlockSize + 2; - } - } else if (upgrade_version == CC_FBC_V03_00_VAL) { - start_off = CC_UPGRADE_V03_MAIN_OFFSET; - end_off = 0; - if (mUpgradeMode == CC_UPGRADE_MODE_ALL || mUpgradeMode == CC_UPGRADE_MODE_ALL_PQ_WB || - mUpgradeMode == CC_UPGRADE_MODE_ALL_WB || mUpgradeMode == CC_UPGRADE_MODE_ALL_PQ) { - start_off = CC_UPGRADE_V03_COMPACT_BOOT_OFFSET; - end_off = CC_UPGRADE_V03_COMPACT_BOOT_OFFSET + CC_UPGRADE_V03_ALL_LENGTH; - total_item = (end_off - start_off) / mUpgradeBlockSize + 2; - } else if (mUpgradeMode == CC_UPGRADE_MODE_BOOT) { - start_off = CC_UPGRADE_V03_BOOT_OFFSET; - end_off = CC_UPGRADE_V03_BOOT_OFFSET + CC_UPGRADE_V03_BOOT_LEN; - total_item = (end_off - start_off) / mUpgradeBlockSize + 2; - } else if (mUpgradeMode == CC_UPGRADE_MODE_MAIN || mUpgradeMode == CC_UPGRADE_MODE_MAIN_PQ_WB || - mUpgradeMode == CC_UPGRADE_MODE_MAIN_WB || mUpgradeMode == CC_UPGRADE_MODE_MAIN_PQ ) { - start_off = CC_UPGRADE_V03_MAIN_OFFSET; - end_off = CC_UPGRADE_V03_MAIN_OFFSET + CC_UPGRADE_V03_MAIN_LEN; - total_item = (end_off - start_off) / mUpgradeBlockSize + 2; - } else if (mUpgradeMode == CC_UPGRADE_MODE_COMPACT_BOOT) { - start_off = CC_UPGRADE_V03_COMPACT_BOOT_OFFSET; - end_off = CC_UPGRADE_V03_COMPACT_BOOT_OFFSET + CC_UPGRADE_V03_COMPACT_BOOT_LEN; - total_item = (end_off - start_off) / mUpgradeBlockSize + 2; - } else if (mUpgradeMode == CC_UPGRADE_MODE_BOOT_MAIN) { - start_off = CC_UPGRADE_V03_BOOT_OFFSET; - end_off = CC_UPGRADE_V03_BOOT_OFFSET + CC_UPGRADE_V03_BOOT_LEN + CC_UPGRADE_V03_MAIN_LEN; - total_item = (end_off - start_off) / mUpgradeBlockSize + 2; - } else if (mUpgradeMode == CC_UPGRADE_MODE_BURN) { - start_off = CC_UPGRADE_V03_COMPACT_BOOT_OFFSET; - end_off = CC_UPGRADE_V03_COMPACT_BOOT_OFFSET + CC_FBC_V03_FILE_SIZE; - total_item = (end_off - start_off) / mUpgradeBlockSize + 2; - } - } else if (upgrade_version == CC_FBC_V03_01_VAL) { - start_off = CC_UPGRADE_V03_CUR_PQ_OFFSET; - end_off = 0; - if (mUpgradeMode == CC_UPGRADE_MODE_CUR_PQ_BIN) { - start_off = CC_UPGRADE_V03_CUR_PQ_OFFSET; - end_off = CC_UPGRADE_V03_CUR_PQ_OFFSET + CC_FBC_V03_CUR_PQ_BIN_FILE_SIZE; - total_item = (end_off - start_off) / mUpgradeBlockSize + 2; - } - } - - //let's try set default pq & wb - if (upgrade_version == CC_FBC_V02_00_VAL || upgrade_version == CC_FBC_V03_00_VAL) { - if (mUpgradeMode == CC_UPGRADE_MODE_ALL_PQ_WB || mUpgradeMode == CC_UPGRADE_MODE_MAIN_PQ_WB || - mUpgradeMode == CC_UPGRADE_MODE_PQ_WB_ONLY) { - mDataBuf[6] = 3; - upgrade_pq_wb_flag = 1; - } else if (mUpgradeMode == CC_UPGRADE_MODE_MAIN_WB || mUpgradeMode == CC_UPGRADE_MODE_ALL_WB || - mUpgradeMode == CC_UPGRADE_MODE_WB_ONLY) { - mDataBuf[6] = 2; - upgrade_pq_wb_flag = 1; - } else if (mUpgradeMode == CC_UPGRADE_MODE_MAIN_PQ || mUpgradeMode == CC_UPGRADE_MODE_ALL_PQ || - mUpgradeMode == CC_UPGRADE_MODE_PQ_ONLY) { - mDataBuf[6] = 1; - upgrade_pq_wb_flag = 1; - } else { - upgrade_pq_wb_flag = 0; - } - - if (upgrade_pq_wb_flag == 1) { - cmd_len = 7; - mDataBuf[0] = 0x5A; - mDataBuf[1] = 0x5A; - mDataBuf[2] = cmd_len + 4; - mDataBuf[3] = 0x00; - mDataBuf[4] = 0x00; - mDataBuf[5] = CMD_CLR_SETTINGS_DEFAULT; - - AddCRCToDataBuf(mDataBuf, cmd_len); - if (mCfbcIns->sendDataOneway(COMM_DEV_SERIAL, mDataBuf, cmd_len + 4, 0) <= 0) { - mState = STATE_ABORT; - upgrade_err_code = ERR_SERIAL_CONNECT; - mpObserver->onUpgradeStatus(mState, upgrade_err_code); - mCfbcIns->SetUpgradeFlag(0); - - if (mBinFileBuf != NULL) { - delete mBinFileBuf; - mBinFileBuf = NULL; - } - return false; - } - - usleep(3000 * 1000); - - if (mUpgradeMode == CC_UPGRADE_MODE_PQ_WB_ONLY || mUpgradeMode == CC_UPGRADE_MODE_WB_ONLY || - mUpgradeMode == CC_UPGRADE_MODE_PQ_ONLY) { - system("reboot"); - return false; - } - } - } - - //send upgrade command - cmd_len = 10; - mDataBuf[0] = 0x5A; - mDataBuf[1] = 0x5A; - mDataBuf[2] = cmd_len + 4; - mDataBuf[3] = 0x00; - mDataBuf[4] = 0x00; - mDataBuf[5] = 0x01; - mDataBuf[6] = 0x88; - mDataBuf[7] = 0x88; - mDataBuf[8] = 0x88; - mDataBuf[9] = 0x88; - AddCRCToDataBuf(mDataBuf, cmd_len); - if (mCfbcIns->sendDataOneway(COMM_DEV_SERIAL, mDataBuf, cmd_len + 4, 0) <= 0) { - mState = STATE_ABORT; - upgrade_err_code = ERR_SERIAL_CONNECT; - mpObserver->onUpgradeStatus(mState, upgrade_err_code); - mCfbcIns->SetUpgradeFlag(0); - - if (mBinFileBuf != NULL) { - delete mBinFileBuf; - mBinFileBuf = NULL; - } - return false; - } - - //waiting fbc restart - usleep(5000 * 1000); - - if (mUpgradeMode == CC_UPGRADE_MODE_DUMMY) { - //dummy test mode - - //wait 10 second - usleep(10000 * 1000); - - //send reboot command to reboot fbc - sprintf((char *)tmp_buf, "reboot\n"); - cmd_len = strlen((char *)tmp_buf); - mCfbcIns->sendDataOneway(COMM_DEV_SERIAL, tmp_buf, cmd_len, 0); - usleep(400 * 1000); - - mpObserver->onUpgradeStatus(mState, 100); - - usleep(100 * 1000); - mState = STATE_FINISHED; - mpObserver->onUpgradeStatus(mState, 0); - - if (mBinFileBuf != NULL) { - delete mBinFileBuf; - mBinFileBuf = NULL; - } - return false; - } - - tmp_prog += 1; - mpObserver->onUpgradeStatus(mState, tmp_prog * 100 / total_item); - - cur_off = start_off; - old_off = cur_off; - - upgrade_flag = 0; - while (!exitPending()) { //requietexit() or requietexitWait() not call - if (cur_off >= end_off) { - upgrade_flag = 1; - break; - } - - //copy data from file temp buffer - if (end_off - cur_off < mUpgradeBlockSize) { - rw_size = end_off - cur_off; - } else { - rw_size = mUpgradeBlockSize; - } - - memcpy(mDataBuf, mBinFileBuf + cur_off, rw_size); - - //send upgrade start addr and write size - sprintf((char *)tmp_buf, "upgrade 0x%x 0x%x\n", cur_off, rw_size); - LOGD("\n\n%s, %s\n", __FUNCTION__, tmp_buf); - cmd_len = strlen((char *)tmp_buf); - if (mCfbcIns->sendDataOneway(COMM_DEV_SERIAL, tmp_buf, cmd_len, 0) <= 0) { - mState = STATE_ABORT; - upgrade_err_code = ERR_SERIAL_CONNECT; - upgrade_flag = 0; - break; - } - usleep(500 * 1000); - - //send upgrade data - if (mCfbcIns->sendDataOneway(COMM_DEV_SERIAL, mDataBuf, rw_size, 0) <= 0) { - mState = STATE_ABORT; - upgrade_err_code = ERR_SERIAL_CONNECT; - upgrade_flag = 0; - break; - } - - //send upgrade data crc - AddCRCToDataBuf(mDataBuf, rw_size); - if (mCfbcIns->sendDataOneway(COMM_DEV_SERIAL, mDataBuf + rw_size, 4, 0) <= 0) { - mState = STATE_ABORT; - upgrade_err_code = ERR_SERIAL_CONNECT; - upgrade_flag = 0; - break; - } - - old_off = cur_off; - cur_off += rw_size; - - //deal with fbc response - tmp_flag = 0; - memset(mDataBuf, 0, CC_UPGRADE_DATA_BUF_SIZE); - rw_size = mCfbcIns->uartReadStream(mDataBuf, CC_UPGRADE_DATA_BUF_SIZE, 2000); - for (i = 0; i < rw_size - 3; i++) { - if ((0x5A == mDataBuf[i]) && (0x5A == mDataBuf[i + 1]) && (0x5A == mDataBuf[i + 2])) { - LOGD("%s, fbc write data at 0x%x ok!\n", __FUNCTION__, old_off); - tmp_flag = 1; - break; - } - } - - if (tmp_flag == 0) { - LOGE("%s, fbc write data at 0x%x error! rewrite!\n", __FUNCTION__, old_off); - if (upgrade_try_cnt < 6) { - cur_off = old_off; - upgrade_try_cnt += 1; - - mpObserver->onUpgradeStatus(mState, ERR_DATA_CRC_ERROR); - } else { - LOGE("%s, we have rewrite more than %d times, abort.\n", __FUNCTION__, upgrade_try_cnt); - mState = STATE_ABORT; - upgrade_err_code = ERR_SERIAL_CONNECT; - upgrade_flag = 0; - break; - } - } else { - tmp_prog += 1; - upgrade_try_cnt = 0; - } - - usleep(3000 * 1000); - - mpObserver->onUpgradeStatus(mState, tmp_prog * 100 / total_item); - } - - if (mState == STATE_ABORT) { - mpObserver->onUpgradeStatus(mState, upgrade_err_code); - } else if (mState == STATE_RUNNING) { - if (upgrade_flag == 1) { - sprintf((char *)tmp_buf, "reboot\n"); - cmd_len = strlen((char *)tmp_buf); - mCfbcIns->sendDataOneway(COMM_DEV_SERIAL, tmp_buf, cmd_len, 0); - usleep(400 * 1000); - - tmp_prog += 1; - mpObserver->onUpgradeStatus(mState, tmp_prog * 100 / total_item); - - usleep(100 * 1000); - mState = STATE_FINISHED; - mpObserver->onUpgradeStatus(mState, 0); - } - } else { - if (upgrade_flag == 1) { - tmp_prog += 1; - mpObserver->onUpgradeStatus(mState, tmp_prog * 100 / total_item); - } - } - - mState = STATE_STOPED; - - mCfbcIns->SetUpgradeFlag(0); - - if (mBinFileBuf != NULL) { - delete mBinFileBuf; - mBinFileBuf = NULL; - } - - LOGD("%s, exiting...\n", "TV"); - system("reboot"); - //return true, run again, return false,not run. - return false; -} diff --git a/tvapi/libtv/tv/CUpgradeFBC.h b/tvapi/libtv/tv/CUpgradeFBC.h deleted file mode 100644 index dbe61fc..0000000 --- a/tvapi/libtv/tv/CUpgradeFBC.h +++ b/dev/null @@ -1,144 +0,0 @@ -#ifndef __TV_UPGRADE_FBC_H__ -#define __TV_UPGRADE_FBC_H__ - -#include "CFbcCommunication.h" -#include "../tvutils/CThread.h" - -#define CC_FBC_V01_00_VAL (0x10000000) -#define CC_FBC_V02_00_VAL (0x20000000) -#define CC_FBC_V02_01_VAL (0x20000001) -#define CC_FBC_V03_00_VAL (0x30000000) -#define CC_FBC_V03_01_VAL (0x30000001) - -#define CC_FBC_V01_FILE_SIZE (655360) -#define CC_FBC_V02_FILE_SIZE (786432) -#define CC_FBC_V02_CUR_PQ_BIN_FILE_SIZE (0xB000) -#define CC_FBC_V03_FILE_SIZE (2097152) -#define CC_FBC_V03_CUR_PQ_BIN_FILE_SIZE (0xB000) - -#define CC_UPGRADE_MAX_BLOCK_LEN (0x10000) -#define CC_UPGRADE_DATA_BUF_SIZE (CC_UPGRADE_MAX_BLOCK_LEN + 4) - -#define CC_UPGRADE_MODE_BOOT_MAIN (0) -#define CC_UPGRADE_MODE_BOOT (1) -#define CC_UPGRADE_MODE_MAIN (2) -#define CC_UPGRADE_MODE_COMPACT_BOOT (3) -#define CC_UPGRADE_MODE_ALL (4) - -#define CC_UPGRADE_MODE_MAIN_PQ_WB (5) -#define CC_UPGRADE_MODE_ALL_PQ_WB (6) -#define CC_UPGRADE_MODE_MAIN_WB (7) -#define CC_UPGRADE_MODE_ALL_WB (8) -#define CC_UPGRADE_MODE_MAIN_PQ (9) -#define CC_UPGRADE_MODE_ALL_PQ (10) - -#define CC_UPGRADE_MODE_PQ_WB_ONLY (11) -#define CC_UPGRADE_MODE_WB_ONLY (12) -#define CC_UPGRADE_MODE_PQ_ONLY (13) - -#define CC_UPGRADE_MODE_CUR_PQ_BIN (14) -#define CC_UPGRADE_MODE_ALL_PQ_BIN (15) - -#define CC_UPGRADE_MODE_BURN (16) - -#define CC_UPGRADE_MODE_DUMMY (17) - -#define CC_UPGRADE_V01_BOOT_OFFSET (0x0) -#define CC_UPGRADE_V01_BOOT_LEN (0x20000) -#define CC_UPGRADE_V01_MAIN_OFFSET (0x20000) -#define CC_UPGRADE_V01_MAIN_LEN (CC_FBC_V01_FILE_SIZE - CC_UPGRADE_V01_MAIN_OFFSET) -#define CC_UPGRADE_V01_ALL_LENGTH (CC_FBC_V01_FILE_SIZE) - -#define CC_UPGRADE_V02_COMPACT_BOOT_OFFSET (0x0) -#define CC_UPGRADE_V02_COMPACT_BOOT_LEN (0x10000) -#define CC_UPGRADE_V02_BOOT_OFFSET (0x10000) -#define CC_UPGRADE_V02_BOOT_LEN (0x30000) -#define CC_UPGRADE_V02_MAIN_OFFSET (0x40000) -#define CC_UPGRADE_V02_MAIN_LEN (0x80000) -#define CC_UPGRADE_V02_BOOT_BAK_OFFSET (0xC0000) -#define CC_UPGRADE_V02_BOOT_BAK_LEN (0x30000) -#define CC_UPGRADE_V02_MAIN_BAK_OFFSET (0xF0000) -#define CC_UPGRADE_V02_MAIN_BAK_LEN (0x80000) -#define CC_UPGRADE_V02_ALL_LENGTH (0x170000) - -#define CC_UPGRADE_V02_CUR_PQ_OFFSET (0xAF000) - -#define CC_UPGRADE_V03_COMPACT_BOOT_OFFSET (CC_UPGRADE_V02_COMPACT_BOOT_OFFSET) -#define CC_UPGRADE_V03_COMPACT_BOOT_LEN (CC_UPGRADE_V02_COMPACT_BOOT_LEN) -#define CC_UPGRADE_V03_BOOT_OFFSET (CC_UPGRADE_V02_BOOT_OFFSET) -#define CC_UPGRADE_V03_BOOT_LEN (CC_UPGRADE_V02_BOOT_LEN) -#define CC_UPGRADE_V03_MAIN_OFFSET (CC_UPGRADE_V02_MAIN_OFFSET) -#define CC_UPGRADE_V03_MAIN_LEN (CC_UPGRADE_V02_MAIN_LEN) -#define CC_UPGRADE_V03_BOOT_BAK_OFFSET (CC_UPGRADE_V02_BOOT_BAK_OFFSET) -#define CC_UPGRADE_V03_BOOT_BAK_LEN (CC_UPGRADE_V02_BOOT_BAK_LEN) -#define CC_UPGRADE_V03_MAIN_BAK_OFFSET (CC_UPGRADE_V02_MAIN_BAK_OFFSET) -#define CC_UPGRADE_V03_MAIN_BAK_LEN (CC_UPGRADE_V02_MAIN_BAK_LEN) -#define CC_UPGRADE_V03_PROTECT_DATA_START (0x1FF000) -#define CC_UPGRADE_V03_PROTECT_DATA_LEN (0x1000) -#define CC_UPGRADE_V03_ALL_LENGTH (CC_UPGRADE_V03_PROTECT_DATA_START) - -#define CC_UPGRADE_V03_CUR_PQ_OFFSET (CC_UPGRADE_V02_CUR_PQ_OFFSET) - - -class CUpgradeFBC: public CThread { -public: - CUpgradeFBC(); - ~CUpgradeFBC(); - - int start(); - int stop(); - int GetUpgradeFBCProgress(); - int SetUpgradeFileName(char *file_name); - int SetUpgradeFileSize(int file_size); - int SetUpgradeBlockSize(int block_size); - int SetUpgradeMode(int mode); - - class IUpgradeFBCObserver { - public: - IUpgradeFBCObserver() {}; - virtual ~IUpgradeFBCObserver() {}; - virtual void onUpgradeStatus(int state, int param) { - state = state; - param = param; - }; - }; - void setObserver(IUpgradeFBCObserver *pOb) - { - mpObserver = pOb; - }; - -private: - bool threadLoop(); - - int AddCRCToDataBuf(unsigned char data_buf[], int data_len); - - int mState; - int mUpgradeMode; - int mOPTotalSize; - int mBinFileSize; - int mUpgradeBlockSize; - unsigned char *mBinFileBuf; - char mFileName[256]; - unsigned char mDataBuf[CC_UPGRADE_DATA_BUF_SIZE]; - IUpgradeFBCObserver *mpObserver; - CFbcCommunication *mCfbcIns; - - enum UpgradeState { - STATE_STOPED = 0, - STATE_RUNNING, - STATE_FINISHED, - STATE_ABORT, - }; - - enum FBCUpgradeErrorCode { - ERR_SERIAL_CONNECT = -1, - ERR_OPEN_BIN_FILE = -2, - ERR_BIN_FILE_SIZE = -3, - ERR_READ_BIN_FILE = -4, - ERR_NOT_SUPPORT_UPGRADE_MDOE = -5, - ERR_NOT_CORRECT_UPGRADE_BLKSIZE = -6, - ERR_DATA_CRC_ERROR = -7, - }; -}; - -#endif //__TV_UPGRADE_FBC_H__ diff --git a/tvapi/libtv/tv/ScreenCatch.cpp b/tvapi/libtv/tv/ScreenCatch.cpp deleted file mode 100644 index 971ac91..0000000 --- a/tvapi/libtv/tv/ScreenCatch.cpp +++ b/dev/null @@ -1,379 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#define LOG_NDEBUG 1 -#define LOG_TAG "ScreenCatch" - -#include <media/stagefright/foundation/ADebug.h> -#include <media/stagefright/MediaDefs.h> -#include <media/stagefright/MetaData.h> -#include <OMX_IVCommon.h> -#include <MetadataBufferType.h> - -#include <ui/GraphicBuffer.h> -#include <gui/ISurfaceComposer.h> -#include <gui/IGraphicBufferAlloc.h> -#include <OMX_Component.h> - -#include <utils/Log.h> -#include <utils/String8.h> - -#include <private/gui/ComposerService.h> - -#include <media/stagefright/ScreenCatch.h> -#include <media/stagefright/ScreenSource.h> - -#include <binder/IPCThreadState.h> -#include <binder/MemoryBase.h> -#include <binder/MemoryHeapBase.h> - -#include <stdio.h> -#include <assert.h> -#include <limits.h> -#include <unistd.h> -#include <fcntl.h> -#include <sched.h> -#include <sys/types.h> -#include <sys/stat.h> - -#include <binder/IServiceManager.h> - -#define BOUNDRY 32 - -#define ALIGN(x) (x + (BOUNDRY) - 1)& ~((BOUNDRY) - 1) - -namespace android { - - struct ScreenCatch::ScreenCatchClient : public BnScreenMediaSourceClient { - ScreenCatchClient(void *user) - { - mUser = user; - ALOGE("[%s %d] user:%x", __FUNCTION__, __LINE__, user); - } - - virtual void notify(int msg, int ext1, int ext2, const Parcel *obj) - { - ALOGI("notify %d, %d, %d", msg, ext1, ext2); - } - - virtual int dataCallback(const sp<IMemory> &data) - { - return 0; - } - - protected: - void *mUser; - virtual ~ScreenCatchClient() {} - - private: - DISALLOW_EVIL_CONSTRUCTORS(ScreenCatchClient); - }; - - ScreenCatch::ScreenCatch(uint32_t bufferWidth, uint32_t bufferHeight, uint32_t bitSize) : - mWidth(ALIGN(bufferWidth)), - mHeight(bufferHeight), - mScreenMediaSourceService(NULL), - mColorFormat(OMX_COLOR_Format32bitARGB8888), - mBitSize(bitSize) - { - ALOGE("ScreenCatch: %dx%d", bufferWidth, bufferHeight); - - if (bufferWidth <= 0 || bufferHeight <= 0 || bufferWidth > 1920 || bufferHeight > 1080) { - ALOGE("Invalid dimensions %dx%d", bufferWidth, bufferHeight); - } - - if (bitSize != 24 || bitSize != 32) - bitSize = 32; - - mCorpX = -1; - mCorpY = -1; - mCorpWidth = -1; - mCorpHeight = -1; - - } - - ScreenCatch::~ScreenCatch() - { - ALOGE("~ScreenCatch"); - } - - void ScreenCatch::setVideoRotation(int degree) - { - int angle; - - ALOGI("[%s %d] setVideoRotation degree:%x", __FUNCTION__, __LINE__, degree); - - } - - void ScreenCatch::setVideoCrop(int x, int y, int width, int height) - { - mCorpX = x; - mCorpY = y; - mCorpWidth = width; - mCorpHeight = height; - } - - static inline void yuv_to_rgb32(unsigned char y, unsigned char u, unsigned char v, unsigned char *rgb) - { - register int r, g, b; - - r = (1192 * (y - 16) + 1634 * (v - 128) ) >> 10; - g = (1192 * (y - 16) - 833 * (v - 128) - 400 * (u - 128) ) >> 10; - b = (1192 * (y - 16) + 2066 * (u - 128) ) >> 10; - - r = r > 255 ? 255 : r < 0 ? 0 : r; - g = g > 255 ? 255 : g < 0 ? 0 : g; - b = b > 255 ? 255 : b < 0 ? 0 : b; - - /*ARGB*/ - *rgb = (unsigned char)r; - rgb++; - *rgb = (unsigned char)g; - rgb++; - *rgb = (unsigned char)b; - rgb++; - *rgb = 0xff; - - } - - void nv21_to_rgb32(unsigned char *buf, unsigned char *rgb, int width, int height) - { - int x, y, z = 0; - int h, w; - int blocks; - unsigned char Y1, Y2, U, V; - - blocks = (width * height) * 2; - - for (h = 0, z = 0; h < height; h += 2) { - for (y = 0; y < width * 2; y += 2) { - - Y1 = buf[ h * width + y + 0]; - V = buf[ blocks / 2 + h * width / 2 + y % width + 0 ]; - Y2 = buf[ h * width + y + 1]; - U = buf[ blocks / 2 + h * width / 2 + y % width + 1 ]; - - yuv_to_rgb32(Y1, U, V, &rgb[z]); - yuv_to_rgb32(Y2, U, V, &rgb[z + 4]); - z += 8; - } - } - } - - static inline void yuv_to_rgb24(unsigned char y, unsigned char u, unsigned char v, unsigned char *rgb) - { - register int r, g, b; - - r = (1192 * (y - 16) + 1634 * (v - 128) ) >> 10; - g = (1192 * (y - 16) - 833 * (v - 128) - 400 * (u - 128) ) >> 10; - b = (1192 * (y - 16) + 2066 * (u - 128) ) >> 10; - - r = r > 255 ? 255 : r < 0 ? 0 : r; - g = g > 255 ? 255 : g < 0 ? 0 : g; - b = b > 255 ? 255 : b < 0 ? 0 : b; - - /*ARGB*/ - *rgb = (unsigned char)r; - rgb++; - *rgb = (unsigned char)g; - rgb++; - *rgb = (unsigned char)b; - } - - void nv21_to_rgb24(unsigned char *buf, unsigned char *rgb, int width, int height) - { - int x, y, z = 0; - int h, w; - int blocks; - unsigned char Y1, Y2, U, V; - - blocks = (width * height) * 2; - - for (h = 0, z = 0; h < height; h += 2) { - for (y = 0; y < width * 2; y += 2) { - - Y1 = buf[ h * width + y + 0]; - V = buf[ blocks / 2 + h * width / 2 + y % width + 0 ]; - Y2 = buf[ h * width + y + 1]; - U = buf[ blocks / 2 + h * width / 2 + y % width + 1 ]; - - yuv_to_rgb24(Y1, U, V, &rgb[z]); - yuv_to_rgb24(Y2, U, V, &rgb[z + 3]); - z += 6; - } - } - } - - int ScreenCatch::threadFunc() - { - int64_t pts; - int status; - - sp<MemoryHeapBase> newMemoryHeap = new MemoryHeapBase(mWidth * mHeight * 3 / 2); - sp<MemoryBase> buffer = new MemoryBase(newMemoryHeap, 0, mWidth * mHeight * 3 / 2); - - ALOGV("[%s %d] empty:%d", __FUNCTION__, __LINE__, mRawBufferQueue.empty()); - - while (mStart == true) { - - status = mScreenMediaSourceService->readBuffer(mClientId, buffer, &pts); - - if (status != OK && mStart == true) { - usleep(10000); - continue; - } - - if (mStart != true) - break; - - MediaBuffer *accessUnit; - - if (OMX_COLOR_Format24bitRGB888 == mColorFormat) { //rgb 24bit - accessUnit = new MediaBuffer(mWidth * mHeight * 3); - nv21_to_rgb24((unsigned char *)buffer->pointer(), (unsigned char *)accessUnit->data(), mWidth, mHeight); - accessUnit->set_range(0, mWidth * mHeight * 3); - } else if (OMX_COLOR_Format32bitARGB8888 == mColorFormat) { //rgba 32bit - accessUnit = new MediaBuffer(mWidth * mHeight * 4); - nv21_to_rgb32((unsigned char *)buffer->pointer(), (unsigned char *)accessUnit->data(), mWidth, mHeight); - accessUnit->set_range(0, mWidth * mHeight * 4); - } else if (OMX_COLOR_FormatYUV420SemiPlanar == mColorFormat) { //nv21 - accessUnit = new MediaBuffer(mWidth * mHeight * 3 / 2); - memcpy((unsigned char *)accessUnit->data(), (unsigned char *)buffer->pointer(), mWidth * mHeight * 3 / 2); - accessUnit->set_range(0, mWidth * mHeight * 3 / 2); - } - mRawBufferQueue.push_back(accessUnit); - } - - ALOGE("[%s %d] thread out", __FUNCTION__, __LINE__); - - mThreadOutCondition.signal(); - - return 0; - } - - void *ScreenCatch::ThreadWrapper(void *me) - { - - ScreenCatch *Convertor = static_cast<ScreenCatch *>(me); - Convertor->threadFunc(); - return NULL; - } - - status_t ScreenCatch::start(MetaData *params) - { - ALOGE("[%s %d] mWidth:%d mHeight:%d", __FUNCTION__, __LINE__, mWidth, mHeight); - Mutex::Autolock autoLock(mLock); - - status_t status; - int64_t pts; - int client_id; - - sp<IServiceManager> sm = defaultServiceManager(); - sp<IBinder> binder = sm->getService(String16("media.screenmediasource")); - mScreenMediaSourceService = interface_cast<IScreenMediaSource>(binder); - - sp<ScreenCatchClient> mIScreenSourceClient = new ScreenCatchClient(this); - - ALOGE("[%s %d] mWidth:%d mHeight:%d", __FUNCTION__, __LINE__, mWidth, mHeight); - - mScreenMediaSourceService->registerClient(mIScreenSourceClient, mWidth, mHeight, 1, SCREENMEDIASOURC_RAWDATA_TYPE, &client_id, NULL); - - ALOGE("[%s %d] client_id:%d", __FUNCTION__, __LINE__, client_id); - - mClientId = client_id; - - if (status != OK) { - ALOGE("setResolutionRatio fail"); - return !OK; - } - - ALOGV("[%s %d] mCorpX:%d mCorpY:%d mCorpWidth:%d mCorpHeight:%d", __FUNCTION__, __LINE__, mCorpX, mCorpY, mCorpWidth, mCorpHeight); - - if (mCorpX != -1) - mScreenMediaSourceService->setVideoCrop(client_id, mCorpX, mCorpY, mCorpWidth, mCorpHeight); - - - status = mScreenMediaSourceService->start(client_id); - - if (status != OK) { - mScreenMediaSourceService->unregisterClient(mClientId); - ALOGE("ScreenMediaSourceService start fail"); - return !OK; - } - - if (!(params->findInt32(kKeyColorFormat, &mColorFormat) - && (mColorFormat != OMX_COLOR_FormatYUV420SemiPlanar - || mColorFormat != OMX_COLOR_Format24bitRGB888 - || mColorFormat != OMX_COLOR_Format32bitARGB8888))) - mColorFormat = OMX_COLOR_Format32bitARGB8888; - - pthread_attr_t attr; - pthread_attr_init(&attr); - pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE); - pthread_create(&mThread, &attr, ThreadWrapper, this); - pthread_attr_destroy(&attr); - - mStart = true; - - ALOGV("[%s %d]", __FUNCTION__, __LINE__); - return OK; - } - - status_t ScreenCatch::stop() - { - ALOGV("[%s %d]", __FUNCTION__, __LINE__); - Mutex::Autolock autoLock(mLock); - mStart = false; - - mThreadOutCondition.waitRelative(mLock, 1000000000000); - ALOGV("[%s %d]", __FUNCTION__, __LINE__); - - while (!mRawBufferQueue.empty()) { - - ALOGV("[%s %d] free buffer", __FUNCTION__, __LINE__); - - MediaBuffer *rawBuffer = *mRawBufferQueue.begin(); - mRawBufferQueue.erase(mRawBufferQueue.begin()); - rawBuffer->release(); - } - - mScreenMediaSourceService->stop(mClientId); - mScreenMediaSourceService->unregisterClient(mClientId); - - return OK; - } - - status_t ScreenCatch::read(MediaBuffer **buffer) - { - Mutex::Autolock autoLock(mLock); - - if (!mRawBufferQueue.empty()) { - MediaBuffer *rawBuffer = *mRawBufferQueue.begin(); - mRawBufferQueue.erase(mRawBufferQueue.begin()); - *buffer = rawBuffer; - return OK; - } - - return !OK; - } - - status_t ScreenCatch::free(MediaBuffer *buffer) - { - Mutex::Autolock autoLock(mLock); - buffer->release(); - return OK; - } - -} // end of namespace android diff --git a/tvapi/libtv/tvconfig/CIniFile.cpp b/tvapi/libtv/tvconfig/CIniFile.cpp deleted file mode 100644 index 3016252..0000000 --- a/tvapi/libtv/tvconfig/CIniFile.cpp +++ b/dev/null @@ -1,353 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <assert.h> -#include <string.h> -#include <ctype.h> - -#include "CIniFile.h" - -CIniFile::CIniFile() -{ - mpFirstSection = NULL; - mpFileName[0] = '\0'; - m_pIniFile = NULL; - mpFirstLine = NULL; -} - -CIniFile::~CIniFile() -{ - LOGD("CIniFile::~CIniFile()"); - FreeAllMem(); -} - -int CIniFile::LoadFromFile(const char *filename) -{ - char lineStr[MAX_INI_FILE_LINE_LEN]; - char *pStr; - LINE *pCurLINE = NULL; - SECTION *pCurSection = NULL; - - FreeAllMem(); - - int Len; - if (filename == NULL) { - return -1; - } - - strcpy(mpFileName, filename); - LOGD("LoadFromFile 2name = %s", mpFileName); - if ((m_pIniFile = fopen (mpFileName, "r")) == NULL) { - return -1; - } - - while (fgets (lineStr, MAX_INI_FILE_LINE_LEN, m_pIniFile) != NULL) { - //去掉多余字符 - allTrim(lineStr); - - LINE *pLINE = new LINE(); - pLINE->pKeyStart = pLINE->Text; - pLINE->pKeyEnd = pLINE->Text; - pLINE->pValueStart = pLINE->Text; - pLINE->pValueEnd = pLINE->Text; - pLINE->pNext = NULL; - pLINE->type = getLineType(lineStr); - //LOGD("getline=%s len=%d type=%d", lineStr, strlen(lineStr), pLINE->type); - strcpy(pLINE->Text, lineStr); - pLINE->LineLen = strlen(pLINE->Text); - - //head - if (mpFirstLine == NULL) { - mpFirstLine = pLINE; - } else { - pCurLINE->pNext = pLINE; - } - - pCurLINE = pLINE; - - switch (pCurLINE->type) { - case LINE_TYPE_SECTION: { - SECTION *pSec = new SECTION(); - pSec->pLine = pLINE; - pSec->pNext = NULL; - if (mpFirstSection == NULL) { //first section - mpFirstSection = pSec; - } else { - pCurSection->pNext = pSec; - } - pCurSection = pSec; - break; - } - case LINE_TYPE_KEY: { - char *pM = strchr(pCurLINE->Text, '='); - pCurLINE->pKeyStart = pCurLINE->Text; - pCurLINE->pKeyEnd = pM - 1; - pCurLINE->pValueStart = pM + 1; - pCurLINE->pValueEnd = pCurLINE->Text + pCurLINE->LineLen - 1; - break; - } - case LINE_TYPE_COMMENT: { - break; - } - default: { - break; - } - } - } - - fclose (m_pIniFile); - m_pIniFile = NULL; - - return 0; -} - -void CIniFile::printAll() -{ - //line - for (LINE *pline = mpFirstLine; pline != NULL; pline = pline->pNext) { - LOGD("line = %s type = %d", pline->Text, pline->type); - } - - //section - for (SECTION *psec = mpFirstSection; psec != NULL; psec = psec->pNext) { - LOGD("sec = %s", psec->pLine->Text); - } - return; -} - -int CIniFile::LoadFromString(const char *str __unused) -{ - return 0; -} - -int CIniFile::SaveToFile(const char *filename) -{ - const char *file = NULL; - if (m_pIniFile != NULL) { - fclose (m_pIniFile); - } - - if (filename == NULL) { - if (strlen(mpFileName) == 0) { - LOGD("error save file is null"); - return -1; - } else { - file = mpFileName; - } - } else { - file = filename; - } - //LOGD("Save to file name = %s", file); - - if ((m_pIniFile = fopen (file, "wb")) == NULL) { - LOGD("Save to file open error = %s", file); - return -1; - } - - LINE *pCurLine = NULL; - for (pCurLine = mpFirstLine; pCurLine != NULL; pCurLine = pCurLine->pNext) { - fprintf (m_pIniFile, "%s\r\n", pCurLine->Text); - } - - fflush(m_pIniFile); - fsync(fileno(m_pIniFile)); - - fclose(m_pIniFile); - m_pIniFile = NULL; - return 0; -} - -//暂不插入操作 -int CIniFile::SetString(const char *section, const char *key, const char *value) -{ - SECTION *pNewSec = NULL; - LINE *pNewSecLine = NULL; - LINE *pNewKeyLine = NULL; - - SECTION *pSec = getSection(section); - if (pSec == NULL) { - pNewSec = new SECTION(); - pNewSecLine = new LINE(); - pNewKeyLine = new LINE(); - - pNewKeyLine->type = LINE_TYPE_KEY; - pNewSecLine->type = LINE_TYPE_SECTION; - - - sprintf(pNewSecLine->Text, "[%s]", section); - pNewSec->pLine = pNewSecLine; - - InsertSection(pNewSec); - - int keylen = strlen(key); - sprintf(pNewKeyLine->Text, "%s=%s", key, value); - pNewKeyLine->LineLen = strlen(pNewKeyLine->Text); - pNewKeyLine->pKeyStart = pNewKeyLine->Text; - pNewKeyLine->pKeyEnd = pNewKeyLine->pKeyStart + keylen - 1; - pNewKeyLine->pValueStart = pNewKeyLine->pKeyStart + keylen + 1; - pNewKeyLine->pValueEnd = pNewKeyLine->Text + pNewKeyLine->LineLen - 1; - - InsertKeyLine(pNewSec, pNewKeyLine); - - } else { //find section - LINE *pLine = getKeyLineAtSec(pSec, key); - if (pLine == NULL) { //, not find key - pNewKeyLine = new LINE(); - pNewKeyLine->type = LINE_TYPE_KEY; - - int keylen = strlen(key); - sprintf(pNewKeyLine->Text, "%s=%s", key, value); - pNewKeyLine->LineLen = strlen(pNewKeyLine->Text); - pNewKeyLine->pKeyStart = pNewKeyLine->Text; - pNewKeyLine->pKeyEnd = pNewKeyLine->pKeyStart + keylen - 1; - pNewKeyLine->pValueStart = pNewKeyLine->pKeyStart + keylen + 1; - pNewKeyLine->pValueEnd = pNewKeyLine->Text + pNewKeyLine->LineLen - 1; - - InsertKeyLine(pSec, pNewKeyLine); - } else { //all find, change it - sprintf(pLine->Text, "%s=%s", key, value); - pLine->LineLen = strlen(pLine->Text); - pLine->pValueEnd = pLine->Text + pLine->LineLen - 1; - } - } - - //save - SaveToFile(NULL); - return 0; -} -int CIniFile::SetInt(const char *section, const char *key, int value) -{ - char tmp[64]; - sprintf(tmp, "%d", value); - SetString(section, key, tmp); - return 0; -} -const char *CIniFile::GetString(const char *section, const char *key, const char *def_value) -{ - SECTION *pSec = getSection(section); - if (pSec == NULL) return def_value; - LINE *pLine = getKeyLineAtSec(pSec, key); - if (pLine == NULL) return def_value; - - return pLine->pValueStart; -} -int CIniFile::GetInt(const char *section, const char *key, int def_value) -{ - const char *num = GetString(section, key, NULL); - if (num != NULL) { - return atoi(num); - } - return def_value; -} - - -LINE_TYPE CIniFile::getLineType(char *Str) -{ - LINE_TYPE type = LINE_TYPE_COMMENT; - //只要有#,就是注释 - if (strchr(Str, '#') != NULL) { - type = LINE_TYPE_COMMENT; - } else if ( (strstr (Str, "[") != NULL) && (strstr (Str, "]") != NULL) ) { /* Is Section */ - type = LINE_TYPE_SECTION; - } else { - if (strstr (Str, "=") != NULL) { - type = LINE_TYPE_KEY; - } else { - type = LINE_TYPE_COMMENT; - } - } - return type; -} - -void CIniFile::FreeAllMem() -{ - //line - LINE *pCurLine = NULL; - LINE *pNextLine = NULL; - for (pCurLine = mpFirstLine; pCurLine != NULL;) { - pNextLine = pCurLine->pNext; - delete pCurLine; - pCurLine = pNextLine; - } - mpFirstLine = NULL; - //section - SECTION *pCurSec = NULL; - SECTION *pNextSec = NULL; - for (pCurSec = mpFirstSection; pCurSec != NULL;) { - pNextSec = pCurSec->pNext; - delete pCurSec; - pCurSec = pNextSec; - } - mpFirstSection = NULL; -} - -int CIniFile::InsertSection(SECTION *pSec) -{ - //insert it to sections list ,as first section - pSec->pNext = mpFirstSection; - mpFirstSection = pSec; - //insert it to lines list, at first - pSec->pLine->pNext = mpFirstLine; - mpFirstLine = pSec->pLine; - return 0; -} -int CIniFile::InsertKeyLine(SECTION *pSec, LINE *line) -{ - LINE *line1 = pSec->pLine; - LINE *line2 = line1->pNext; - line1->pNext = line; - line->pNext = line2; - return 0; -} -SECTION *CIniFile::getSection(const char *section) -{ - //section - for (SECTION *psec = mpFirstSection; psec != NULL; psec = psec->pNext) { - if (strncmp((psec->pLine->Text) + 1, section, strlen(section)) == 0) - return psec; - } - return NULL; -} -LINE *CIniFile::getKeyLineAtSec(SECTION *pSec, const char *key) -{ - //line - for (LINE *pline = pSec->pLine->pNext; (pline != NULL && pline->type != LINE_TYPE_SECTION); pline = pline->pNext) { - if (pline->type == LINE_TYPE_KEY) { - if (strncmp(pline->Text, key, strlen(key)) == 0) - return pline; - } - } - return NULL; -} -//去掉串里面的,空格,回车,换行,s指向转换处理后的串的开头 -void CIniFile::allTrim(char *Str) -{ - //去掉换行 - char *pStr; - pStr = strchr (Str, '\n'); - if (pStr != NULL) { - *pStr = 0; - } - //去掉尾部回车 - int Len = strlen(Str); - if ( Len > 0 ) { - if ( Str[Len - 1] == '\r' ) { - Str[Len - 1] = '\0'; - } - } - //去掉空格 - pStr = Str; - while (*pStr != '\0') { //没到尾部 - if (*pStr == ' ') { //遇到空格 - char *pTmp = pStr;//从空格处开始 - while (*pTmp != '\0') { - *pTmp = *(pTmp + 1);//前移,包括移最后结束符 - pTmp++; - } - } else { - pStr++; - } - } - return; -} - - diff --git a/tvapi/libtv/tvconfig/CIniFile.h b/tvapi/libtv/tvconfig/CIniFile.h deleted file mode 100644 index 9490123..0000000 --- a/tvapi/libtv/tvconfig/CIniFile.h +++ b/dev/null @@ -1,72 +0,0 @@ -#ifndef INI_FILE_H_ -#define INI_FILE_H_ -/* - *vertion 0.01, just linux 8bit byte string, write by showbo - */ -#include <CTvLog.h> - -static const int MAX_INI_FILE_LINE_LEN = 512; - -typedef enum _LINE_TYPE { - LINE_TYPE_SECTION = 0, - LINE_TYPE_KEY, - LINE_TYPE_COMMENT, -} LINE_TYPE; - -//基于链表结构 - -//行链表,去掉多余的空格和回车,换行后. -typedef struct _LINE { - LINE_TYPE type;//类型 - char Text[MAX_INI_FILE_LINE_LEN];//内容 - int LineLen; - char *pKeyStart; - char *pKeyEnd; - char *pValueStart; - char *pValueEnd; - struct _LINE *pNext; -} LINE; -//段链表 -typedef struct _SECTION { - LINE *pLine; - struct _SECTION *pNext; -} SECTION; - - -class CIniFile { -public: - //const int MAX_SECTION_NAME_LEN = 16; - //const int MAX_KEY_NAME_LEN = 64; - //const int MAX_VALUE_LEN = 512; - - CIniFile(); - ~CIniFile(); - int LoadFromFile(const char *filename); - int LoadFromString(const char *str); - - int SaveToFile(const char *filename = NULL); - - int SetString(const char *section, const char *key, const char *value); - int SetInt(const char *section, const char *key, int value); - - const char *GetString(const char *section, const char *key, const char *def_value); - int GetInt(const char *section, const char *key, int def_value); - - void printAll(); -private: - LINE_TYPE getLineType(char *Str); - //去掉串里面的,空格,回车,换行,s指向转换处理后的串的开头 - void allTrim(char *Str); - - SECTION *getSection(const char *section); - LINE *getKeyLineAtSec(SECTION *pSec, const char *key); - - void FreeAllMem(); - int InsertSection(SECTION *pSec); - int InsertKeyLine(SECTION *pSec, LINE *line); - char mpFileName[256]; - FILE *m_pIniFile; - LINE *mpFirstLine; - SECTION *mpFirstSection; -}; -#endif //end of INI_FILE_H_ diff --git a/tvapi/libtv/tvconfig/tvconfig.conf b/tvapi/libtv/tvconfig/tvconfig.conf deleted file mode 100644 index d18fbca..0000000 --- a/tvapi/libtv/tvconfig/tvconfig.conf +++ b/dev/null @@ -1,30 +0,0 @@ -#ssm configure -ro.tv.ssm.device_01_cfg = e2prom,/dev/i2c-0,0x1000,0,0xFFF,0x20,0x20,0x50,1,-1 -ssm.writeprotect.gpio = b,8,1 - -#audio config -audio.tv.card.id = hw:AMLM2 -audio.tv.card.name = AML-M2 -audio.amp.analog.mute.gpio = b,8,1 -audio.headset.mute.gpio = x,30,1 -audio.avout.mute.gpio = x,69,0 -audio.initaudio.gpioctl = b,8,1,x,30,0,b,5,1,x,69,1,x,68,0,x,67,1,x,66,0,x,65,1,x,64,0,x,63,1,x,62,0,x,61,1,x,60,0,x,59,1,x,58,0,x,57,1,x,56,0,x,55,1,x,54,0,x,53,1,x,52,0,x,51,1,x,50,0,x,49,1,x,48,0,x,47,1,x,46,0,x,45,1,x,44,0,x,43,1,x,42,0,x,41,1,x,40,0,x,39,0,x,38,0,x,37,1,x,36,0,x,35,1,x,34,0,x,33,1,x,32,0,x,31,1,x,30,0,x,29,1,x,28,0,x,27,1,x,26,0,x,25,1,x,24,0,x,23,1,x,22,0,x,21,1,x,20,0,x,19,1,x,18,0,x,17,1,x,16,0,x,15,1,x,14,0,x,13,1,x,12,0,x,11,1,x,10,0,x,9,1,x,8,0 -audio.amplifier.biquad00.data = 0x04, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,0x80, 0xC4, 0x96, 0x7F, 0x3B, 0x6A, 0x7F, 0x3A, 0xD3, 0x81, 0x87, 0xFD, 0x3F, 0x9D, 0xB5,0x8D, 0x18, 0x8C, 0x67, 0x10, 0x01, 0x72, 0xE7, 0x74, 0x96, 0x03, 0x40, 0x41, 0x76, 0x5F,0xAC, 0xE8, 0xCE, 0x32, 0x55, 0xB8, 0x53, 0x17, 0x32, 0xC1, 0xEA, 0x5F, 0x45, 0xDF, 0xF4, -audio.amplifier.biquad01.data = 0x04, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00,0x8D, 0x18, 0x8C, 0x67, 0x10, 0x01, 0x72, 0xE7, 0x74, 0x96, 0x03, 0x40, 0x41, 0x76, 0x5F,0xAC, 0xE8, 0xCE, 0x32, 0x55, 0xB8, 0x53, 0x17, 0x32, 0xC1, 0xEA, 0x5F, 0x45, 0xDF, 0xF4, - -#tvin config -tvin.log.cfg = log_error,log_debug - -#vpp config -vpp.log.cfg = log_error,log_debug - -#misc config -misc.log.cfg = log_error,log_debug -misc.lastselsrc.show.cfg = TV,AV1,AV2,YPBPR1,YPBPR2,HDMI1,HDMI1,HDMI2,VGA,MPEG,DTV - -#tvservice config -tvservice.log.cfg = log_error - -#atv config -atv.fac.defchaninfo = 13,8,49750000,0,1,0,0,0,0,0,136250000,2,1,0,0,0,0,0,160250000,0,1,0,0,0,0,0,168250000,0,1,0,0,0,0,0,416250000,0,1,0,0,0,0,0,456250000,1,1,0,0,0,0,0,471250000,3,2,0,0,0,0,0,863250000,0,1,0,0,0,0,0,49750000,0,1,0,0,0,0,0,217250000,2,1,0,0,0,0,0,471250000,3,2,0,0,0,0,0,527250000,1,1,0,0,0,0,0,783250000,0,1,0,0,0,0,0, -atv.log.cfg = log_error,log_channelsearch_error,log_channelsearch_debug,log_channelselect_error,log_channelselect_debug
\ No newline at end of file diff --git a/tvapi/libtv/tvconfig/tvconfig.cpp b/tvapi/libtv/tvconfig/tvconfig.cpp deleted file mode 100644 index 4d45735..0000000 --- a/tvapi/libtv/tvconfig/tvconfig.cpp +++ b/dev/null @@ -1,53 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <errno.h> -#include "tvconfig.h" - -#define LOG_TAG "TVCONFIG" -#include "CTvLog.h" -#include "CIniFile.h" -static const char *TV_SECTION = "TV"; -//INI_CONFIG* mpConfig = NULL; -static char mpFilePath[256] = {0}; - -static CIniFile *pIniFile = NULL; -int tv_config_load(const char *file_name) -{ - if (pIniFile != NULL) - delete pIniFile; - - pIniFile = new CIniFile(); - pIniFile->LoadFromFile(file_name); - strcpy(mpFilePath, file_name); - return 0; -} - -int tv_config_unload() -{ - if (pIniFile != NULL) - delete pIniFile; - return 0; -} - - -int config_set_str(const char *section, const char *key, const char *value) -{ - return pIniFile->SetString(section, key, value); -} - -const char *config_get_str(const char *section, const char *key, const char *def_value) -{ - return pIniFile->GetString(section, key, def_value); -} - -int config_get_int(const char *section, const char *key, const int def_value) -{ - return pIniFile->GetInt(section, key, def_value); -} - -int config_set_int(const char *section, const char *key, const int value) -{ - pIniFile->SetInt(section, key, value); - return 0; -} diff --git a/tvapi/libtv/tvconfig/tvconfig.h b/tvapi/libtv/tvconfig/tvconfig.h deleted file mode 100644 index 750141c..0000000 --- a/tvapi/libtv/tvconfig/tvconfig.h +++ b/dev/null @@ -1,93 +0,0 @@ -#ifndef __TVCONFIG_API_H__ -#define __TVCONFIG_API_H__ - -#define CC_CFG_KEY_STR_MAX_LEN (128) -#define CC_CFG_VALUE_STR_MAX_LEN (512) - -//for tv config -#define CFG_SECTION_TV "TV" -#define CFG_SECTION_ATV "ATV" -#define CFG_SECTION_SRC_INPUT "SourceInputMap" -#define CFG_SECTION_SETTING "SETTING" -#define CFG_SECTION_FBCUART "FBCUART" - -#define CFG_BLUE_SCREEN_COLOR "tvin.bluescreen.color" - - -#define CFG_SSM_HDMI_AV_DETECT "ssm.hdmi_av.hotplug.detect.en" -#define CFG_SSM_HDMI_EDID_EN "ssm.handle.hdmi.edid.en" - - -#define CFG_ATV_FREQ_LIST "atv.get.min.max.freq" - - -#define CFG_TVIN_KERNELPET_DISABLE "tvin.kernelpet_disable" -#define CFG_TVIN_KERNELPET_TIMEROUT "tvin.kernelpet.timeout" -#define CFG_TVIN_USERPET "tvin.userpet" -#define CFG_TVIN_USERPET_TIMEROUT "tvin.userpet.timeout" -#define CFG_TVIN_USERPET_RESET "tvin.userpet.reset" - -#define CFG_TVIN_DISPLAY_FREQ_AUTO "tvin.autoset.displayfreq" -#define CFG_TVIN_DB_REG "tvin.db.reg.en" -#define CFG_TVIN_THERMAL_THRESHOLD_ENABLE "tvin.thermal.threshold.enable" -#define CFG_TVIN_THERMAL_THRESHOLD_VALUE "tvin.thermal.threshold.value" -#define CFG_TVIN_THERMAL_FBC_NORMAL_VALUE "tvin.thermal.fbc.normal.value" -#define CFG_TVIN_THERMAL_FBC_COLD_VALUE "tvin.thermal.fbc.cold.value" - -#define CFG_AUDIO_SRS_SOURROUND_GAIN "audio.srs.sourround.gain" -#define CFG_AUDIO_SRS_INPUT_GAIN "audio.srs.input.gain" -#define CFG_AUDIO_SRS_OUTPUT_GAIN "audio.srs.output.gain" -#define CFG_AUDIO_SRS_TRUBASS_GAIN "audio.srs.trubass.gain" -#define CFG_AUDIO_SRS_TRUBASS_SPEAKERSIZE "audio.srs.trubass.speakersize" -#define CFG_AUDIO_SRS_CLARITY_GAIN "audio.srs.dialogclarity.gain" -#define CFG_AUDIO_SRS_DEFINITION_GAIN "audio.srs.definition.gain" - -#define CFG_AUDIO_SRS_SOURROUND_MASTER_GAIN "audio.srs.sourround.ampmaster.gain" -#define CFG_AUDIO_SRS_CLARITY_MASTER_GAIN "audio.srs.dialogclarity.ampmaster.gain" -#define CFG_AUDIO_SRS_TRUBASS_MASTER_GAIN "audio.srs.trubass.ampmaster.gain" -#define CFG_AUDIO_SRS_TRUBASS_CLARITY_MASTER_GAIN "audio.srs.trubass.dialogclarity.ampmaster.gain" - - -#define CFG_FBC_PANEL_INFO "fbc.get.panelinfo" -#define CFG_FBC_USED "platform.havefbc" - -#define CFG_PQ_DB_PATH "pq_db_path" -#define DEF_VALUE_PQ_DB_PATH "/param/pq.db" - -#define CFG_CAHNNEL_DB "tv.channel.db" -#define DEF_VALUE_CAHNNEL_DB "/param/dtv.db" - -//for tv property -#define PROP_DEF_CAPTURE_NAME "snd.card.default.card.capture" -#define PROP_AUDIO_CARD_NUM "snd.card.totle.num" - -#define UBOOTENV_OUTPUTMODE "ubootenv.var.outputmode" -#define UBOOTENV_CONSOLE "ubootenv.var.console" - -//for tv sysfs -#define SYS_SPDIF_MODE_DEV_PATH "/sys/class/audiodsp/digital_raw" -#define SYS_VECM_DNLP_ADJ_LEVEL "/sys/module/am_vecm/parameters/dnlp_adj_level" - -#define SYS_AUIDO_DSP_AC3_DRC "/sys/class/audiodsp/ac3_drc_control" -#define SYS_AUIDO_DIRECT_RIGHT_GAIN "/sys/class/amaudio2/aml_direct_right_gain" -#define SYS_AUIDO_DIRECT_LEFT_GAIN "/sys/class/amaudio2/aml_direct_left_gain" - -#define SYS_VIDEO_FRAME_HEIGHT "/sys/class/video/frame_height" -#define SYS_VIDEO_SCALER_PATH_SEL "/sys/class/video/video_scaler_path_sel" - -#define SYS_DROILOGIC_DEBUG "/sys/class/amlogic/debug" -#define SYS_ATV_DEMOD_DEBUG "/sys/class/amlatvdemod/atvdemod_debug" - -extern int tv_config_load(const char *file_name); -extern int tv_config_unload(); -extern int tv_config_save(); - -//[TV] section - -extern int config_set_str(const char *section, const char *key, const char *value); -extern const char *config_get_str(const char *section, const char *key, const char *def_value); -extern int config_get_int(const char *section, const char *key, const int def_value); -extern int config_set_int(const char *section, const char *key, const int value); - - -#endif //__TVCONFIG_API_H__ diff --git a/tvapi/libtv/tvdb/CTvChannel.cpp b/tvapi/libtv/tvdb/CTvChannel.cpp deleted file mode 100644 index a40eb85..0000000 --- a/tvapi/libtv/tvdb/CTvChannel.cpp +++ b/dev/null @@ -1,324 +0,0 @@ -// -// -// amlogic 2013 -// -// @ Project : tv -// @ File Name : CTvChannel.cpp -// @ Date : 2013-11 -// @ Author : -// -// -#define LOG_TAG "CTvChannel" - -#include "CTvChannel.h" - -void CTvChannel::createFromCursor(CTvDatabase::Cursor &c) -{ - int col; - int src, freq, mod, symb, bw, satid, satpolar; - - col = c.getColumnIndex("db_id"); - this->id = c.getInt(col); - - col = c.getColumnIndex("ts_id"); - this->dvbTSID = c.getInt(col); - - col = c.getColumnIndex("src"); - src = c.getInt(col); - - col = c.getColumnIndex("freq"); - freq = c.getInt(col); - - if (src == MODE_QAM) { - col = c.getColumnIndex("mod"); - mod = c.getInt(col); - - col = c.getColumnIndex("symb"); - symb = c.getInt(col); - - frequency = freq; - modulation = mod; - symbolRate = symb; - mode = MODE_QAM; - - } else if (src == MODE_OFDM) { - col = c.getColumnIndex("bw"); - bw = c.getInt(col); - - frequency = freq; - bandwidth = bw; - mode = MODE_OFDM; - - } else if (src == MODE_ATSC) { - col = c.getColumnIndex("mod"); - mod = c.getInt(col); - - frequency = freq; - modulation = mod; - mode = MODE_ATSC; - } else if (src == MODE_ANALOG) { - col = c.getColumnIndex("std"); - int std = c.getInt(col); - col = c.getColumnIndex("aud_mode"); - int aud_mode = c.getInt(col); - col = c.getColumnIndex("flags"); - int afc_flag = c.getInt(col); - - frequency = freq; - audio = aud_mode; - standard = std; - afc_data = afc_flag; - mode = MODE_ANALOG; - } else if (src == MODE_QPSK) { - col = c.getColumnIndex("symb"); - symb = c.getInt(col); - - col = c.getColumnIndex("db_sat_para_id"); - satid = c.getInt(col); - - col = c.getColumnIndex("polar"); - satpolar = c.getInt(col); - - frequency = freq; - symbolRate = symb; - sat_id = satid; - sat_polarisation = satpolar; - mode = MODE_QPSK; - - /*new tv_satparams*/ - //showboz - //TVSatellite sat = TVSatellite.tvSatelliteSelect(sat_id); - //tv_satparams = sat.getParams(); - } else if (src == MODE_DTMB) { - col = c.getColumnIndex("bw"); - bw = c.getInt(col); - - frequency = freq; - bandwidth = bw; - mode = MODE_DTMB; - } - - this->fendID = 0; -} - -CTvChannel::CTvChannel() -{ -} - -CTvChannel::CTvChannel(int dbID, int mode, int freq, int bw, int mod, int symb, int ofdm __unused, int channelNum) -{ - //other member not init,just a paras - if (mode == MODE_QAM) { - id = dbID; - frequency = freq; - modulation = mod; - symbolRate = symb; - mode = MODE_QAM; - } else if (mode == MODE_OFDM) { - id = dbID; - frequency = freq; - bandwidth = bw; - mode = MODE_OFDM; - } else if (mode == MODE_ATSC) { - id = dbID; - frequency = freq; - modulation = mod; - logicalChannelNum = channelNum; - mod = MODE_ATSC; - } else if (mode == MODE_ANALOG) { - id = dbID; - frequency = freq; - audio = 0; - standard = 0; - afc_data = 0; - mode = MODE_ANALOG; - } else if (mode == MODE_DTMB) { - id = dbID; - frequency = freq; - bandwidth = bw; - mode = MODE_DTMB; - } -} - -CTvChannel::~CTvChannel() -{ -} - -Vector<CTvChannel> CTvChannel::tvChannelList(int sat_id __unused) -{ - Vector<CTvChannel> v_channel; - return v_channel; -} - -int CTvChannel::selectByID(int cid, CTvChannel &channel) -{ - String8 cmd = String8("select * from ts_table where ts_table.db_id = ") + String8::format("%d", cid); - CTvDatabase::Cursor c; - CTvDatabase::GetTvDb()->select(cmd, c); - - if (c.moveToFirst()) { - channel.createFromCursor(c); - } else { - c.close(); - return -1; - } - c.close(); - - return 0; -} - -int CTvChannel::SelectByFreq(int freq, CTvChannel &channel) -{ - String8 cmd ; - CTvDatabase::Cursor c; - int iOutRet = 0; - - do { - cmd = String8("select * from ts_table where ts_table.freq = ") + String8::format("%d", freq); - CTvDatabase::GetTvDb()->select(cmd, c); - - if (c.moveToFirst()) { - channel.createFromCursor(c); - } else { - iOutRet = -1; - break; - } - - cmd = String8("delete from ts_table where ts_table.freq = ") + String8::format("%d", freq); - CTvDatabase::GetTvDb()->exeSql(cmd.string()); - } while (false); - - c.close(); - return iOutRet; -} - -int CTvChannel::DeleteBetweenFreq(int beginFreq, int endFreq) -{ - String8 cmd ; - CTvDatabase::Cursor c; - int iOutRet = 0; - CTvChannel channel; - - do { - cmd = String8("select * from ts_table where ts_table.freq >= ") + String8::format("%d", beginFreq) - + String8("and ts_table.freq <= ") + String8::format("%d", endFreq); - CTvDatabase::GetTvDb()->select(cmd, c); - if (c.moveToFirst()) { - do { - channel.createFromCursor(c); - cmd = String8("delete from ts_table where ts_table.freq = ") + String8::format("%d", channel.frequency); - CTvDatabase::GetTvDb()->exeSql(cmd.string()); - } while (c.moveToNext()); - } else { - iOutRet = -1; - break; - } - - } while (false); - - c.close(); - return iOutRet; -} - -int CTvChannel::CleanAllChannelBySrc(int src) -{ - String8 cmd = String8("delete from ts_table where src = ") + String8::format("%d", src); - CTvDatabase::GetTvDb()->exeSql(cmd.string()); - return 0; -} - -int CTvChannel::getChannelListBySrc(int src, Vector< sp<CTvChannel> > &v_channel) -{ - CTvDatabase::Cursor c; - CTvChannel *channel; - do { - String8 cmd = String8("select * from ts_table where src = ") + String8::format("%d", src); - CTvDatabase::GetTvDb()->select(cmd, c); - if (c.moveToFirst()) { - do { - channel = new CTvChannel(); - channel->createFromCursor(c); - v_channel.add(channel); - } while (c.moveToNext()); - } else { - break; - } - } while (false); - - return 0; -} - -int CTvChannel::updateByID(int progID, int std, int freq, int fineFreq) -{ - - String8 cmd = String8("update ts_table set std = ") + String8::format("%d", std) + - String8(", freq = ") + String8::format("%d", freq) + - String8(", flags = ") + String8::format("%d", fineFreq) + - String8(" where ts_table.db_id = ") + String8::format("%d", progID); - LOGD("%s, cmd = %s\n", "TV", cmd.string()); - CTvDatabase::GetTvDb()->exeSql(cmd.string()); - - return 0; -} - -void CTvChannel::tvChannelDel() -{ -} - -void CTvChannel::tvChannelDelBySatID(int id __unused) -{ -} - -int CTvChannel::getDVBTSID() -{ - return dvbTSID; -} - -void CTvChannel::getDVBOrigNetID() -{ -} - -void CTvChannel::getFrontendID() -{ -} - -void CTvChannel::getTSSourceID() -{ -} - -void CTvChannel::isDVBCMode() -{ -} - -void CTvChannel::setFrequency() -{ -} - -void CTvChannel::setSymbolRate() -{ -} - -void CTvChannel::setPolarisation() -{ -} - -void CTvChannel::setATVAudio() -{ -} - -void CTvChannel::setATVVideoFormat() -{ -} - -void CTvChannel::setATVAudioFormat() -{ -} - -void CTvChannel::setATVFreq() -{ -} - -void CTvChannel::setATVAfcData() -{ -} - diff --git a/tvapi/libtv/tvdb/CTvChannel.h b/tvapi/libtv/tvdb/CTvChannel.h deleted file mode 100644 index 6b01f58..0000000 --- a/tvapi/libtv/tvdb/CTvChannel.h +++ b/dev/null @@ -1,287 +0,0 @@ -// -// -// amlogic 2013 -// -// @ Project : tv -// @ File Name : CTvChannel.h -// @ Date : 2013-11 -// @ Author : -// -// - - -#if !defined(_CTVCHANNEL_H) -#define _CTVCHANNEL_H -#include <utils/Vector.h> -#include "CTvDatabase.h" -#include <utils/String8.h> -#include <utils/RefBase.h> -#include <stdlib.h> - -#include "CTvLog.h" -using namespace android; -// ӦģеһƵ㣬ֵеһƵƵTS -class CTvChannel: public LightRefBase<CTvChannel> { - -public : - static const int FE_HAS_SIGNAL = 0x01; - static const int FE_HAS_CARRIER = 0x02; - static const int FE_HAS_VITERBI = 0x04; - static const int FE_HAS_SYNC = 0x08; - /***/ - static const int FE_HAS_LOCK = 0x10; - /**ʱ*/ - static const int FE_TIMEDOUT = 0x20; - static const int FE_REINIT = 0x40; - - /**QPSKģʽ*/ - static const int MODE_QPSK = 0; - /**QAMģʽ*/ - static const int MODE_QAM = 1; - /**OFDMģʽ*/ - static const int MODE_OFDM = 2; - /**ATSCģʽ*/ - static const int MODE_ATSC = 3; - /**ģģʽ*/ - static const int MODE_ANALOG = 4; - /**DTMBģʽ*/ - static const int MODE_DTMB = 5; - - - /**8MHz*/ - static const int BANDWIDTH_8_MHZ = 0; - /**7MHz*/ - static const int BANDWIDTH_7_MHZ = 1; - /**6MHz*/ - static const int BANDWIDTH_6_MHZ = 2; - /**Զ*/ - static const int BANDWIDTH_AUTO = 3; - /**5MHZ*/ - static const int BANDWIDTH_5_MHZ = 4; - /**10MHZ*/ - static const int BANDWIDTH_10_MHZ = 5; - - /**QPSK*/ - static const int MODULATION_QPSK = 0; - /**QAM16*/ - static const int MODULATION_QAM_16 = 1; - /**QAM32*/ - static const int MODULATION_QAM_32 = 2; - /**QAM64*/ - static const int MODULATION_QAM_64 = 3; - /**QAM128*/ - static const int MODULATION_QAM_128 = 4; - /**QAM256*/ - static const int MODULATION_QAM_256 = 5; - /**QAM(Զ)*/ - static const int MODULATION_QAM_AUTO = 6; - /**VSB8*/ - static const int MODULATION_VSB_8 = 7; - /**VSB16*/ - static const int MODULATION_VSB_16 = 8; - /**PSK8*/ - static const int MODULATION_PSK_8 = 9; - /**APSK16*/ - static const int MODULATION_APSK_16 = 10; - /**APSK32*/ - static const int MODULATION_APSK_32 = 11; - /**DQPSK*/ - static const int MODULATION_DQPSK = 12; - - /***/ - static const int AUDIO_MONO = 0x0000; - /***/ - static const int AUDIO_STEREO = 0x0001; - /**2*/ - static const int AUDIO_LANG2 = 0x0002; - /**SAP*/ - static const int AUDIO_SAP = 0x0002; - /**1*/ - static const int AUDIO_LANG1 = 0x0003; - /**1/2*/ - static const int AUDIO_LANG1_LANG2 = 0x0004; - - /**PAL B*/ - static const int STD_PAL_B = 0x00000001; - /**PAL B1*/ - static const int STD_PAL_B1 = 0x00000002; - /**PAL G*/ - static const int STD_PAL_G = 0x00000004; - /**PAL H*/ - static const int STD_PAL_H = 0x00000008; - /**PAL I*/ - static const int STD_PAL_I = 0x00000010; - /**PAL D*/ - static const int STD_PAL_D = 0x00000020; - /**PAL D1*/ - static const int STD_PAL_D1 = 0x00000040; - /**PAL K*/ - static const int STD_PAL_K = 0x00000080; - /**PAL M*/ - static const int STD_PAL_M = 0x00000100; - /**PAL N*/ - static const int STD_PAL_N = 0x00000200; - /**PAL Nc*/ - static const int STD_PAL_Nc = 0x00000400; - /**PAL 60*/ - static const int STD_PAL_60 = 0x00000800; - /**NTSC M*/ - static const int STD_NTSC_M = 0x00001000; - /**NTSC M JP*/ - static const int STD_NTSC_M_JP = 0x00002000; - /**NTSC 443*/ - static const int STD_NTSC_443 = 0x00004000; - /**NTSC M KR*/ - static const int STD_NTSC_M_KR = 0x00008000; - /**SECAM B*/ - static const int STD_SECAM_B = 0x00010000; - /**SECAM D*/ - static const int STD_SECAM_D = 0x00020000; - /**SECAM G*/ - static const int STD_SECAM_G = 0x00040000; - /**SECAM H*/ - static const int STD_SECAM_H = 0x00080000; - /**SECAM K*/ - static const int STD_SECAM_K = 0x00100000; - /**SECAM K1*/ - static const int STD_SECAM_K1 = 0x00200000; - /**SECAM L*/ - static const int STD_SECAM_L = 0x00400000; - /**SECAM LC*/ - static const int STD_SECAM_LC = 0x00800000; - /**ATSC VSB8*/ - static const int STD_ATSC_8_VSB = 0x01000000; - /**ATSC VSB16*/ - static const int STD_ATSC_16_VSB = 0x02000000; - /**NTSC*/ - static const int STD_NTSC = STD_NTSC_M | STD_NTSC_M_JP | STD_NTSC_M_KR; - /**SECAM DK*/ - static const int STD_SECAM_DK = STD_SECAM_D | STD_SECAM_K | STD_SECAM_K1; - /**SECAM*/ - static const int STD_SECAM = STD_SECAM_B | STD_SECAM_G | STD_SECAM_H | STD_SECAM_DK | STD_SECAM_L | STD_SECAM_LC; - /**PAL BG*/ - static const int STD_PAL_BG = STD_PAL_B | STD_PAL_B1 | STD_PAL_G; - /**PAL DK*/ - static const int STD_PAL_DK = STD_PAL_D | STD_PAL_D1 | STD_PAL_K; - /**PAL*/ - static const int STD_PAL = STD_PAL_BG | STD_PAL_DK | STD_PAL_H | STD_PAL_I; - - //static const int TUNER_STD_MN = STD_PAL_M|STD_PAL_N|STD_PAL_Nc| STD_NTSC - static const int STD_B = STD_PAL_B | STD_PAL_B1 | STD_SECAM_B; - static const int STD_GH = STD_PAL_G | STD_PAL_H | STD_SECAM_G | STD_SECAM_H; - static const int STD_DK = STD_PAL_DK | STD_SECAM_DK; - static const int STD_M = STD_PAL_M | STD_NTSC_M; - static const int STD_BG = STD_PAL_BG | STD_SECAM_B | STD_SECAM_G ; - - static const int COLOR_AUTO = 0x02000000; - static const int COLOR_PAL = 0x04000000; - static const int COLOR_NTSC = 0x08000000; - static const int COLOR_SECAM = 0x10000000; - - /**ˮƽ*/ - static const int SAT_POLARISATION_H = 0; - /**ֱ*/ - static const int SAT_POLARISATION_V = 1; - -public: - CTvChannel(); - CTvChannel(int dbID, int mode, int freq, int bw, int mod, int sym, int ofdm, int channelNum); - ~CTvChannel(); - // TVChannelParams,ݿһChannel - - // *ǰͨ - // *@param sat_id id - // *@return شͨ - static Vector<CTvChannel> tvChannelList(int sat_id); - static int selectByID(int id, CTvChannel &c); - static int updateByID(int progID, int std, int freq, int fineFreq); - static int SelectByFreq(int freq, CTvChannel &channel); - static int DeleteBetweenFreq(int beginFreq, int endFreq); - static int CleanAllChannelBySrc(int src); - static int getChannelListBySrc(int src, Vector< sp<CTvChannel> > &v_channel); - void tvChannelDel(); - static void tvChannelDelBySatID(int id); - int getID() - { - return id; - }; - int getDVBTSID(); - void getDVBOrigNetID(); - void getFrontendID(); - void getTSSourceID(); - void isDVBCMode(); - void setFrequency(); - int getFrequency() - { - return frequency; - } - int getSymbolRate() - { - return symbolRate; - } - int getModulation() - { - return modulation; - } - int getBandwidth() - { - return bandwidth; - } - int getMode() - { - return mode; - } - - int getStd() - { - return standard; - }; - int getAfcData() - { - return afc_data; - }; - int getLogicalChannelNum() - { - return logicalChannelNum; - }; - // ÷(QPSK/QAMģʽ) - // @param symbolRate - void setSymbolRate(); - // ü(QPSKģʽ) - void setPolarisation(); - void setATVAudio(); - // ģƵʽ - void setATVVideoFormat(); - void setATVAudioFormat(); - void setATVFreq(); - void setATVAfcData(); - // -private: - - void createFromCursor(CTvDatabase::Cursor &c); - - // - int id; - int dvbTSID; - int dvbOrigNetID; - int fendID; - int tsSourceID; - - int mode; - int frequency; - int symbolRate; - int modulation; - int bandwidth; - int audio; - int standard; - int afc_data; - int sat_id; - int logicalChannelNum; - //showboz - //public TVSatelliteParams tv_satparams; - int sat_polarisation; - -}; - -#endif //_CTVCHANNEL_H - diff --git a/tvapi/libtv/tvdb/CTvDatabase.cpp b/tvapi/libtv/tvdb/CTvDatabase.cpp deleted file mode 100644 index ef36364..0000000 --- a/tvapi/libtv/tvdb/CTvDatabase.cpp +++ b/dev/null @@ -1,256 +0,0 @@ -// -// -// amlogic 2013 -// -// @ Project : tv -// @ File Name : CTvDatabase.cpp -// @ Date : 2013-11 -// @ Author : -// -#define LOG_TAG "CTvDatabase" - -#include <assert.h> -#include <tinyxml.h> -#include "CTvDatabase.h" -#include "tvutils/tvutils.h" -#include "../tvconfig/tvconfig.h" - -const char *CTvDatabase::DEFAULT_DB_PATH = "/param/tv_default.xml"; - -const char *CTvDatabase::DB_VERSION_FIELD = "DATABASE_VERSION"; -using namespace android; - -CTvDatabase *CTvDatabase::mpDb = NULL; - -const char CTvDatabase::feTypes[][32] = {"dvbs", "dvbc", "dvbt", "atsc", "analog", "dtmb"}; -const char CTvDatabase::srvTypes[][32] = {"other", "dtv", "radio", "atv", "other"}; -const char CTvDatabase::vidFmts[][32] = {"mpeg12", "mpeg4", "h264", "mjpeg", "real", "jpeg", "vc1", "avs"}; -const char CTvDatabase::audFmts[][32] = {"mpeg", "pcm_s16le", "aac", "ac3", "alaw", "mulaw", "dts", "pcm_s16be", - "flac", "cook", "pcm_u8", "adpcm", "amr", "raac", "wma", "wma_pro", - "pcm_bluray", "alac", "vorbis", "aac_latm", "ape", "eac3", "pcm_wifidisplay" - }; -const char CTvDatabase::mods[][32] = {"qpsk", "qam16", "qam32", "qam64", "qam128", "qam256", "qamauto", "vsb8", "vsb16", "psk8", "apsk16", "apsk32", "dqpsk"}; -const char CTvDatabase::bandwidths[][32] = {"8", "7", "6", "auto", "5", "10", "1_712"}; -const char CTvDatabase::lnbPowers[][32] = {"13v", "18V", "off", "13/18v"}; -const char CTvDatabase::sig22K[][32] = {"on", "off", "auto"}; -const char CTvDatabase::tonebursts[][32] = {"none", "bursta", "burstb"}; -const char CTvDatabase::diseqc10s[][32] = {"lnb1", "lnb2", "lnb3", "lnb4", "none"}; -const char CTvDatabase::diseqc11s[][32] = {"lnb1", "lnb2", "lnb3", "lnb4", "lnb5", "lnb6", "lnb7", "lnb8", - "lnb9", "lnb10", "lnb11", "lnb12", "lnb13", "lnb14", "lnb15", "lnb16", "none" - }; -const char CTvDatabase::motors[][32] = {"none", "none", "none", "diseqc1.2", "diseqc1.3"}; -const char CTvDatabase::ofdmModes[][32] = {"dvbt", "dvbt2"}; -const char CTvDatabase::atvVideoStds[][32] = {"auto", "pal", "ntsc", "secam"}; -const char CTvDatabase::atvAudioStds[][32] = {"dk", "i", "bg", "m", "l", "auto"}; - -CTvDatabase::CTvDatabase() -{ -} - -int CTvDatabase::isFreqListExist() -{ - String8 cmd = String8("select * from region_table"); - CTvDatabase::Cursor c; - select(cmd, c); - return c.moveToFirst(); -} -int CTvDatabase::UnInitTvDb() -{ - AM_DB_UnSetup(); - closeDb(); - return 0; -} -int CTvDatabase::InitTvDb(const char *path) -{ - if (path != NULL) { - if (Tv_Utils_IsFileExist(path) && config_get_int("TV", "tv_db_created", 0) == 1) { //exist or created - LOGD("tv db file(%s) exist and created, open it", path); - if (openDb(path) < 0 ) { - LOGD("db(%s) open fail", path); - return -1; - } - //setup and path set - AM_DB_Setup((char *)path, getHandle()); - if (isFreqListExist() == false) { - importXmlToDB("/etc/tv_default.xml"); - LOGD("scan region table is NULL, so import freq XML again\n"); - } - } else { - if (Tv_Utils_IsFileExist(path)) { // if just exist, create flag not set, delete it - LOGD("tv db file (%s) exist, but delete it", path); - if (unlink(path) != 0) { - LOGD("delete tv db file(%s) err=%s", path, strerror(errno)); - } - } - LOGD("tv db file(%s) not exist, create it", path); - //setup and path set - sqlite3 *h = NULL; - AM_DB_Setup((char *)path, h); - //create db - AM_DB_GetHandle(&h); - //create table - AM_DB_CreateTables(h); - setHandle(h); - //clear db - ClearDbTable(); - //insert 256 ATV Program - //load init date - importXmlToDB("/etc/tv_default.xml"); - config_set_int("TV", "tv_db_created", 1); - } - - } - return 0; -} -//CTvDatabase::CTvDatabase(char* path, sqlite3 * h) -//{ -/*if(path != NULL && h != NULL) -{//setup and path set - AM_DB_Setup((char*)path, h); - mHandle = h; -}else -{ - mHandle = NULL; -}*/ -//} - -CTvDatabase::~CTvDatabase() -{ - AM_DB_UnSetup(); -} - -int CTvDatabase::getChannelParaList(char *path, Vector<sp<ChannelPara> > &vcp) -{ - //?????o?????aXML????????£?ˉ1è±???? - TiXmlDocument myDocument(path); - bool ret = myDocument.LoadFile(); - //è?·?????1????′? - TiXmlElement *RootElement = myDocument.RootElement(); - //dvbc - TiXmlElement *channel_list_element = RootElement->FirstChildElement("channel_list"); - for (TiXmlElement *channel_entry = channel_list_element->FirstChildElement("channel_entry") ; channel_entry != NULL; channel_entry = channel_entry->NextSiblingElement("channel_entry")) { - sp<ChannelPara> pCp = new ChannelPara(); - channel_entry->Attribute("frequency", &(pCp->freq)); - channel_entry->Attribute("modulation", &(pCp->modulation)); - channel_entry->Attribute("symbol_rate", &(pCp->symbol_rate)); - vcp.push_back(pCp); - } - return vcp.size(); -} - -int CTvDatabase::ClearDbTable() -{ - LOGD("Clearing database ..."); - exeSql("delete from net_table"); - exeSql("delete from ts_table"); - exeSql("delete from srv_table"); - exeSql("delete from evt_table"); - exeSql("delete from booking_table"); - exeSql("delete from grp_table"); - exeSql("delete from grp_map_table"); - exeSql("delete from dimension_table"); - exeSql("delete from sat_para_table"); - exeSql("delete from region_table"); - return 0; -} - -int CTvDatabase::clearDbAllProgramInfoTable() -{ - LOGD("Clearing clearDbAllProgramInfoTable ..."); - exeSql("delete from net_table"); - exeSql("delete from ts_table"); - exeSql("delete from srv_table"); - exeSql("delete from evt_table"); - exeSql("delete from booking_table"); - exeSql("delete from grp_table"); - exeSql("delete from grp_map_table"); - exeSql("delete from dimension_table"); - exeSql("delete from sat_para_table"); - return 0; -} - -//showboz now just channellist -int CTvDatabase::importXmlToDB(const char *xmlPath) -{ - //delete region table before importing xml - exeSql("delete from region_table"); - - //?????o?????aXML????????£?ˉ1è±???? - TiXmlDocument myDocument(xmlPath); - bool ret = myDocument.LoadFile(); - - //è?·?????1????′? - TiXmlElement *RootElement = myDocument.RootElement(); - beginTransaction();//----------------------------------------------- - //list-->entry - for (TiXmlElement *channel_list_element = RootElement->FirstChildElement("channel_list"); channel_list_element != NULL; channel_list_element = channel_list_element->NextSiblingElement("channel_list")) { - //LOGD("showboz-----channel_list =%d", channel_list_element); - const char *channel_name = channel_list_element->Attribute("name"); - const char *channel_fe_type = channel_list_element->Attribute("fe_type"); - //LOGD("showboz-----channel_list name = %s type=%s", channel_name, channel_fe_type); - - for (TiXmlElement *channel_entry = channel_list_element->FirstChildElement("channel_entry") ; channel_entry != NULL; channel_entry = channel_entry->NextSiblingElement("channel_entry")) { - int freq, symb, channelNum; - String8 cmd = String8("insert into region_table(name,fe_type,frequency,symbol_rate,modulation,bandwidth,ofdm_mode,logical_channel_num)"); - cmd += String8("values('") + channel_name + String8("',") + String8::format("%d", StringToIndex(feTypes, channel_fe_type)) + String8(","); - channel_entry->Attribute("frequency", &freq); - cmd += String8::format("%d", freq) + String8(","); - channel_entry->Attribute("symbol_rate", &symb); - cmd += String8::format("%d", symb) + String8(","); - //LOGD("showboz---------m=%s,b=%s,o=%s", channel_entry->Attribute("modulation"), channel_entry->Attribute("bandwidth"), channel_entry->Attribute("ofdm_mode")); - cmd += String8::format("%d", StringToIndex(mods, channel_entry->Attribute("modulation"))) + String8(","); - cmd += String8::format("%d", StringToIndex(bandwidths, channel_entry->Attribute("bandwidth"))) + String8(","); - cmd += String8::format("%d", StringToIndex(ofdmModes, channel_entry->Attribute("ofdm_mode"))) + String8(","); - channel_entry->Attribute("logical_channel_num", &channelNum); - cmd += String8::format("%d", channelNum) + String8(")"); - exeSql(cmd.string()); - } - } - - commitTransaction();//------------------------------------------------------ - return 0; -} - -bool CTvDatabase::isAtv256ProgInsertForSkyworth() -{ - String8 select_ts_atvcount = String8("select * from ts_table where src = 4"); - Cursor c; - select(select_ts_atvcount, c); - return c.getCount() < 256 ? false : true; -} - -int CTvDatabase::insert256AtvProgForSkyworth() -{ - beginTransaction(); - for (int i = 0; i < 256; i++) { - String8 insert_ts = String8("insert into ts_table(db_id, src, db_net_id, ts_id, freq, symb, mod, bw, snr, ber, strength, db_sat_para_id, polar, std, aud_mode, flags, dvbt_flag) values ("); - insert_ts += String8::format("'%d'", i); - insert_ts += String8(", '4', '-1', '-1', '44250000', '0', '0', '0', '0', '0', '0', '-1', '-1', '-1', '1', '0', '0')"); - exeSql(insert_ts.string()); - String8 insert_srv = String8("insert into srv_table(db_id, src, db_net_id, db_ts_id, name, service_id, service_type, eit_schedule_flag, eit_pf_flag, running_status, free_ca_mode, volume, aud_track, pmt_pid, vid_pid, vid_fmt, scrambled_flag, current_aud, aud_pids, aud_fmts, aud_langs, aud_types, current_sub, sub_pids, sub_types, sub_composition_page_ids, sub_ancillary_page_ids, sub_langs, current_ttx, ttx_pids, ttx_types, ttx_magazine_nos, ttx_page_nos, ttx_langs, chan_num, skip, lock, favor, lcn, sd_lcn, hd_lcn, default_chan_num, chan_order, lcn_order, service_id_order, hd_sd_order, db_sat_para_id, dvbt2_plp_id, major_chan_num, minor_chan_num, access_controlled, hidden, hide_guide, source_id, sdt_ver) values ("); - insert_srv += String8::format("'%d'", i); - insert_srv += String8(" , '4', '-1', "); - insert_srv += String8::format("'%d'", i); - insert_srv += String8(", 'xxxATV Program', '-1', '3', '-1', '-1', '-1', '-1', '50', '1', '-1', '-1', '-1', '0', '-1', '-1', '-1', 'Audio1', '0', '-1', ' ', ' ', ' ', ' ', ' ', '-1', ' ', ' ', ' ', ' ', ' ', '-1', '1', '0', '0', '-1', '-1', '-1', '-1', "); - insert_srv += String8::format("'%d'", i); - insert_srv += String8(" , '0', '0', '0', '-1', '255', '0', '0', '0', '0', '0', '0', '255') "); - exeSql(insert_srv.string()); - } - commitTransaction(); - return 0; -} - -void CTvDatabase::deleteTvDb() -{ - if (mpDb != NULL) { - delete mpDb; - mpDb = NULL; - } -} -CTvDatabase *CTvDatabase::GetTvDb() -{ - if (mpDb == NULL) { - mpDb = new CTvDatabase(); - } - return mpDb; -} diff --git a/tvapi/libtv/tvdb/CTvDatabase.h b/tvapi/libtv/tvdb/CTvDatabase.h deleted file mode 100644 index fc9b285..0000000 --- a/tvapi/libtv/tvdb/CTvDatabase.h +++ b/dev/null @@ -1,94 +0,0 @@ -// -// -// amlogic 2013 -// -// @ Project : tv -// @ File Name : CTvDatabase.h -// @ Date : 2013-11 -// @ Author : -// -// -#include <am_db.h> -#if !defined(_CTVDATABASE_H) -#define _CTVDATABASE_H -// ʹAM_DB -#include <unistd.h> -#include <stdlib.h> -#include <utils/String8.h> -#include <utils/Log.h> -#include <utils/Vector.h> -#include <utils/RefBase.h> -#include <tvutils/CSqlite.h> - -#include "CTvLog.h" - - -using namespace android; -//,ֻԵӹܰĵļݿ,AM_DBй -//Ĺ -class CTvDatabase: public CSqlite { -public: - static const char *DEFAULT_DB_PATH; - static const int DB_VERSION = 8; - static const char *DB_VERSION_FIELD; - - static const char feTypes[][32]; - static const char srvTypes[][32]; - static const char vidFmts[][32]; - static const char audFmts[][32]; - static const char mods[][32]; - static const char bandwidths[][32]; - static const char lnbPowers[][32]; - static const char sig22K[][32]; - static const char tonebursts[][32]; - static const char diseqc10s[][32]; - static const char diseqc11s[][32]; - static const char motors[][32]; - static const char ofdmModes[][32]; - static const char atvVideoStds[][32]; - static const char atvAudioStds[][32]; - template<typename T> - int StringToIndex(const T &t, const char *item) - { - if (item == NULL) return -1; - int size = sizeof(t) / sizeof(t[0]); - for (int i = 0; i < size; i++) { - if (strcmp(t[i], item) == 0) return i; - } - return -1; - } -public: - CTvDatabase(); - //ֱָݿӾ - //CTvDatabase(char* path, sqlite3 * h); - static CTvDatabase *GetTvDb(); - static void deleteTvDb(); - ~CTvDatabase(); - //ָ·TVݿ. - int UnInitTvDb(); - int InitTvDb(const char *path); - //showboz test - class ChannelPara : public LightRefBase<ChannelPara> { - public: - int mode; - int freq; - int symbol_rate; - int modulation; - int bandwidth; - int polar; - }; - - static int getChannelParaList(char *path, Vector<sp<ChannelPara> > &vcp); - - int importDbToXml(); - int importXmlToDB(const char *xmlPath); - bool isAtv256ProgInsertForSkyworth(); - int insert256AtvProgForSkyworth(); - int ClearDbTable(); - int clearDbAllProgramInfoTable(); -private: - static CTvDatabase *mpDb; - int isFreqListExist(void); -}; - -#endif //_CTVDATABASE_H diff --git a/tvapi/libtv/tvdb/CTvDimension.cpp b/tvapi/libtv/tvdb/CTvDimension.cpp deleted file mode 100644 index 0432a83..0000000 --- a/tvapi/libtv/tvdb/CTvDimension.cpp +++ b/dev/null @@ -1,639 +0,0 @@ -#define LOG_TAG "CTvDimension" - -#include "CTvDimension.h" -#include "CTvProgram.h" -#include "CTvTime.h" -#include "CTvEvent.h" -#include "../tvconfig/tvconfig.h" - -/** - *TV ATSC rating dimension - */ - -void CTvDimension::createFromCursor(CTvDatabase::Cursor &c) -{ - int col; - - col = c.getColumnIndex("db_id"); - this->id = c.getInt(col); - - col = c.getColumnIndex("index_j"); - this->indexj = c.getInt(col); - - col = c.getColumnIndex("rating_region"); - this->ratingRegion = c.getInt(col); - - col = c.getColumnIndex("graduated_scale"); - this->graduatedScale = c.getInt(col); - - col = c.getColumnIndex("name"); - this->name = c.getString(col); - - col = c.getColumnIndex("rating_region_name"); - this->ratingRegionName = c.getString(col); - - col = c.getColumnIndex("values_defined"); - this->valuesDefined = c.getInt(col); - this->lockValues = new int[valuesDefined]; - this->abbrevValues = new String8[valuesDefined]; - this->textValues = new String8[valuesDefined]; - char temp[256]; - for (int i = 0; i < valuesDefined; i++) { - sprintf(temp, "abbrev%d", i); - col = c.getColumnIndex(temp); - this->abbrevValues[i] = c.getString(col); - sprintf(temp, "text%d", i); - col = c.getColumnIndex(temp); - this->textValues[i] = c.getString(col); - sprintf(temp, "locked%d", i); - col = c.getColumnIndex(temp); - this->lockValues[i] = c.getInt(col); - } - - if (ratingRegion == REGION_US && !strcmp(name, "All")) { - isPGAll = true; - } else { - isPGAll = false; - } -} - -CTvDimension::CTvDimension(CTvDatabase::Cursor &c) -{ - createFromCursor(c); -} -CTvDimension::CTvDimension() -{ - -} -CTvDimension::~CTvDimension() -{ - if (lockValues != NULL) { - delete []lockValues; - } - if (textValues != NULL) { - delete []textValues; - } - if (abbrevValues != NULL) { - delete []abbrevValues; - } -} - -/* 'All' is a very special case, it links to dimension0 & dimension5 */ -int CTvDimension::getUSPGAllLockStatus(String8 abbrev) -{ - int len = 0; - CTvDimension dm5; - int j = 0; - selectByIndex(dm5, CTvDimension::REGION_US, 5); - len = dm5.getDefinedValue(); - String8 dm5Abbrev[len - 1]; - dm5.getAbbrev(dm5Abbrev); - for (j = 0; j < len - 1; j++) { - if (dm5Abbrev[j] == abbrev) { - return dm5.getLockStatus(j + 1); - } - } - CTvDimension dm0; - selectByIndex(dm0, CTvDimension::REGION_US, 0); - len = dm0.getDefinedValue(); - String8 dm0Abbrev[len - 1]; - dm0.getAbbrev(dm0Abbrev); - for (j = 0; j < len - 1; j++) { - if (dm0Abbrev[j] == abbrev) { - return dm0.getLockStatus(j + 1); - } - } - return -1; -} - -void CTvDimension::setUSPGAllLockStatus(String8 abbrev, int lock) -{ - - int len = 0; - int j = 0; - - CTvDimension dm5; - - selectByIndex(dm5, REGION_US, 5); - len = dm5.getDefinedValue(); - String8 dm5Abbrev[len - 1]; - dm5.getAbbrev(dm5Abbrev); - - for (j = 0; j < len - 1; j++) { - if (abbrev == dm5Abbrev[j]) { - dm5.setLockStatus(j + 1, lock); - return; - } - } - - CTvDimension dm0; - selectByIndex(dm0, REGION_US, 0); - len = dm0.getDefinedValue(); - String8 dm0Abbrev[len - 1]; - dm0.getAbbrev(dm0Abbrev); - - for (j = 0; j < len - 1; j++) { - if (abbrev == dm0Abbrev[j]) { - dm0.setLockStatus(j + 1, lock); - return; - } - } - return; -} - - - -/** - *根据记录ID取得对应的TVDimension - *@param context 当前Context - *@param id 记录ID - *@return 返回ID对应的TVDimension对象 - */ -void CTvDimension::selectByID(CTvDimension &dm, int id) -{ - String8 cmd = String8("select * from dimension_table where evt_table.db_id = ") + String8::format("%d", id); - CTvDatabase::Cursor c; - int ret = CTvDatabase::GetTvDb()->select(cmd, c); - - if (c.moveToFirst()) { - dm.createFromCursor(c); - LOGD("%s, %d success", "TV", __LINE__); - } else { - LOGD("%s, %d fail", "TV", __LINE__); - c.close(); - return; - } - c.close(); - -} - -/** - *根据记录ID取得对应的TVDimension - *@param context 当前Context - *@param ratingRegionID rating region ID - *@return 返回ID对应的TVDimension对象 - */ -void CTvDimension::selectByRatingRegion(CTvDimension &dm, int ratingRegionID) -{ - String8 cmd = String8("select * from dimension_table where rating_region = ") + String8::format("%d", ratingRegionID); - CTvDatabase::Cursor c; - int ret = CTvDatabase::GetTvDb()->select(cmd, c); - - if (c.moveToFirst()) { - dm.createFromCursor(c); - LOGD("%s, %d success", "TV", __LINE__); - } else { - LOGD("%s, %d fail", "TV", __LINE__); - c.close(); - return; - } - c.close(); -} - -/** - *根据记录ID取得对应的TVDimension - *@param context 当前Context - *@param ratingRegionID rating region ID - *@param index RRT中对应的index_j - *@return 返回对应的TVDimension对象 - */ -int CTvDimension::selectByIndex(CTvDimension &dm, int ratingRegionID, int index) -{ - String8 cmd = String8("select * from dimension_table where rating_region = ") + String8::format("%d", ratingRegionID); - cmd += String8(" and index_j=") + String8::format("%d", index); - CTvDatabase::Cursor c; - int ret = CTvDatabase::GetTvDb()->select(cmd, c); - - if (c.moveToFirst()) { - dm.createFromCursor(c); - LOGD("%s, %d success", "TV", __LINE__); - } else { - LOGD("%s, %d fail", "TV", __LINE__); - c.close(); - return -1; - } - c.close(); - - return 0; -} - -/** - *根据ID和名字取得对应的TVDimension - *@param context 当前Context - *@param ratingRegionID rating region ID - *@param dimensionName dimension的名称 - *@return 返回对应的TVDimension对象 - */ -void CTvDimension::selectByName(CTvDimension &dm, int ratingRegionID, String8 dimensionName) -{ - String8 cmd = String8("select * from dimension_table where rating_region = ") + String8::format("%d", ratingRegionID); - cmd += String8(" and name='") + dimensionName + String8("'"); - CTvDatabase::Cursor c; - CTvDatabase::GetTvDb()->select(cmd, c); - - if (c.moveToFirst()) { - LOGD("%s, %d success", "TV", __LINE__); - dm.createFromCursor(c); - } else { - LOGD("%s, %d fail", "TV", __LINE__); - c.close(); - return; - } - c.close(); - - return; -} - - -/** - *判断指定rating_value是否需要block - *@param context 当前Context - *@param definedRating content_advisory_descr中定义的级别信息 - *@return 是否block - */ -bool CTvDimension::isBlocked(CTvDimension &dm, VChipRating *definedRating) -{ - int ret = 0; - ret = selectByIndex(dm, definedRating->getRegion(), definedRating->getDimension()); - if (ret != -1) { - LOGD("%s, %d, index=%d", "TV", __LINE__, definedRating->getValue()); - return (dm.getLockStatus(definedRating->getValue()) == 1); - } - - return false; -} - -/** - *取得事件的ID - *@return 返回事件的ID - */ -int CTvDimension::getID() -{ - return id; -} - -/** - *取得 rating region ID - *@return 返回 rating region ID - */ -int CTvDimension::getRatingRegion() -{ - return ratingRegion; -} - -int CTvDimension::getDefinedValue() -{ - return valuesDefined; -} -/** - *取得 rating region 名称 - *@return 返回 rating region 名称 - */ -String8 CTvDimension::getRatingRegionName() -{ - return ratingRegionName; -} - -/** - *取得Dimension名称 - *@return 返回Dimension名称 - */ -String8 CTvDimension::getName() -{ - return name; -} - -/** - *取得graduated scale标志 - *@return 返回graduated scale标志 - */ -int CTvDimension::getGraduatedScale() -{ - return graduatedScale; -} - -/** - *取得该dimension的所有values的加锁状态 - *@return 返回所有values的加锁状态,0-未加锁,-1-无效值,即不能对该项进行设置,其他-已加锁 - */ -#if 0 -int *CTvDimension::getLockStatus() -{ - int len = getDefinedValue(); - if (len > 1) { - if (isPGAll) { - return getUSPGAllLockStatus(abbrevValues); - } else { - int *lock = new int[len - 1]; - //System.arraycopy(lockValues, 1, l, 0, l.length); - for (int i = 0; i < len - 1; i++) - lock[i] = lockValues[1 + i]; - return lock; - } - } else { - return NULL; - } -} -#endif -/** - *取得该dimension的指定value的加锁状态 - *@param valueIndex value索引 - *@return 返回指定value的加锁状态,0-未加锁,-1-无效值,即不能对该项进行设置,其他-已加锁 - */ -int CTvDimension::getLockStatus(int valueIndex) -{ - int len = getDefinedValue(); - if (valueIndex >= len) { - return -1; - } else { - return lockValues[valueIndex]; - } -} - -/** - *取得该dimension的指定几个values的加锁状态 - *@param abbrevs 需要获取的value的abbrev集合 - *@return 返回指定values的加锁状态,0-未加锁,-1-无效值,即不能对该项进行设置,其他-已加锁 - */ -void CTvDimension::getLockStatus(String8 abbrevs[], int lock[], int *array_len) -{ - int i = 0; - int len = getDefinedValue(); - - if (abbrevs != NULL && lock != NULL) { - for (int i = 0; i < *array_len; i++) { - *(lock + i) = -1; - for (int j = 0; j < len; j++) { - if (abbrevs[i] == abbrevValues[j]) { - *(lock + i) = lockValues[j]; - break; - } - } - } - } - *array_len = len; -} - -/** - *取得该dimension的所有values的abbrev text - *@return 返回所有values的abbrev text - */ -int CTvDimension::getAbbrev(String8 abb[]) -{ - /* the first rating_value must be not visible to user */ - int len = getDefinedValue(); - if (len > 1) { - for (int i = 0; i < len - 1; i++) - abb[i] = abbrevValues[i + 1]; - return 0; - } else { - return -1; - } -} - -/** - *取得该dimension指定value的abbrev text - *@return 返回abbrev text - */ -String8 CTvDimension::getAbbrev(int valueIndex) -{ - int len = getDefinedValue(); - if (valueIndex >= len) - return String8(""); - else - return abbrevValues[valueIndex]; -} - -/** - *取得该dimension的所有values的value text - *@return 返回所有values的value text - */ -int CTvDimension::getText(String8 tx[]) -{ - int len = getDefinedValue(); - if (len > 1) { - for (int i = 0; i < len - 1; i++) - tx[i] = textValues[i + 1]; - return 0; - } else { - return -1; - } -} - -/** - *取得该dimension指定value的value text - *@return 返回value text - */ -String8 CTvDimension::getText(int valueIndex) -{ - int len = getDefinedValue(); - if (valueIndex >= len) - return String8(""); - else - return textValues[valueIndex]; -} - -/** - *设置指定value的加锁状态 - *@param valueIndex value索引 - *@param status 加锁状态 - */ -void CTvDimension::setLockStatus(int valueIndex, int status) -{ - int len = getDefinedValue(); - if (valueIndex >= len) - return; - - if (lockValues[valueIndex] != -1 && lockValues[valueIndex] != status) { - lockValues[valueIndex] = status; - String8 cmd = String8("update dimension_table set locked") + String8::format("%d", valueIndex); - cmd += String8("=") + String8::format("%d", status) + String8(" where db_id = ") + String8::format("%d", id); - - CTvDatabase::GetTvDb()->exeSql(cmd.string()); - } -} - -/** - *设置该dimension所有values的加锁状态 - *@param status 加锁状态 - */ -void CTvDimension::setLockStatus(int status[]) -{ - int len = getDefinedValue(); - if (status == NULL) { - LOGD("Cannot set lock status, invalid param"); - return; - } - for (int i = 0; i < len; i++) { - setLockStatus(i + 1, status[i]); - } -} - -/** - *设置指定values的加锁状态 - *@param abbrevs abbrev集合 - *@param locks 需要修改的与abbrev对应的加锁状态集合 - */ -void CTvDimension::setLockStatus(String8 abbrevs[], int locks[], int abb_size) -{ - int len = getDefinedValue(); - if (abbrevs == NULL || locks == NULL) - return; - - for (int i = 0; i < abb_size; i++) { - for (int j = 0; j < len; j++) { - if (abbrevs[i] == abbrevValues[j]) { - setLockStatus(j, locks[i]); - break; - } - } - } -} - -CTvDimension::VChipRating::VChipRating(int region, int dimension, int value) -{ - this->region = region; - this->dimension = dimension; - this->value = value; -} -CTvDimension::VChipRating::VChipRating() -{ -} - -CTvDimension::VChipRating::~VChipRating() -{ -} -int CTvDimension::VChipRating::getRegion() -{ - return region; -} - -int CTvDimension::VChipRating::getDimension() -{ - return dimension; -} - -int CTvDimension::VChipRating::getValue()const -{ - return value; -} - -String8 CTvDimension::getCurdimension() -{ - return CurvchipDimension; -} -String8 CTvDimension::getCurAbbr() -{ - return CurvchipAbbrev; - -} -String8 CTvDimension::getCurText() -{ - return CurvchipText; -} - -void CTvDimension::insertNewDimension(const int region, String8 regionName, String8 name, - int indexj, int *lock, const char **abbrev, const char **text, int size) -{ - String8 cmd = String8("insert into dimension_table(rating_region,rating_region_name,name,graduated_scale,"); - cmd += String8("values_defined,index_j,version,abbrev0,text0,locked0,abbrev1,text1,locked1,abbrev2,text2,locked2,"); - cmd += String8("abbrev3,text3,locked3,abbrev4,text4,locked4,abbrev5,text5,locked5,abbrev6,text6,locked6,"); - cmd += String8("abbrev7,text7,locked7,abbrev8,text8,locked8,abbrev9,text9,locked9,abbrev10,text10,locked10,"); - cmd += String8("abbrev11,text11,locked11,abbrev12,text12,locked12,abbrev13,text13,locked13,abbrev14,text14,locked14,"); - cmd += String8("abbrev15,text15,locked15) values(") + String8::format("%d", region) + String8(",'") + regionName.string(); - cmd += String8("','") + name.string() + String8("',0,") + String8::format("%d", size) + String8(",") + String8::format("%d", indexj) + String8(",0"); - for (int i = 0; i < 16; i++) { - if (i < size) { - cmd += String8(",'") + String8::format("%s", abbrev[i]) + String8("'"); - cmd += String8(",'") + String8::format("%s", text[i]) + String8("'"); - cmd += String8(",'") + String8::format("%d", lock[i]) + String8("'"); - } else { - cmd += String8(",''"); - cmd += String8(",''"); - cmd += String8(",-1"); - } - } - cmd += String8(")"); - CTvDatabase::GetTvDb()->exeSql(cmd.string()); -} -/** - * ??????Standard ATSC V-Chip Dimensions - */ -void CTvDimension::builtinAtscDimensions() -{ - CTvDatabase::GetTvDb()->exeSql("delete from dimension_table"); - - /* Add U.S. Rating region 0x1 */ - const char *abbrev0[] = {"", "None", "TV-G", "TV-PG", "TV-14", "TV-MA"}; - const char *text0[] = {"", "None", "TV-G", "TV-PG", "TV-14", "TV-MA"}; - int lock0[] = { -1, -1, 0, 0, 0, 0}; - const char *abbrev1[] = {"", "D", "TV-G", "TV-PG", "TV-14", "TV-MA"}; - const char *text1[] = {"", "D", "TV-G", "TV-PG", "TV-14", "TV-MA"}; - int lock1[] = { -1, -1, -1, 0, 0, -1}; - const char *abbrev2[] = {"", "L", "TV-G", "TV-PG", "TV-14", "TV-MA"}; - const char *text2[] = {"", "L", "TV-G", "TV-PG", "TV-14", "TV-MA"}; - int lock2[] = { -1, -1, -1, 0, 0, 0}; - const char *abbrev3[] = {"", "S", "TV-G", "TV-PG", "TV-14", "TV-MA"}; - const char *text3[] = {"", "S", "TV-G", "TV-PG", "TV-14", "TV-MA"}; - int lock3[] = { -1, -1, -1, 0, 0, 0}; - const char *abbrev4[] = {"", "V", "TV-G", "TV-PG", "TV-14", "TV-MA"}; - const char *text4[] = {"", "V", "TV-G", "TV-PG", "TV-14", "TV-MA"}; - int lock4[] = { -1, -1, -1, 0, 0, 0}; - const char *abbrev5[] = {"", "TV-Y", "TV-Y7"}; - const char *text5[] = {"", "TV-Y", "TV-Y7"}; - int lock5[] = { -1, 0, 0}; - const char *abbrev6[] = {"", "FV", "TV-Y7"}; - const char *text6[] = {"", "FV", "TV-Y7"}; - int lock6[] = { -1, -1, 0}; - const char *abbrev7[] = {"", "N/A", "G", "PG", "PG-13", "R", "NC-17", "X", "NR"}; - const char *text7[] = {"", "MPAA Rating Not Applicable", "Suitable for AllAges", - "Parental GuidanceSuggested", "Parents Strongly Cautioned", - "Restricted, under 17 must be accompanied by adult", - "No One 17 and Under Admitted", "No One 17 and Under Admitted", - "no Rated by MPAA" - }; - int lock7[] = { -1, -1, 0, 0, 0, 0, 0, 0, 0}; - /*Extra for 'All' */ - const char *abbrevall[] = {"TV-Y", "TV-Y7", "TV-G", "TV-PG", "TV-14", "TV-MA"}; - const char *textall[] = {"TV-Y", "TV-Y7", "TV-G", "TV-PG", "TV-14", "TV-MA"}; - int lockall[] = {0, 0, 0, 0, 0, 0}; - - insertNewDimension(CTvDimension::REGION_US, String8("US (50 states + possessions)"), - String8("Entire Audience"), 0, lock0, abbrev0, text0, sizeof(lock0) / sizeof(int)); - insertNewDimension(CTvDimension::REGION_US, String8("US (50 states + possessions)"), - String8("Dialogue"), 1, lock1, abbrev1, text1, sizeof(lock1) / sizeof(int)); - insertNewDimension(CTvDimension::REGION_US, String8("US (50 states + possessions)"), - String8("Language"), 2, lock2, abbrev2, text2, sizeof(lock2) / sizeof(int)); - insertNewDimension(CTvDimension::REGION_US, String8("US (50 states + possessions)"), - String8("Sex"), 3, lock3, abbrev3, text3, sizeof(lock3) / sizeof(int)); - insertNewDimension(CTvDimension::REGION_US, String8("US (50 states + possessions)"), - String8("Violence"), 4, lock4, abbrev4, text4, sizeof(lock4) / sizeof(int)); - insertNewDimension(CTvDimension::REGION_US, String8("US (50 states + possessions)"), - String8("Children"), 5, lock5, abbrev5, text5, sizeof(lock5) / sizeof(int)); - insertNewDimension(CTvDimension::REGION_US, String8("US (50 states + possessions)"), - String8("Fantasy violence"), 6, lock6, abbrev6, text6, sizeof(lock6) / sizeof(int)); - insertNewDimension(CTvDimension::REGION_US, String8("US (50 states + possessions)"), - String8("MPAA"), 7, lock7, abbrev7, text7, sizeof(lock7) / sizeof(int)); - insertNewDimension(CTvDimension::REGION_US, String8("US (50 states + possessions)"), - String8("All"), -1, lockall, abbrevall, textall, sizeof(lockall) / sizeof(int)); - /* Add Canadian Rating region 0x2 */ - const char *cabbrev0[] = {"E", "C", "C8+", "G", "PG", "14+", "18+"}; - const char *ctext0[] = {"Exempt", "Children", "8+", "General", "PG", "14+", "18+"}; - int clock0[] = {0, 0, 0, 0, 0, 0, 0}; - const char *cabbrev1[] = {"E", "G", "8 ans+", "13 ans+", "16 ans+", "18 ans+"}; - const char *ctext1[] = {"Exempt??es", "Pour tous", "8+", "13+", "16+", "18+"}; - int clock1[] = {0, 0, 0, 0, 0, 0}; - - insertNewDimension(CTvDimension::REGION_CANADA, String8("Canada"), - String8("Canadian English Language Rating"), 0, clock0, cabbrev0, ctext0, sizeof(clock0) / sizeof(int)); - insertNewDimension(CTvDimension::REGION_CANADA, String8("Canada"), - String8("Codes francais du Canada"), 1, clock1, cabbrev1, ctext1, sizeof(clock1) / sizeof(int)); -} - -int CTvDimension::isDimensionTblExist() -{ - String8 cmd = String8("select * from dimension_table"); - CTvDatabase::Cursor c; - CTvDatabase::GetTvDb()->select(cmd, c); - return c.moveToFirst(); -} diff --git a/tvapi/libtv/tvdb/CTvDimension.h b/tvapi/libtv/tvdb/CTvDimension.h deleted file mode 100644 index 4e7a502..0000000 --- a/tvapi/libtv/tvdb/CTvDimension.h +++ b/dev/null @@ -1,97 +0,0 @@ -// -// -// amlogic 2013 -// -// @ Project : tv -// @ File Name : CTvDimension.h -// @ Date : 2013-11 -// @ Author : -// -// - -#if !defined(_CTVDIMENSION_H) -#define _CTVDIMENSION_H -#include <utils/Vector.h> -#include "CTvDatabase.h" -#include <utils/String8.h> -#include <stdlib.h> - -#include "CTvLog.h" - -// TV ATSC rating dimension -class CTvDimension { -public: - class VChipRating { - private: - int region; - int dimension; - int value; - - public: - VChipRating(int region, int dimension, int value); - VChipRating(); - ~VChipRating(); - int getRegion(); - int getDimension(); - int getValue()const; - }; - /* 'All' is a very special case, it links to dimension0 & dimension5 */ - void createFromCursor(CTvDatabase::Cursor &c); - static int getUSPGAllLockStatus(String8 abbrev); - static void setUSPGAllLockStatus(String8 abbrev, int lock); - static void selectByID(CTvDimension &dm, int id); - static int selectByIndex(CTvDimension &dm, int ratingRegionID, int index); - static void selectByName(CTvDimension &dm, int ratingRegionID, String8 dimensionName); - static void selectByRatingRegion(CTvDimension &dm, int ratingRegionID); - bool isBlocked(CTvDimension &dm, VChipRating *definedRating); - int getID(); - int getRatingRegion(); - String8 getRatingRegionName(); - String8 getName(); - int getGraduatedScale(); - int getDefinedValue(); - //int* getLockStatus(); - int getLockStatus(int valueIndex); - void getLockStatus(String8 abbrevs[], int lock[], int *array_len); - int getAbbrev(String8 abb[]); - String8 getAbbrev(int valueIndex); - int getText(String8 tx[]); - String8 getText(int valueIndex); - void setLockStatus(int valueIndex, int status); - void setLockStatus(int status[]); - void setLockStatus(String8 abbrevs[], int locks[], int abb_size); - /**Rating regions*/ -public: - static const int REGION_US = 0x1; - static const int REGION_CANADA = 0x2; - static const int REGION_TAIWAN = 0x3; - static const int REGION_SOUTHKOREA = 0x4; - - CTvDimension(CTvDatabase::Cursor &c); - CTvDimension(); - ~CTvDimension(); - - static void insertNewDimension(const int region, String8 regionName, String8 name, - int indexj, int *lock, const char **abbrev, const char **text, int size); - static void builtinAtscDimensions(); - static int isDimensionTblExist(); - String8 getCurdimension(); - String8 getCurAbbr(); - String8 getCurText(); -private: - int id; - int indexj; - int ratingRegion; - int graduatedScale; - int valuesDefined; - int *lockValues; - String8 name; - String8 ratingRegionName; - String8 *abbrevValues; - String8 *textValues; - bool isPGAll; - String8 CurvchipDimension; - String8 CurvchipAbbrev; - String8 CurvchipText; -}; -#endif //_CTVDIMENSION_H diff --git a/tvapi/libtv/tvdb/CTvEvent.cpp b/tvapi/libtv/tvdb/CTvEvent.cpp deleted file mode 100644 index 7fd6926..0000000 --- a/tvapi/libtv/tvdb/CTvEvent.cpp +++ b/dev/null @@ -1,237 +0,0 @@ -// -// -// amlogic 2013 -// -// @ Project : tv -// @ File Name : CTvEvent.cpp -// @ Date : 2013-11 -// @ Author : -// -#define LOG_TAG "CTvEvent" - -#include "CTvEvent.h" -#include "CTvDatabase.h" -#include "CTvProgram.h" -#include <stdlib.h> - -void CTvEvent::InitFromCursor(CTvDatabase::Cursor &c) -{ - int col; - - col = c.getColumnIndex("db_id"); - this->id = c.getInt(col); - - col = c.getColumnIndex("event_id"); - this->dvbEventID = c.getInt(col); - - col = c.getColumnIndex("name"); - this->name = c.getString(col); - - col = c.getColumnIndex("start"); - this->start = (long)c.getInt(col); - - col = c.getColumnIndex("end"); - this->end = (long)c.getInt(col) ; - - col = c.getColumnIndex("nibble_level"); - this->dvbContent = c.getInt(col); - - col = c.getColumnIndex("parental_rating"); - this->dvbViewAge = c.getInt(col); - - col = c.getColumnIndex("sub_flag"); - this->sub_flag = c.getInt(col); - - col = c.getColumnIndex("db_srv_id"); - this->programID = c.getInt(col); - - col = c.getColumnIndex("rrt_ratings"); - String8 rrtRatings = c.getString(col); - char *tmp; - Vector<String8> ratings; - int l = 0; - char *pSave; - tmp = strtok_r(rrtRatings.lockBuffer(rrtRatings.size()), ",", &pSave); - LOGD("TV, %d, %s", __LINE__, tmp); - while (tmp != NULL) { - ratings.push_back(String8(tmp)); - tmp = strtok_r(NULL, ",", &pSave); - } - rrtRatings.unlockBuffer(); - rating_len = ratings.size(); - if (!ratings.isEmpty()) { - for (int i = 0; i < (int)ratings.size(); i++) { - Vector<String8> rating; - tmp = strtok_r(ratings.editItemAt(i).lockBuffer(ratings.editItemAt(i).length()), " ", &pSave); - while (tmp != NULL) { - rating.push_back(String8(tmp)); - tmp = strtok_r(NULL, " ", &pSave); - } - ratings.editItemAt(i).unlockBuffer(); - if (rating.size() >= 3) { - int re = atoi(rating[0]); - int dm = atoi(rating[1]); - int vl = atoi(rating[2]); - vchipRatings.add( new CTvDimension::VChipRating(re, dm, vl)); - } else - vchipRatings.add(NULL); - } - } - - col = c.getColumnIndex("descr"); - this->description = c.getString(col); - - col = c.getColumnIndex("ext_descr"); - this->extDescription = c.getString(col); -} - -//id; CTvChannel.MODE_ATSC sourceid , other id -int CTvEvent::getProgPresentEvent(int progSrc, int progID, long nowTime, CTvEvent &ev) -{ - String8 cmd; - CTvDatabase::Cursor c; - - cmd = String8("select * from evt_table where evt_table."); - - if (progSrc == CTvChannel::MODE_ATSC) { - cmd += String8("source_id = ") + String8::format("%d", progID); - } else { - cmd += String8("db_srv_id = ") + String8::format("%d", progID); - } - - cmd += String8(" and evt_table.start <= ") + String8::format("%ld", nowTime) + String8(" and evt_table.end > ") + String8::format("%ld", nowTime); - - int ret = CTvDatabase::GetTvDb()->select(cmd, c); - - if (c.moveToFirst()) { - ev.InitFromCursor(c); - } else { - c.close(); - return -1; - } - - c.close(); - - return 0; -} - -int CTvEvent::getProgScheduleEvents(int progSrc, int progID, long start, long duration, Vector<sp<CTvEvent> > &vEv) -{ - String8 cmd; - long begin = start; - long end = start + duration; - - cmd = String8("select * from evt_table where evt_table."); - if (progSrc == CTvChannel::MODE_ATSC) { - cmd += String8("source_id = ") + String8::format("%d", progID); - } else { - cmd += String8("db_srv_id = ") + String8::format("%d", progID); - } - cmd += String8(" and "); - cmd += String8(" ((start < ") + String8::format("%ld", begin) + String8(" and end > ") + String8::format("%ld", begin) + String8(") ||"); - cmd += String8(" (start >= ") + String8::format("%ld", begin) + String8(" and start < ") + String8::format("%ld", end) + String8("))"); - cmd += String8(" order by evt_table.start"); - - CTvDatabase::Cursor c; - int ret = CTvDatabase::GetTvDb()->select(cmd, c); - - if (c.moveToFirst()) { - do { - vEv.add(new CTvEvent(c)); - } while (c.moveToNext()); - - } else { - c.close(); - return -1; - } - - c.close(); - return 0; -} -int CTvEvent::getATVProgEvent(int progSrc, int progID, CTvEvent &ev) -{ - String8 cmd; - CTvDatabase::Cursor c; - - cmd = String8("select * from evt_table where evt_table."); - - if (progSrc == CTvChannel::MODE_ATSC) { - LOGD("%s, %d MODE_ATSC", "TV", __LINE__); - cmd += String8("source_id = ") + String8::format("%d", progID); - } else { - LOGD("%s, %d MODE_ANALOG", "TV", __LINE__); - cmd += String8("db_srv_id = ") + String8::format("%d", progID); - } - - //cmd += String8(" and evt_table.start <= ") + String8::format("%ld", nowTime) + String8(" and evt_table.end > ") + String8::format("%ld", nowTime); - - int ret = CTvDatabase::GetTvDb()->select(cmd, c); - - if (c.moveToFirst()) { - ev.InitFromCursor(c); - } else { - c.close(); - return -1; - } - - c.close(); - - return 0; -} - -int CTvEvent::CleanAllEvent() -{ - CTvDatabase::GetTvDb()->exeSql("delete from evt_table"); - return 0; -} - -int CTvEvent::selectByID(int id, CTvEvent &evt) -{ - CTvDatabase::Cursor c; - String8 sql; - - sql = String8("select * from evt_table where evt_table.db_id = ") + String8::format("%d", id); - CTvDatabase::GetTvDb()->select(sql.string(), c); - if (c.moveToFirst()) { - evt.InitFromCursor(c); - } else { - c.close(); - return -1; - } - - c.close(); - return 0; -} - -int CTvEvent::bookEvent(int evtId, bool bBookFlag) -{ - String8 cmd; - - cmd = String8("update evt_table set sub_flag=") + String8::format("%d", bBookFlag) - + String8(" where event_id=") + String8::format("%d", evtId); - - CTvDatabase::GetTvDb()->exeSql(cmd.string()); - - return 0; -} - -CTvEvent::CTvEvent(CTvDatabase::Cursor &c) -{ - InitFromCursor(c); -} - -CTvEvent::CTvEvent() -{ -} - -CTvEvent::~CTvEvent() -{ - int size = vchipRatings.size(); - for (int i = 0; i < size; i++) - delete vchipRatings[i]; -} -Vector<CTvDimension::VChipRating *> CTvEvent::getVChipRatings() -{ - return vchipRatings; -} - diff --git a/tvapi/libtv/tvdb/CTvEvent.h b/tvapi/libtv/tvdb/CTvEvent.h deleted file mode 100644 index 5791bfd..0000000 --- a/tvapi/libtv/tvdb/CTvEvent.h +++ b/dev/null @@ -1,85 +0,0 @@ -// -// -// amlogic 2013 -// -// @ Project : tv -// @ File Name : CTvEvent.h -// @ Date : 2013-11 -// @ Author : -// -// - - -#if !defined(_CTVEVENT_H) -#define _CTVEVENT_H - -#include <utils/Vector.h> -#include "CTvProgram.h" -#include "CTvDatabase.h" -#include "CTvDimension.h" - -class CTvEvent : public LightRefBase<CTvEvent> { -public: - CTvEvent(CTvDatabase::Cursor &c); - CTvEvent(); - ~CTvEvent(); - - int getProgPresentEvent(int progSrc, int progID, long nowTime, CTvEvent &ev); - int getProgScheduleEvents(int progSrc, int progID, long start, long duration, Vector<sp<CTvEvent> > &vEv); - int getATVProgEvent(int progSrc, int progID, CTvEvent &ev); - int bookEvent(int evtId, bool bBookFlag); - static int selectByID(int id, CTvEvent &p); - static int CleanAllEvent(); - String8 &getName() - { - return name; - }; - String8 &getDescription() - { - return description; - }; - String8 &getExtDescription() - { - return extDescription; - }; - long getStartTime() - { - return start; - }; - long getEndTime() - { - return end; - }; - int getSubFlag() - { - return sub_flag; - }; - int getProgramId() - { - return programID; - }; - int getEventId() - { - return dvbEventID; - }; - Vector<CTvDimension::VChipRating *> getVChipRatings(); - -private: - void InitFromCursor(CTvDatabase::Cursor &c); - - int id; - int dvbEventID; - String8 name; - String8 description; - String8 extDescription; - int programID; - long start; - long end; - int dvbContent; - int dvbViewAge; - int sub_flag; - int rating_len; - Vector<CTvDimension::VChipRating *> vchipRatings; -}; - -#endif //_CTVEVENT_H diff --git a/tvapi/libtv/tvdb/CTvGroup.cpp b/tvapi/libtv/tvdb/CTvGroup.cpp deleted file mode 100644 index c5b6249..0000000 --- a/tvapi/libtv/tvdb/CTvGroup.cpp +++ b/dev/null @@ -1,44 +0,0 @@ -// -// -// amlogic 2013 -// -// @ Project : tv -// @ File Name : CTvGroup.cpp -// @ Date : 2013-11 -// @ Author : -// -// - - -#include "CTvGroup.h" - -Vector<CTvGroup> CTvGroup::selectByGroup() -{ - Vector<CTvGroup> vGroup; - return vGroup; -} - -void CTvGroup::addGroup() -{ - -} - -CTvGroup::CTvGroup() -{ - -} -CTvGroup::~CTvGroup() -{ - -} - -void CTvGroup::deleteGroup() -{ - -} - -void CTvGroup::editGroup() -{ - -} - diff --git a/tvapi/libtv/tvdb/CTvGroup.h b/tvapi/libtv/tvdb/CTvGroup.h deleted file mode 100644 index 3e92a2e..0000000 --- a/tvapi/libtv/tvdb/CTvGroup.h +++ b/dev/null @@ -1,30 +0,0 @@ -// -// -// amlogic 2013 -// -// @ Project : tv -// @ File Name : CTvGroup.h -// @ Date : 2013-11 -// @ Author : -// -// - - -#if !defined(_CTVGROUP_H) -#define _CTVGROUP_H - -#include <utils/Vector.h> -using namespace android; -// GroupӦDTVеһĿ -class CTvGroup { -public: - CTvGroup(); - ~CTvGroup(); - // ȡнĿϢ - static Vector<CTvGroup> selectByGroup(); - static void addGroup(); - static void deleteGroup(); - static void editGroup(); -}; - -#endif //_CTVGROUP_H diff --git a/tvapi/libtv/tvdb/CTvProgram.cpp b/tvapi/libtv/tvdb/CTvProgram.cpp deleted file mode 100644 index 49c1d86..0000000 --- a/tvapi/libtv/tvdb/CTvProgram.cpp +++ b/dev/null @@ -1,905 +0,0 @@ -// -// -// amlogic 2013 -// -// @ Project : tv -// @ File Name : CTvProgram.cpp -// @ Date : 2013-11 -// @ Author : -// -// -#define LOG_TAG "CTvProgram" - -#include "CTvProgram.h" -#include "CTvDatabase.h" -#include "CTvChannel.h" -#include "CTvEvent.h" - -CTvProgram::CTvProgram(CTvDatabase::Cursor &c) -{ - CreateFromCursor(c); -} - -CTvProgram::~CTvProgram() -{ - //free mem - // video - if (mpVideo != NULL) delete mpVideo; - // audios - int size = mvAudios.size(); - for (int i = 0; i < size; i++) - delete mvAudios[i]; - // subtitles - size = mvSubtitles.size(); - for (int i = 0; i < size; i++) - delete mvSubtitles[i]; - // teletexts - size = mvTeletexts.size(); - for (int i = 0; i < size; i++) - delete mvTeletexts[i]; -} - -CTvProgram::CTvProgram(int channelID __unused, int type __unused) -{ - mpVideo = NULL; -} - -CTvProgram::CTvProgram() -{ - mpVideo = NULL; -} - -int CTvProgram::CreateFromCursor(CTvDatabase::Cursor &c) -{ - int i = 0; - int col; - int num, type; - int major, minor; - char tmp_buf[256]; - //LOGD("CTvProgram::CreateFromCursor"); - col = c.getColumnIndex("db_id"); - this->id = c.getInt(col); - - col = c.getColumnIndex("source_id"); - this->sourceID = c.getInt(col); - - col = c.getColumnIndex("src"); - this->src = c.getInt(col); - - col = c.getColumnIndex("service_id"); - this->dvbServiceID = c.getInt(col); - - col = c.getColumnIndex("db_ts_id"); - this->channelID = c.getInt(col); - - col = c.getColumnIndex("name"); - this->name = c.getString(col); - - col = c.getColumnIndex("chan_num"); - num = c.getInt(col); - - col = c.getColumnIndex("chan_order"); - this->chanOrderNum = c.getInt(col); - - col = c.getColumnIndex("major_chan_num"); - major = c.getInt(col); - - col = c.getColumnIndex("minor_chan_num"); - minor = c.getInt(col); - - col = c.getColumnIndex("aud_track"); - this->audioTrack = c.getInt(col); - - //节目号信息初?? - if (src == CTvChannel::MODE_ATSC || (src == CTvChannel::MODE_ANALOG && major > 0)) { - this->major = major; - this->minor = minor; - this->atscMode = true; - this->minorCheck = MINOR_CHECK_NONE; - } else { - this->major = num; - this->minor = 0; - this->atscMode = false; - this->minorCheck = MINOR_CHECK_NONE; - } - - col = c.getColumnIndex("service_type"); - this->type = c.getInt(col); - - col = c.getColumnIndex("pmt_pid"); - pmtPID = c.getInt(col); - - //LOGD("CTvProgram::CreateFromCursor type = %d", this->type); - col = c.getColumnIndex("skip"); - this->skip = c.getInt(col); - - col = c.getColumnIndex("lock"); - this->lock = (c.getInt(col) != 0); - - col = c.getColumnIndex("scrambled_flag"); - this->scrambled = (c.getInt(col) != 0); - - col = c.getColumnIndex("favor"); - this->favorite = (c.getInt(col) != 0); - - col = c.getColumnIndex("volume"); - this->volume = c.getInt(col); - - //Video - int pid, fmt; - col = c.getColumnIndex("vid_pid"); - pid = c.getInt(col); - - col = c.getColumnIndex("vid_fmt"); - fmt = c.getInt(col); - - //LOGD("----------vpid = %d", pid); - this->mpVideo = new Video(pid, fmt); - //LOGD("----------vpid = %d", this->mpVideo->getPID()); - - //Audio - String8 strPids; - String8 strFmts; - String8 strLangs; - int count = 0; - col = c.getColumnIndex("aud_pids"); - strPids = c.getString(col); - - col = c.getColumnIndex("aud_fmts"); - strFmts = c.getString(col); - - col = c.getColumnIndex("aud_langs"); - strLangs = c.getString(col); - col = c.getColumnIndex("current_aud"); - this->currAudTrackIndex = c.getInt(col); - - char *tmp; - Vector<String8> vpid ; - Vector<String8> vfmt ; - Vector<String8> vlang; - - char *pSave; - tmp = strtok_r(strPids.lockBuffer(strPids.length()), " ", &pSave); - while (tmp != NULL) { - vpid.push_back(String8(tmp)); - tmp = strtok_r(NULL, " ", &pSave); - } - strPids.unlockBuffer(); - - tmp = strtok_r(strFmts.lockBuffer(strFmts.length()), " ", &pSave); - while (tmp != NULL) { - vfmt.push_back(String8(tmp)); - tmp = strtok_r(NULL, " ", &pSave); - } - strFmts.unlockBuffer(); - - tmp = strtok_r(strLangs.lockBuffer(strLangs.length()), " ", &pSave); - - while (tmp != NULL) { - vlang.push_back(String8(tmp)); - tmp = strtok_r(NULL, " ", &pSave); - } - strLangs.unlockBuffer(); - - //check empty aud_langs - for (i = vlang.size(); i < (int)vpid.size(); i++) { - sprintf(tmp_buf, "Audio%d", i + 1); - vlang.push_back(String8(tmp_buf)); - LOGE("%s, aud_langs is empty, add dummy data (%s).\n", "TV", tmp_buf); - } - - //String8 l(vlang[i]); - for (i = 0; i < (int)vpid.size(); i++) { - int i_pid = atoi(vpid[i]); - int i_fmt = atoi(vfmt[i]); - mvAudios.push_back(new Audio(i_pid, vlang[i], i_fmt)); - } - - /* parse subtitles */ - vpid.clear(); - vlang.clear(); - Vector<String8> vcid; - Vector<String8> vaid; - String8 strCids; - String8 strAids; - - col = c.getColumnIndex("sub_pids"); - strPids = c.getString(col); - - col = c.getColumnIndex("sub_composition_page_ids"); - strCids = c.getString(col); - - col = c.getColumnIndex("sub_ancillary_page_ids"); - strAids = c.getString(col); - - col = c.getColumnIndex("sub_langs"); - strLangs = c.getString(col); - - tmp = strtok_r(strPids.lockBuffer(strPids.length()), " ", &pSave); - while (tmp != NULL) { - vpid.push_back(String8(tmp)); - tmp = strtok_r(NULL, " ", &pSave); - } - strPids.unlockBuffer(); - - tmp = strtok_r(strCids.lockBuffer(strCids.length()), " ", &pSave); - while (tmp != NULL) { - vcid.push_back(String8(tmp)); - tmp = strtok_r(NULL, " ", &pSave); - } - strCids.unlockBuffer(); - - tmp = strtok_r(strAids.lockBuffer(strAids.length()), " ", &pSave); - while (tmp != NULL) { - vaid.push_back(String8(tmp)); - tmp = strtok_r(NULL, " ", &pSave); - } - strAids.unlockBuffer(); - - tmp = strtok_r(strLangs.lockBuffer(strLangs.length()), " ", &pSave); - while (tmp != NULL) { - vlang.push_back(String8(tmp)); - tmp = strtok_r(NULL, " ", &pSave); - } - strLangs.unlockBuffer(); - - //Subtitle - for (int i = 0; i < (int)vpid.size(); i++) { - this->mvSubtitles.push_back(new Subtitle( - atoi(vpid[i]), - String8(vlang[i]), Subtitle::TYPE_DVB_SUBTITLE, - atoi(vcid[i]), - atoi(vaid[i]))); - } - - /* - parse teletexts - int ttx_count = 0, ttx_sub_count = 0; - String8 str_ttx_pids, str_ttx_types, str_mag_nos, str_page_nos, str_ttx_langs; - Vector<String8> v_ttx_pids, v_ttx_types, v_mag_nos, v_page_nos, v_ttx_langs; - col = c.getColumnIndex("ttx_pids"); - str_ttx_pids = c.getString(col); - - col = c.getColumnIndex("ttx_types"); - str_ttx_types = c.getString(col); - - col = c.getColumnIndex("ttx_magazine_nos"); - str_mag_nos = c.getString(col); - - col = c.getColumnIndex("ttx_page_nos"); - str_page_nos = c.getString(col); - - col = c.getColumnIndex("ttx_langs"); - str_ttx_langs = c.getString(col); - - tmp = strtok_r(str_ttx_pids.lockBuffer(str_ttx_pids.length()), " ", &pSave); - while (tmp != NULL) { - v_ttx_pids.push_back(String8(tmp)); - tmp = strtok_r(NULL, " ", &pSave); - } - str_ttx_pids.unlockBuffer(); - - tmp = strtok_r(str_ttx_types.lockBuffer(str_ttx_types.length()), " ", &pSave); - while (tmp != NULL) { - v_ttx_types.push_back(String8(tmp)); - tmp = strtok_r(NULL, " ", &pSave); - } - str_ttx_types.unlockBuffer(); - - tmp = strtok_r(str_mag_nos.lockBuffer(str_mag_nos.length()), " ", &pSave); - while (tmp != NULL) { - v_mag_nos.push_back(String8(tmp)); - tmp = strtok_r(NULL, " ", &pSave); - } - str_mag_nos.unlockBuffer(); - - tmp = strtok_r(str_page_nos.lockBuffer(str_page_nos.length()), " ", &pSave); - while (tmp != NULL) { - v_page_nos.push_back(String8(tmp)); - tmp = strtok_r(NULL, " ", &pSave); - } - str_page_nos.unlockBuffer(); - - tmp = strtok_r(str_ttx_langs.lockBuffer(str_ttx_langs.length()), " ", &pSave); - while (tmp != NULL) { - v_ttx_langs.push_back(String8(tmp)); - tmp = strtok_r(NULL, " ", &pSave); - } - str_ttx_langs.unlockBuffer(); - - for (int i = 0; i < v_ttx_pids.size(); i++) { - int ttype = atoi(v_ttx_types[i]); - if (ttype == 0x2 || ttype == 0x5) { - this->mvSubtitles.push_back(new Subtitle( - atoi(v_ttx_pids[i].string()), - String8(v_ttx_langs[i]), Subtitle::TYPE_DTV_TELETEXT, - atoi(v_mag_nos[i]), - atoi(v_page_nos[i]))); - } else { - this->mvTeletexts.push_back(new Teletext( - atoi(v_ttx_pids[i]), - String8(v_ttx_langs[i]), - atoi(v_mag_nos[i]), - atoi(v_page_nos[i]))); - } - } - */ - return 0; -} - -int CTvProgram::selectProgramInChannelByNumber(int channelID, int num, CTvDatabase::Cursor &c) -{ - String8 cmd = String8("select * from srv_table where db_ts_id = ") + String8::format("%d", channelID) + String8(" and "); - cmd += String8("chan_num = ") + String8::format("%d", num); - return CTvDatabase::GetTvDb()->select(cmd, c); -} - -int CTvProgram::selectProgramInChannelByNumber(int channelID, int major, int minor, CTvDatabase::Cursor &c) -{ - String8 cmd = String8("select * from srv_table where db_ts_id = ") + String8::format("%d", channelID) + String8(" and "); - cmd += String8("major_chan_num = ") + String8::format("%d", major) + String8(" and minor_chan_num = ") + String8::format("%d", minor); - - return CTvDatabase::GetTvDb()->select(cmd, c); -} - -/** - *向数据库添加一个Program,not atscMode - */ -CTvProgram::CTvProgram(int channelID, int type, int num, int skipFlag) -{ - CTvChannel channel; - int ret = CTvChannel::selectByID(channelID, channel); - if (ret != 0) { - //Log.d(TAG, "Cannot add new program, invalid channel id "+channelID); - this->id = -1; - } else { - CTvDatabase::Cursor c ; - selectProgramInChannelByNumber(channelID, num, c); - - if (c.moveToFirst()) { - /*Construct*/ - CreateFromCursor(c); - } else { - String8 tpids = String8(""), ttypes = String8(""), tmagnums = String8(""), tpgnums = String8(""), tlangs = String8(""); - String8 spids = String8(""), stypes = String8(""), scpgids = String8(""), sapgids = String8(""), slangs = String8(""); - - /*add a new atv program to database*/ - String8 cmd = String8("insert into srv_table(db_net_id,db_ts_id,service_id,src,name,service_type,"); - cmd += String8("eit_schedule_flag,eit_pf_flag,running_status,free_ca_mode,volume,aud_track,vid_pid,"); - cmd += String8("vid_fmt,aud_pids,aud_fmts,aud_langs,skip,lock,chan_num,major_chan_num,"); - cmd += String8("minor_chan_num,access_controlled,hidden,hide_guide,source_id,favor,current_aud,"); - cmd += String8("current_sub,sub_pids,sub_types,sub_composition_page_ids,sub_ancillary_page_ids,sub_langs,"); - cmd += String8("current_ttx,ttx_pids,ttx_types,ttx_magazine_nos,ttx_page_nos,ttx_langs,"); - cmd += String8("db_sat_para_id,scrambled_flag,lcn,hd_lcn,sd_lcn,default_chan_num,chan_order) "); - cmd += String8("values(-1,") + String8::format("%d", channelID) + String8(",65535,") + String8::format("%d", channel.getMode()) + String8(",'',") + String8::format("%d", type) + String8(","); - cmd += String8("0,0,0,0,0,0,8191,"); - int chanNum = num; - int majorNum = 0; - cmd += String8("-1,'','','',") + String8::format("%d", skipFlag) + String8(",0,") + String8::format("%d", chanNum) + String8(",") + String8::format("%d", majorNum) + String8(","); - cmd += String8("") + /*num.getMinor()*/String8("0") + String8(",0,0,0,-1,0,-1,"); - cmd += String8("-1,'") + spids + String8("','") + stypes + String8("','") + scpgids + String8("','") + sapgids + String8("','") + slangs + String8("',"); - cmd += String8("-1,'") + tpids + String8("','") + ttypes + String8("','") + tmagnums + String8("','") + tpgnums + String8("','") + tlangs + String8("',"); - cmd += String8("-1,0,-1,-1,-1,-1,0)"); - CTvDatabase::GetTvDb()->exeSql(cmd.string()); - - CTvDatabase::Cursor cr; - selectProgramInChannelByNumber(channelID, num, cr); - if (cr.moveToFirst()) { - /*Construct*/ - CreateFromCursor(cr); - } else { - /*A critical error*/ - //Log.d(TAG, "Cannot add new program, sqlite error"); - this->id = -1; - } - cr.close(); - } - c.close(); - } - -} - -/** - *向数据库添加一个Program,atscMode - */ -CTvProgram::CTvProgram(int channelID, int type, int major, int minor, int skipFlag) -{ - CTvChannel channel; - int ret = CTvChannel::selectByID(channelID, channel); - if (ret != 0) { - //Log.d(TAG, "Cannot add new program, invalid channel id "+channelID); - this->id = -1; - } else { - CTvDatabase::Cursor c ; - selectProgramInChannelByNumber(channelID, major, minor, c); - - if (c.moveToFirst()) { - /*Construct*/ - CreateFromCursor(c); - } else { - String8 tpids = String8(""), ttypes = String8(""), tmagnums = String8(""), tpgnums = String8(""), tlangs = String8(""); - String8 spids = String8(""), stypes = String8(""), scpgids = String8(""), sapgids = String8(""), slangs = String8(""); - - /*add a new atv program to database*/ - String8 cmd = String8("insert into srv_table(db_net_id,db_ts_id,service_id,src,name,service_type,"); - cmd += String8("eit_schedule_flag,eit_pf_flag,running_status,free_ca_mode,volume,aud_track,vid_pid,"); - cmd += String8("vid_fmt,aud_pids,aud_fmts,aud_langs,skip,lock,chan_num,major_chan_num,"); - cmd += String8("minor_chan_num,access_controlled,hidden,hide_guide,source_id,favor,current_aud,"); - cmd += String8("current_sub,sub_pids,sub_types,sub_composition_page_ids,sub_ancillary_page_ids,sub_langs,"); - cmd += String8("current_ttx,ttx_pids,ttx_types,ttx_magazine_nos,ttx_page_nos,ttx_langs,"); - cmd += String8("db_sat_para_id,scrambled_flag,lcn,hd_lcn,sd_lcn,default_chan_num,chan_order) "); - cmd += String8("values(-1,") + String8::format("%d", channelID) + String8(",65535,") + String8::format("%d", channel.getMode()) + String8(",'',") + String8::format("%d", type) + String8(","); - cmd += String8("0,0,0,0,0,0,8191,"); - int chanNum = major << 16 | minor; - int majorNum = major; - cmd += String8("-1,'','','',") + String8::format("%d", skipFlag) + String8(",0,") + String8::format("%d", chanNum) + String8(",") + String8::format("%d", majorNum) + String8(","); - cmd += String8("") + String8::format("%d", minor) + String8(",0,0,0,-1,0,-1,"); - cmd += String8("-1,'") + spids + String8("','") + stypes + String8("','") + scpgids + String8("','") + sapgids + String8("','") + slangs + String8("',"); - cmd += String8("-1,'") + tpids + String8("','") + ttypes + String8("','") + tmagnums + String8("','") + tpgnums + String8("','") + tlangs + String8("',"); - cmd += String8("-1,0,-1,-1,-1,-1,0)"); - CTvDatabase::GetTvDb()->exeSql(cmd.string()); - - CTvDatabase::Cursor cr; - selectProgramInChannelByNumber(channelID, major, minor, cr); - if (cr.moveToFirst()) { - /*Construct*/ - CreateFromCursor(cr); - } else { - /*A critical error*/ - //Log.d(TAG, "Cannot add new program, sqlite error"); - this->id = -1; - } - cr.close(); - } - c.close(); - } - -} - -/** - *根据记录ID查找指定TVProgram -*/ -int CTvProgram::selectByID(int id, CTvProgram &prog) -{ - CTvDatabase::Cursor c; - String8 sql; - sql = String8("select * from srv_table where srv_table.db_id = ") + String8::format("%d", id); - CTvDatabase::GetTvDb()->select(sql.string(), c) ; - if (c.moveToFirst()) { - prog.CreateFromCursor(c); - } else { - c.close(); - return -1; - } - c.close(); - return 0; -} - -int CTvProgram::updateVolComp(int progID, int volValue) -{ - String8 cmd = String8("update srv_table set volume = ") + String8::format("%d", volValue) + - String8(" where srv_table.db_id = ") + String8::format("%d", progID); - LOGD("%s, cmd = %s\n", "TV", cmd.string()); - CTvDatabase::GetTvDb()->exeSql(cmd.string()); - - return 0; -} - -int CTvProgram::getChannel(CTvChannel &c) -{ - return CTvChannel::selectByID(channelID, c); -} - -int CTvProgram::upDateChannel(CTvChannel &c __unused, int std, int Freq, int fineFreq) -{ - return CTvChannel::updateByID(channelID, std, Freq, fineFreq); -} - -int CTvProgram::deleteChannelsProgram(CTvChannel &c) -{ - String8 cmd; - cmd = String8("delete from srv_table where srv_table.db_ts_id = ") + String8::format("%d", c.getID()); - CTvDatabase::GetTvDb()->exeSql(cmd.string()); - return 0; -} - -/** - *根据节目类型和节目号查找指定TVProgram -*/ -int CTvProgram::selectByNumber(int type, int num, CTvProgram &prog) -{ - String8 cmd; - - cmd = String8("select * from srv_table where "); - if (type != TYPE_UNKNOWN) { - if (type == TYPE_DTV) { - cmd += String8("(service_type = ") + String8::format("%d", TYPE_DTV) + String8(" or service_type = ") + String8::format("%d", TYPE_RADIO) + String8(") and "); - } else { - cmd += String8("service_type = ") + String8::format("%d", type) + String8(" and "); - } - } - - cmd += String8("chan_num = ") + String8::format("%d", num); - - CTvDatabase::Cursor c; - CTvDatabase::GetTvDb()->select(cmd, c); - - if (c.moveToFirst()) { - prog.CreateFromCursor(c); - } else { - c.close(); - return -1; - } - c.close(); - - return 0; -} - -/** - *根据节目类型和节目号查找指定TVProgram -*/ -int CTvProgram::selectByNumber(int type, int major, int minor, CTvProgram &prog, int minor_check) -{ - String8 cmd; - - cmd = String8("select * from srv_table where "); - if (type != TYPE_UNKNOWN) { - if (type == TYPE_DTV) { - cmd += String8("(service_type = ") + String8::format("%d", TYPE_TV) + String8(" or service_type = ") + String8::format("%d", TYPE_RADIO) + String8(") and "); - } else { - cmd += String8("service_type = ") + String8::format("%d", type) + String8(" and "); - } - } - - if (minor < 0) { - /*recursive call*/ - /*select dtv program first*/ - //showbo - int ret = selectByNumber(TYPE_DTV, major, 1, prog, MINOR_CHECK_NEAREST_UP); - if (ret != 0) { - /*then try atv program*/ - selectByNumber(TYPE_ATV, major, 0 , prog, MINOR_CHECK_NONE); - } - return 0; - } else if (minor >= 1) { - if (minor_check == MINOR_CHECK_UP) { - cmd += String8("major_chan_num = ") + String8::format("%d", major) + String8(" and minor_chan_num >= ") + String8::format("%d", minor) + String8(" "); - cmd += String8("order by minor_chan_num DESC limit 1"); - } else if (minor_check == MINOR_CHECK_DOWN) { - cmd += String8("major_chan_num = ") + String8::format("%d", major) + String8(" and minor_chan_num <= ") + String8::format("%d", minor) + String8(" "); - cmd += String8("order by minor_chan_num limit 1"); - } else if (minor_check == MINOR_CHECK_NEAREST_UP) { - cmd += String8("major_chan_num = ") + String8::format("%d", major) + String8(" and minor_chan_num >= ") + String8::format("%d", minor) + String8(" "); - cmd += String8("order by minor_chan_num limit 1"); - } else if (minor_check == MINOR_CHECK_NEAREST_DOWN) { - cmd += String8("major_chan_num = ") + String8::format("%d", major) + String8(" and minor_chan_num <= ") + String8::format("%d", minor) + String8(" "); - cmd += String8("order by minor_chan_num DESC limit 1"); - } else { - cmd += String8("major_chan_num = ") + String8::format("%d", major) + String8(" and minor_chan_num = ") + String8::format("%d", minor); - } - } else { - cmd += String8("major_chan_num = ") + String8::format("%d", major) + String8(" and minor_chan_num = ") + String8::format("%d", minor); - } - - - CTvDatabase::Cursor c; - CTvDatabase::GetTvDb()->select(cmd, c); - - if (c.moveToFirst()) { - prog.CreateFromCursor(c); - } else { - c.close(); - return -1; - } - c.close(); - - return 0; -} - - -/** - *列出一个channel的全部TVProgram - *@param channelID channel id - *@param type 节目类型 - */ -int CTvProgram::selectByChannel(int channelID, int type, Vector<sp<CTvProgram> > &out) -{ - //Vector<CTvProgram*> vp; - String8 cmd = String8("select * from srv_table "); - - if (type == TYPE_DTV) { - cmd += String8("where (service_type = ") + String8::format("%d", TYPE_TV) + String8(" or service_type = ") + String8::format("%d", TYPE_RADIO) + String8(") "); - } else if (type != TYPE_UNKNOWN) { - cmd += String8("where service_type = ") + String8::format("%d", type) + String8(" "); - } - - cmd += String8(" and db_ts_id = ") + String8::format("%d", channelID) + String8(" order by chan_order"); - - CTvDatabase::Cursor c; - int ret = CTvDatabase::GetTvDb()->select(cmd, c); - - LOGD("selectByChannel select ret = %d", ret); - - if (c.moveToFirst()) { - do { - out.add(new CTvProgram(c)); - } while (c.moveToNext()); - } - c.close(); - - return 0; -} - -void CTvProgram::deleteProgram(int progId) -{ - String8 cmd; - - cmd = String8("delete from srv_table where srv_table.db_id = ") + String8::format("%d", progId); - CTvDatabase::GetTvDb()->exeSql(cmd.string()); -} - -int CTvProgram::CleanAllProgramBySrvType(int srvType) -{ - String8 cmd = String8("delete from srv_table where service_type = ") + String8::format("%d", srvType); - CTvDatabase::GetTvDb()->exeSql(cmd.string()); - return 0; -} - -int CTvProgram::selectByType(int type, int skip, Vector<sp<CTvProgram> > &out) -{ - String8 cmd = String8("select * from srv_table "); - LOGD("%s, type= %d\n", "TV", (int)type); - - if (type == TYPE_UNKNOWN) { - cmd += String8("where (service_type = ") + String8::format("%d", TYPE_ATV) + - String8(" or service_type = ") + String8::format("%d", TYPE_DTV) + - String8(" or service_type = ") + String8::format("%d", TYPE_RADIO) + - String8(") "); - } else { - cmd += String8("where service_type = ") + String8::format("%d", type) + String8(" "); - } - - if (skip == PROGRAM_SKIP_NO || skip == PROGRAM_SKIP_YES) - cmd += String8(" and skip = ") + String8::format("%d", skip) + String8(" "); - - if (type == TYPE_DTV || type == TYPE_RADIO) { - cmd += String8(" order by db_ts_id"); - } else { - cmd += String8(" order by chan_order"); - } - - CTvDatabase::Cursor c; - int ret = CTvDatabase::GetTvDb()->select(cmd, c); - - LOGD("selectByType select ret = %d", ret); - - if (c.moveToFirst()) { - do { - out.add(new CTvProgram(c)); - } while (c.moveToNext()); - } - c.close(); - - return 0; -} - -int CTvProgram::selectByChanID(int type, int skip, Vector < sp < CTvProgram > > &out) -{ - String8 cmd = String8("select * from srv_table "); - - if (type == TYPE_UNKNOWN) { - cmd += String8("where (service_type = ") + String8::format("%d", TYPE_ATV) + - String8(" or service_type = ") + String8::format("%d", TYPE_DTV) + - String8(") "); - } else { - cmd += String8("where service_type = ") + String8::format("%d", type) + String8(" "); - } - - if (skip == PROGRAM_SKIP_NO || skip == PROGRAM_SKIP_YES) - cmd += String8(" and skip = ") + String8::format("%d", PROGRAM_SKIP_NO) + - String8(" or skip = ") + String8::format("%d", PROGRAM_SKIP_YES) + String8(" "); - - cmd += String8(" order by db_id"); - - CTvDatabase::Cursor c; - int ret = CTvDatabase::GetTvDb()->select(cmd, c); - - if (c.moveToFirst()) { - do { - out.add(new CTvProgram(c)); - } while (c.moveToNext()); - } - c.close(); - - return 0; -} - -int CTvProgram::selectAll(bool no_skip, Vector<sp<CTvProgram> > &out) -{ - return selectByType(TYPE_UNKNOWN, no_skip, out); -} - -Vector<CTvProgram> CTvProgram::selectByChannel(int channelID __unused) -{ - Vector<CTvProgram> vProg; - return vProg; -} - -Vector<CTvProgram> CTvProgram::selectByName(int name __unused) -{ - Vector<CTvProgram> vProg; - return vProg; -} - -void CTvProgram::tvProgramDelByChannelID(int channelID) -{ - channelID = channelID; -} - -String8 CTvProgram::getName() -{ - return name; -} - -int CTvProgram::getProgSkipFlag() -{ - return skip; -} - -/** - *取得当前的audio索引 - *@param defaultLang 用户未选择语言时,默认的全局语言 - *@return 当前的Audio索引 - */ -int CTvProgram::getCurrentAudio(String8 defaultLang) -{ - CTvDatabase::Cursor c; - String8 cmd; - cmd = String8("select current_aud from srv_table where db_id = ") + String8::format("%d", this->id); - int ret = CTvDatabase::GetTvDb()->select(cmd, c); - LOGD("getCurrentAudio a size = %d", mvAudios.size()); - int id = 0; - if (c.moveToFirst()) { - id = c.getInt(0); - LOGD("getCurrentAudio a id = %d", id); - if (id < 0 && mvAudios.size() > 0) { - LOGD("getCurrentAudio defaultLang.isEmpty() =%s= %d", defaultLang.string(), defaultLang.isEmpty()); - if (!defaultLang.isEmpty()) { - for (int i = 0; i < (int)mvAudios.size(); i++) { - LOGD("getCurrentAudio a mvAudios[i] = %x", (int)mvAudios[i]); - if (mvAudios[i]->getLang() == defaultLang) { - id = i; - break; - } - } - } - - if (id < 0) { - /* still not found, using the first */ - id = 0; - } - } - } - LOGD("getCurrentAudio a idsss = %d", id); - c.close(); - - return id; -} - -int CTvProgram::getAudioChannel() -{ - return audioTrack; -} - -int CTvProgram::updateAudioChannel(int progId, int ch) -{ - String8 cmd; - - cmd = String8("update srv_table set aud_track =") + "\'" + String8::format("%d", ch) + "\'" - + String8(" where srv_table.db_id = ") + String8::format("%d", progId); - - return CTvDatabase::GetTvDb()->exeSql(cmd.string()); -} - -int CTvProgram::getSubtitleIndex(int progId) -{ - CTvDatabase::Cursor c; - String8 cmd = String8("select current_sub from srv_table where db_id = ") + String8::format("%d", progId); - int ret = CTvDatabase::GetTvDb()->select(cmd, c); - if (c.moveToFirst()) { - return c.getInt(0); - } else { - return -1; - } -} - -int CTvProgram::setSubtitleIndex(int progId, int index) -{ - String8 cmd = String8("update srv_table set current_sub = ") + String8::format("%d", index) + String8(" where db_id = ") + String8::format("%d", progId); - return CTvDatabase::GetTvDb()->exeSql(cmd.string()); -} - -int CTvProgram::getCurrAudioTrackIndex() -{ - int audTrackIdx = -1; - - if (-1 == currAudTrackIndex) { // no set field "current_aud" - audTrackIdx = getCurrentAudio(String8("eng")); - setCurrAudioTrackIndex(this->id, audTrackIdx); - } else { - audTrackIdx = currAudTrackIndex; - } - - return audTrackIdx; -} - -void CTvProgram::setCurrAudioTrackIndex(int programId, int audioIndex) -{ - String8 cmd; - - cmd = String8("update srv_table set current_aud = ") - + String8::format("%d", audioIndex) + String8(" where srv_table.db_id = ") + String8::format("%d", programId); - - CTvDatabase::GetTvDb()->exeSql(cmd.string()); -} - -void CTvProgram::setFavoriteFlag(int progId, bool bFavor) -{ - String8 cmd; - - cmd = String8("update srv_table set favor = ") - + String8::format("%d", bFavor ? 1 : 0) + String8(" where srv_table.db_id = ") + String8::format("%d", progId); - - CTvDatabase::GetTvDb()->exeSql(cmd.string()); -} - -void CTvProgram::setSkipFlag(int progId, bool bSkipFlag) -{ - String8 cmd; - - cmd = String8("update srv_table set skip = ") + String8::format("%d", bSkipFlag ? 1 : 0) - + String8(" where srv_table.db_id = ") + String8::format("%d", progId); - - CTvDatabase::GetTvDb()->exeSql(cmd.string()); -} - -void CTvProgram::updateProgramName(int progId, String8 strName) -{ - String8 newName = String8("xxx") + strName; - String8 cmd; - - cmd = String8("update srv_table set name =") + "\'" + String8::format("%s", newName.string()) + "\'" - + String8(" where srv_table.db_id = ") + String8::format("%d", progId); - - CTvDatabase::GetTvDb()->exeSql(cmd.string()); -} - -void CTvProgram::swapChanOrder(int ProgId1, int chanOrderNum1, int ProgId2, int chanOrderNum2) -{ - String8 cmd; - - cmd = String8("update srv_table set chan_order = ") + String8::format("%d", chanOrderNum2) - + String8(" where db_id = ") + String8::format("%d", ProgId1); - CTvDatabase::GetTvDb()->exeSql(cmd.string()); - - String8 cmd2; - cmd2 = String8("update srv_table set chan_order = ") + String8::format("%d", chanOrderNum1) - + String8(" where db_id = ") + String8::format("%d", ProgId2); - CTvDatabase::GetTvDb()->exeSql(cmd2.string()); -} - -void CTvProgram::setLockFlag(int progId, bool bLockFlag) -{ - String8 cmd; - - cmd = String8("update srv_table set lock = ") + String8::format("%d", bLockFlag ? 1 : 0) - + String8(" where srv_table.db_id = ") + String8::format("%d", progId); - - CTvDatabase::GetTvDb()->exeSql(cmd.string()); -} - -bool CTvProgram::getLockFlag() -{ - return lock; -} - diff --git a/tvapi/libtv/tvdb/CTvProgram.h b/tvapi/libtv/tvdb/CTvProgram.h deleted file mode 100644 index dbfcc97..0000000 --- a/tvapi/libtv/tvdb/CTvProgram.h +++ b/dev/null @@ -1,536 +0,0 @@ -// -// -// amlogic 2013 -// -// @ Project : tv -// @ File Name : CTvProgram.h -// @ Date : 2013-11 -// @ Author : -// -// - -#if !defined(_CTVPROGRAM_H) -#define _CTVPROGRAM_H - -#include "CTvDatabase.h" -#include "CTvChannel.h" -#include <utils/String8.h> -#include <utils/RefBase.h> -#include <stdlib.h> -#include "CTvLog.h" -using namespace android; -// ProgramӦATVеһƵDTVеһservice -class CTvEvent; -class CTvProgram : public LightRefBase<CTvProgram> { -public: - /*this type value is link to enum AM_SCAN_ServiceType in am_scan.h - * enum AM_SCAN_ServiceType - { - AM_SCAN_SRV_UNKNOWN = 0, < δ֪ - AM_SCAN_SRV_DTV = 1, < ֵ - AM_SCAN_SRV_DRADIO = 2, < ֹ㲥 - AM_SCAN_SRV_ATV = 3, < ģ - }; - */ - /**δ*/ - static const int TYPE_UNKNOWN = 0; - /**ӽĿ*/ - static const int TYPE_TV = 4; - /**㲥Ŀ*/ - static const int TYPE_RADIO = 2; - /**ģĿ*/ - static const int TYPE_ATV = 3; - /**ݽĿ*/ - static const int TYPE_DATA = 5; - /**ֽĿ*/ - static const int TYPE_DTV = 1 ; - /** PVR/Timeshifting playback program*/ - static const int TYPE_PLAYBACK = 6; - - static const int PROGRAM_SKIP_NO = 0; - static const int PROGRAM_SKIP_YES = 1; - static const int PROGRAM_SKIP_UNKOWN = 2; - - /** - *ServiceеĻԪϢ - */ -public: - class Element { - private : - int mpid; - - public : - Element(int pid) - { - this->mpid = pid; - } - /** - *ȡûԪصPID - *@return PID - */ - int getPID() - { - return mpid; - } - }; - - - - /** - *ԻԪϢ - */ -public: - class MultiLangElement : public Element { - private : - String8 mlang; - - public : - MultiLangElement(int pid, String8 lang): Element(pid) - { - this->mlang = lang; - } - - /** - *ȡԪضӦ - *@return 3ַַ - */ - String8 getLang() - { - return mlang; - } - }; - - - - /** - *ƵϢ - */ -public : - class Video : public Element { - public: - /**MPEG1/2*/ - static const int FORMAT_MPEG12 = 0; - /**MPEG4*/ - static const int FORMAT_MPEG4 = 1; - /**H.264*/ - static const int FORMAT_H264 = 2; - /**MJPEG*/ - static const int FORMAT_MJPEG = 3; - /**Real video*/ - static const int FORMAT_REAL = 4; - /**JPEG*/ - static const int FORMAT_JPEG = 5; - /**Microsoft VC1*/ - static const int FORMAT_VC1 = 6; - /**AVS*/ - static const int FORMAT_AVS = 7; - /**YUV*/ - static const int FORMAT_YUV = 8; - /**H.264 MVC*/ - static const int FORMAT_H264MVC = 9; - /**QJPEG*/ - static const int FORMAT_QJPEG = 10; - - Video(int pid, int fmt): Element(pid) - { - this->mformat = fmt; - } - - /** - *ȡƵʽ - *@return Ƶʽ - */ - int getFormat() - { - return mformat; - } - private : - int mformat; - }; - - /** - *ƵϢ - */ -public : - class Audio : public MultiLangElement { - public : - /**MPEG*/ - static const int FORMAT_MPEG = 0; - /**PCM 16λС*/ - static const int FORMAT_PCM_S16LE = 1; - /**AAC*/ - static const int FORMAT_AAC = 2; - /**AC3*/ - static const int FORMAT_AC3 = 3; - /**ALAW*/ - static const int FORMAT_ALAW = 4; - /**MULAW*/ - static const int FORMAT_MULAW = 5; - /**DTS*/ - static const int FORMAT_DTS = 6; - /**PCM 16λ*/ - static const int FORMAT_PCM_S16BE = 7; - /**FLAC*/ - static const int FORMAT_FLAC = 8; - /**COOK*/ - static const int FORMAT_COOK = 9; - /**PCM 8λ*/ - static const int FORMAT_PCM_U8 = 10; - /**ADPCM*/ - static const int FORMAT_ADPCM = 11; - /**AMR*/ - static const int FORMAT_AMR = 12; - /**RAAC*/ - static const int FORMAT_RAAC = 13; - /**WMA*/ - static const int FORMAT_WMA = 14; - /**WMA Pro*/ - static const int FORMAT_WMAPRO = 15; - /**PCM*/ - static const int FORMAT_PCM_BLURAY = 16; - /**ALAC*/ - static const int FORMAT_ALAC = 17; - /**Vorbis*/ - static const int FORMAT_VORBIS = 18; - /**AAC latmʽ*/ - static const int FORMAT_AAC_LATM = 19; - /**APE*/ - static const int FORMAT_APE = 20; - - - Audio(int pid, String8 lang, int fmt): MultiLangElement(pid, lang) - { - this->mformat = fmt; - } - - /** - *ȡƵʽ - *@return Ƶʽ - */ - int getFormat() - { - return mformat; - } - private : - int mformat; - }; - - /** - *ĻϢ - */ -public : - class Subtitle : public MultiLangElement { - public : - /**DVB subtitle*/ - static const int TYPE_DVB_SUBTITLE = 1; - /**ֵTeletext*/ - static const int TYPE_DTV_TELETEXT = 2; - /**ģTeletext*/ - static const int TYPE_ATV_TELETEXT = 3; - /**ֵClosed caption*/ - static const int TYPE_DTV_CC = 4; - /**ģClosed caption*/ - static const int TYPE_ATV_CC = 5; - - - - Subtitle(int pid, String8 lang, int type, int num1, int num2): MultiLangElement(pid, lang) - { - - this->type = type; - if (type == TYPE_DVB_SUBTITLE) { - compositionPage = num1; - ancillaryPage = num2; - } else if (type == TYPE_DTV_TELETEXT) { - magazineNo = num1; - pageNo = num2; - } - } - - /** - *ȡĻ - *@return Ļ - */ - int getType() - { - return type; - } - - /** - *ȡDVB subtitlecomposition page ID - *@return composition page ID - */ - int getCompositionPageID() - { - return compositionPage; - } - - /** - *ȡDVB subtitleancillary page ID - *@return ancillary page ID - */ - int getAncillaryPageID() - { - return ancillaryPage; - } - - /** - *ȡteletextmagazine number - *@return magazine number - */ - int getMagazineNumber() - { - return magazineNo; - } - - /** - *ȡteletextpage number - *@return page number - */ - int getPageNumber() - { - return pageNo; - } - - private : - int compositionPage; - int ancillaryPage; - int magazineNo; - int pageNo; - int type; - }; - - /** - *TeletextϢ - */ -public : - class Teletext : public MultiLangElement { - public: - Teletext(int pid, String8 lang, int mag, int page): MultiLangElement(pid, lang) - { - magazineNo = mag; - pageNo = page; - } - - /** - *ȡteletextmagazine number - *@return magazine number - */ - int getMagazineNumber() - { - return magazineNo; - } - - /** - *ȡteletextpage number - *@return page number - */ - int getPageNumber() - { - return pageNo; - } - - private : - int magazineNo; - int pageNo; - }; - - //ĿϢ -public: - /**ûзƵû*/ - static const int MINOR_CHECK_NONE = 0; - /**ûзƵѰңƵӣ,ҵƵ*/ - static const int MINOR_CHECK_UP = 1; - /**ûзƵѰңƵּС,ҵƵС*/ - static const int MINOR_CHECK_DOWN = 2; - /*ûзƵѰңȻҵ.*/ - static const int MINOR_CHECK_NEAREST_UP = 3; - /*ûзƵѰңȻҵ.*/ - static const int MINOR_CHECK_NEAREST_DOWN = 4; - - /** - *ȡýĿ - *@return ؽĿ - */ - int getNumber() - { - return major; - } - - /** - *ȡĿ(ATSC) - *@return ؽĿĿ - */ - int getMajor() - { - return major; - } - - /** - *ȡôνĿ(ATSC) - *@return ؽĿĴνĿ - */ - int getMinor() - { - return minor; - } - - /** - *ǷΪATSCģʽ - *@return ATSCģʽtrue - */ - bool isATSCMode() - { - return atscMode; - } - - /** - *ȡƵԶҲ(ATSC) - *@return ƵԶҲ - */ - int getMinorCheck() - { - return minorCheck; - } - -private: - int major; - int minor; - int minorCheck; - bool atscMode; - - -public: - CTvProgram(CTvDatabase::Cursor &c); - CTvProgram(int channelID, int type, int num, int skipFlag); - /** - *ݿһProgram,atscMode - */ - CTvProgram(int channelID, int type, int major, int minor, int skipFlag); - ~CTvProgram(); - // ݿһProgram - CTvProgram(int channelID, int type); - - CTvProgram(); - - - int getCurrentAudio(String8 defaultLang); - Video *getVideo() - { - return mpVideo; - } - Audio *getAudio(int id) - { - if (mvAudios.size() <= 0) return NULL; - return mvAudios[id]; - } - - int getAudioTrackSize() - { - return mvAudios.size(); - } - static int selectByID(int id, CTvProgram &p); - static CTvProgram selectByNumber(int num, int type); - int selectByNumber(int type, int major, int minor, CTvProgram &prog, int minor_check = MINOR_CHECK_NONE); - static int selectByNumber(int type, int num, CTvProgram &prog); - static int selectByChannel(int channelID, int type, Vector<sp<CTvProgram> > &out); - // гȫTVProgram - static int selectAll(bool no_skip, Vector<sp<CTvProgram> > &out); - static int selectByType(int type, int skip, Vector<sp<CTvProgram> > &out); - static int selectByChanID(int type, int skip, Vector<sp<CTvProgram> > &out); - static Vector<CTvProgram> selectByChannel(int channelID); - // ݽĿеĹؼֲָTVProgram - static Vector<CTvProgram> selectByName(int name); - void tvProgramDelByChannelID(int channelID); - int getID() - { - return id; - }; - int getSrc() - { - return src; - }; - int getProgType() - { - return type; - }; - int getChanOrderNum() - { - return chanOrderNum; - }; - int getChanVolume() - { - return volume; - }; - int getSourceId() - { - return sourceID; - }; - int getServiceId() - { - return dvbServiceID; - }; - int getProgSkipFlag(); - int getSubtitleIndex(int progId); - int setSubtitleIndex(int progId, int index); - void setCurrAudioTrackIndex(int programId, int audioIndex); - int getCurrAudioTrackIndex(); - - String8 getName(); - void getCurrentSubtitle(); - void getCurrentTeletext(); - int getChannel(CTvChannel &c); - int upDateChannel(CTvChannel &c, int std, int freq, int fineFreq); - int updateVolComp(int progID, int volValue); - void updateProgramName(int progId, String8 strName); - void setSkipFlag(int progId, bool bSkipFlag); - void setFavoriteFlag(int progId, bool bFavor); - int getFavoriteFlag() - { - return favorite; - }; - void deleteProgram(int progId); - static int CleanAllProgramBySrvType(int srvType); - void setLockFlag(int progId, bool bLockFlag); - bool getLockFlag(); - void swapChanOrder(int ProgId1, int chanOrderNum1, int ProgId2, int chanOrderNum2); - int getAudioChannel(); - static int updateAudioChannel(int progId, int ch); - static int deleteChannelsProgram(CTvChannel &c); - Vector<Subtitle *> getSubtitles() - { - return mvSubtitles; - } -private: - int CreateFromCursor(CTvDatabase::Cursor &c); - int selectProgramInChannelByNumber(int channelID, int num, CTvDatabase::Cursor &c); - int selectProgramInChannelByNumber(int channelID, int major, int minor, CTvDatabase::Cursor &c); - CTvChannel channel; - int id; - int dvbServiceID; - int type; - String8 name; - int channelID; - int skip; - int favorite; - int volume; - int sourceID; - int pmtPID; - int src; - int audioTrack; - int chanOrderNum; - int currAudTrackIndex; - bool lock; - bool scrambled; - // videoϢ,Ͳ - Video *mpVideo; - // audioϢ,Ͳ - Vector<Audio *> mvAudios; - // subtitleϢͲ - Vector<Subtitle *> mvSubtitles; - // teletextϢ,Ͳ - Vector<Teletext *> mvTeletexts; - -}; - -#endif //_CTVPROGRAM_H diff --git a/tvapi/libtv/tvdb/CTvRegion.cpp b/tvapi/libtv/tvdb/CTvRegion.cpp deleted file mode 100644 index a39f56c..0000000 --- a/tvapi/libtv/tvdb/CTvRegion.cpp +++ b/dev/null @@ -1,174 +0,0 @@ -// -// -// amlogic 2013 -// -// @ Project : tv -// @ File Name : CTvRegion.cpp -// @ Date : 2013-11 -// @ Author : -// -// -#define LOG_TAG "CTvRegion" - -#include "CTvRegion.h" -#include "CTvDatabase.h" - -CTvRegion::CTvRegion(CTvDatabase db __unused) -{ -} - -CTvRegion::CTvRegion() -{ -} - -CTvRegion::~CTvRegion() -{ -} - -CTvRegion CTvRegion::selectByID() -{ - CTvRegion r; - return r; -} - -int CTvRegion::getChannelListByName(char *name, Vector<sp<CTvChannel> > &vcp) -{ - if (name == NULL) - return -1; - - String8 cmd; - cmd = String8("select * from region_table where name = ") + String8("\'") + name + String8("\'"); - - CTvDatabase::Cursor c; - CTvDatabase::GetTvDb()->select(cmd, c); - int col, size = 0; - int id; - int mode; - int frequency = 0; - int bandwidth; - int modulation; - int symbolRate; - int ofdmMode; - int channelNum = 0; - - if (c.moveToFirst()) { - do { - col = c.getColumnIndex("db_id"); - id = c.getInt(col); - col = c.getColumnIndex("fe_type"); - mode = c.getInt(col); - col = c.getColumnIndex("frequency"); - frequency = c.getInt(col); - col = c.getColumnIndex("modulation"); - modulation = c.getInt(col); - col = c.getColumnIndex("bandwidth"); - bandwidth = c.getInt(col); - col = c.getColumnIndex("symbol_rate"); - symbolRate = c.getInt(col); - col = c.getColumnIndex("ofdm_mode"); - ofdmMode = c.getInt(col); - col = c.getColumnIndex("logical_channel_num"); - channelNum = c.getInt(col); - vcp.add(new CTvChannel(id, mode, frequency, bandwidth, modulation, symbolRate, ofdmMode, channelNum)); - size++; - } while (c.moveToNext()); - } - c.close(); - - return size; -} - -int CTvRegion::getChannelListByNameAndFreqRange(char *name, int beginFreq, int endFreq, Vector<sp<CTvChannel> > &vcp) -{ - if (name == NULL) - return -1; - int ret = 0; - String8 cmd; - cmd = String8("select * from region_table where name = ") + String8("\'") + name + String8("\'") - + String8(" and frequency >= ") + String8::format("%d", beginFreq) + String8(" and frequency <= ") - + String8::format("%d", endFreq); - - CTvDatabase::Cursor c; - CTvDatabase::GetTvDb()->select(cmd, c); - int col, size = 0; - int id; - int mode; - int frequency = 0; - int bandwidth; - int modulation; - int symbolRate; - int ofdmMode; - int channelNum = 0; - - do { - if (c.moveToFirst()) { - do { - col = c.getColumnIndex("db_id"); - id = c.getInt(col); - col = c.getColumnIndex("fe_type"); - mode = c.getInt(col); - col = c.getColumnIndex("frequency"); - frequency = c.getInt(col); - col = c.getColumnIndex("modulation"); - modulation = c.getInt(col); - col = c.getColumnIndex("bandwidth"); - bandwidth = c.getInt(col); - col = c.getColumnIndex("symbol_rate"); - symbolRate = c.getInt(col); - col = c.getColumnIndex("ofdm_mode"); - ofdmMode = c.getInt(col); - col = c.getColumnIndex("logical_channel_num"); - channelNum = c.getInt(col); - vcp.add(new CTvChannel(id, mode, frequency, bandwidth, modulation, symbolRate, ofdmMode, channelNum)); - size++; - } while (c.moveToNext()); - } else { - ret = -1; - break; - } - } while (false); - - c.close(); - return ret; -} - -void CTvRegion::selectByCountry() -{ -} - -Vector<String8> CTvRegion::getAllCountry() -{ - Vector<String8> vStr; - return vStr; -} - -CTvChannel CTvRegion::getChannels() -{ - CTvChannel p; - return p; -} - -int CTvRegion::getLogicNumByNameAndfreq(char *name, int freq) -{ - int ret = 0; - int col = 0; - - if (name == NULL) - return -1; - - String8 cmd; - cmd = String8("select * from region_table where name = ") + String8("\'") + name + String8("\'"); - cmd += String8(" and frequency = ") + String8::format("%d", freq); - - - CTvDatabase::Cursor c; - CTvDatabase::GetTvDb()->select(cmd, c); - if (c.moveToFirst()) { - col = c.getColumnIndex("logical_channel_num"); - ret = c.getInt(col); - } - c.close(); - - return ret; -} - diff --git a/tvapi/libtv/tvdb/CTvRegion.h b/tvapi/libtv/tvdb/CTvRegion.h deleted file mode 100644 index e40a082..0000000 --- a/tvapi/libtv/tvdb/CTvRegion.h +++ b/dev/null @@ -1,42 +0,0 @@ -// -// -// amlogic 2013 -// -// @ Project : tv -// @ File Name : CTvRegion.h -// @ Date : 2013-11 -// @ Author : -// -// - - -#if !defined(_CTVREGION_H) -#define _CTVREGION_H - -#include "CTvDatabase.h" -#include "CTvChannel.h" -#include <utils/String8.h> -#include <utils/Vector.h> -// TV -// ԻÿƵбϢ -using namespace android; -class CTvRegion { -public: - int id; - String8 name; - String8 country; - CTvRegion(CTvDatabase db); - CTvRegion(); - ~CTvRegion(); - static CTvRegion selectByID(); - static int getChannelListByName(char *name, Vector<sp<CTvChannel> > &vcp); - static int getChannelListByNameAndFreqRange(char *name, int beginFreq, int endFreq, Vector<sp<CTvChannel> > &vcp); - static int getLogicNumByNameAndfreq(char *name, int freq); - void selectByCountry(); - Vector<String8> getAllCountry(); - // ȡøRegionźԴƵʲб - // @return źԴƵʲб - CTvChannel getChannels(); -}; - -#endif //_CTVREGION_H diff --git a/tvapi/libtv/tvin/CHDMIRxCEC.cpp b/tvapi/libtv/tvin/CHDMIRxCEC.cpp deleted file mode 100644 index 9a24a57..0000000 --- a/tvapi/libtv/tvin/CHDMIRxCEC.cpp +++ b/dev/null @@ -1,651 +0,0 @@ - -#include "CHDMIRxCEC.h" -#include <fcntl.h> -#include <sys/ioctl.h> -#include <errno.h> -#include <CTvLog.h> - -#include "../tvconfig/tvconfig.h" - -#define CC_ENABLE_PRINT_MESSAGE (0) - -#define CS_HDMIRX_CEC_PATH "/dev/hdmirx0" - -CHDMIRxCEC::CHDMIRxCEC() -{ - int i = 0; - - for (i = 0; i < CC_REQUEST_LIST_SIZE; i++) { - ClrReplyListItem(&mReplyList[i]); - memset((void *) &mMsgBuf[i], 0, sizeof(struct _cec_msg)); - } - - mModuleEnableFlag = -1; - mRequestPause = false; - mState = STATE_STOPED; - - mpObserver = NULL; - - for (i = 0; i < CC_SOURCE_DEV_REFRESH_CNT; i++) { - mSourceDevLogicAddrBuf[i] = -1; - mSourceDevRefreshBuf[i] = -1; - } - - mSourceDevLogicAddrBuf[0] = E_LA_TV; - mSourceDevLogicAddrBuf[1] = E_LA_TV; - mSourceDevLogicAddrBuf[2] = E_LA_TV; - - mSourceDevRefreshBuf[0] = E_LA_PLAYBACK1; - mSourceDevRefreshBuf[1] = E_LA_PLAYBACK2; - mSourceDevRefreshBuf[2] = E_LA_PLYBACK3; -} - -CHDMIRxCEC::~CHDMIRxCEC() -{ -} - -int CHDMIRxCEC::start() -{ - CMutex::Autolock _l (mLock); - - if (GetModuleEnableFlag() == 0) { - return -1; - } - - if (mState == STATE_STOPED) { - this->run(); - } - - return mState; -} - -int CHDMIRxCEC::stop() -{ - CMutex::Autolock _l (mLock); - - if (GetModuleEnableFlag() == 0) { - return -1; - } - - if (mState == STATE_PAUSE) { - resume(); - } - - requestExit(); - mState = STATE_STOPED; - return mState; -} - -int CHDMIRxCEC::pause() -{ - CMutex::Autolock _l (mLock); - - if (GetModuleEnableFlag() == 0) { - return -1; - } - - mRequestPause = true; - return 0; -} - -int CHDMIRxCEC::resume() -{ - CMutex::Autolock _l (mLock); - - if (GetModuleEnableFlag() == 0) { - return -1; - } - - ClearRxMessageBuffer(); - - mRequestPause = false; - mPauseCondition.signal(); - - ClearRxMessageBuffer(); - return 0; -} - -int CHDMIRxCEC::isAllowOperate(int source_input) -{ - if (GetModuleEnableFlag() == 0) { - return -1; - } - - int source_port = CTvin::Tvin_GetSourcePortBySourceInput((tv_source_input_t)source_input); - if (CTvin::getInstance()->VDIN_GetPortConnect(source_port) == false) { - return -1; - } - - return 0; -} - -int CHDMIRxCEC::GetModuleEnableFlag() -{ - const char *config_value = NULL; - - if (mModuleEnableFlag < 0) { - config_value = config_get_str(CFG_SECTION_TV, "tvin.hdmirx.cec.enable", "null"); - if (strcasecmp(config_value, "null") == 0) { - mModuleEnableFlag = 0; - } else if (strcasecmp(config_value, "1") == 0 || strcasecmp(config_value, "true") == 0) { - mModuleEnableFlag = 1; - } else { - mModuleEnableFlag = 0; - } - } - - return mModuleEnableFlag; -} - -int CHDMIRxCEC::PrintMessage(const char *func_name, int data_type, struct _cec_msg *msg) -{ -#ifdef CC_ENABLE_PRINT_MESSAGE - if (msg == NULL) { - LOGE("%s, msg is NULL\n", func_name); - return -1; - } - - LOGD("%s, msg_len = %d\n", func_name, msg->msg_len); - LOGD("%s, msg addr 0x%02X\n", func_name, msg->addr); - LOGD("%s, msg cmd 0x%02X\n", func_name, msg->cmd); - for (int i = 0; i < msg->msg_len - 2; i++) { - if (data_type == 0) { - LOGD("%s, msg data[%d] = 0x%02X\n", func_name, i, msg->msg_data[i]); - } else { - LOGD("%s, msg data[%d] = %c\n", func_name, i, msg->msg_data[i]); - } - } -#endif - return 0; -} - -int CHDMIRxCEC::ClrReplyListItem(HDMIRxRequestReplyItem *reply_item) -{ - if (reply_item == NULL) { - return -1; - } - - reply_item->WaitCmd = 0; - reply_item->WaitLogicAddr = 0; - reply_item->WaitTimeOut = 0; - reply_item->WaitFlag = 0; - reply_item->DataFlag = 0; - memset((void *) & (reply_item->msg), 0, sizeof(struct _cec_msg)); - - return 0; -} - -int CHDMIRxCEC::CopyMessageData(unsigned char data_buf[], unsigned char msg_data[], int msg_len) -{ - if (data_buf == NULL) { - return 0; - } - - memset((void *)data_buf, 0, CC_CEC_STREAM_SIZE); - - if (msg_len > (int)CC_CEC_STREAM_SIZE) { - return 0; - } - - if (msg_len <= 2) { - return 0; - } - - msg_len -= 2; - - memcpy(data_buf, msg_data, msg_len); - - return msg_len; -} - -int CHDMIRxCEC::GetDeviceLogicAddr(int source_input) -{ - return mSourceDevLogicAddrBuf[source_input - SOURCE_HDMI1]; -} - -int CHDMIRxCEC::processRefreshSrcDevice(int source_input) -{ - int i = 0, physical_addr = 0; - int source_port_1 = 0, source_port_2 = 0; - - if (source_input != SOURCE_HDMI1 && source_input != SOURCE_HDMI2 && source_input != SOURCE_HDMI3) { - return -1; - } - - mSourceDevLogicAddrBuf[0] = E_LA_TV; - mSourceDevLogicAddrBuf[1] = E_LA_TV; - mSourceDevLogicAddrBuf[2] = E_LA_TV; - - for (i = 0; i < CC_SOURCE_DEV_REFRESH_CNT; i++) { - if (mSourceDevRefreshBuf[i] < 0) { - continue; - } - - physical_addr = 0; - if (SendGivePhysicalAddressMessage(source_input, mSourceDevRefreshBuf[i], &physical_addr) > 0) { - source_port_1 = CTvin::Tvin_GetSourcePortBySourceInput((tv_source_input_t)source_input); - source_port_2 = CTvin::Tvin_GetSourcePortByCECPhysicalAddress(physical_addr); - if (source_port_1 == source_port_2) { - mSourceDevLogicAddrBuf[source_input - SOURCE_HDMI1] = mSourceDevRefreshBuf[i]; - break; - } - } - } - - if (i == CC_SOURCE_DEV_REFRESH_CNT) { - return -1; - } - - return 0; -} - -int CHDMIRxCEC::ClearRxMessageBuffer() -{ - int m_cec_dev_fd = -1; - - m_cec_dev_fd = open(CS_HDMIRX_CEC_PATH, O_RDWR); - if (m_cec_dev_fd < 0) { - LOGE("%s, Open file %s error: (%s)!\n", __FUNCTION__, CS_HDMIRX_CEC_PATH, strerror ( errno )); - return -1; - } - - ioctl(m_cec_dev_fd, HDMI_IOC_CEC_CLEAR_BUFFER, NULL); - - close(m_cec_dev_fd); - m_cec_dev_fd = -1; - - return 0; -} - -int CHDMIRxCEC::GetMessage(struct _cec_msg msg_buf[]) -{ - int i = 0; - int m_cec_dev_fd = -1; - int msg_cnt = 0; - - if (msg_buf == NULL) { - LOGE("%s, msg_buf is NULL\n", __FUNCTION__); - } - - m_cec_dev_fd = open(CS_HDMIRX_CEC_PATH, O_RDWR); - if (m_cec_dev_fd < 0) { - LOGE("%s, Open file %s error: (%s)!\n", __FUNCTION__, CS_HDMIRX_CEC_PATH, strerror ( errno )); - return 0; - } - - ioctl(m_cec_dev_fd, HDMI_IOC_CEC_GET_MSG_CNT, &msg_cnt); - if (msg_cnt > 0) { - LOGD("%s, msg_cnt = %d\n", __FUNCTION__, msg_cnt); - - for (i = 0; i < msg_cnt; i++) { - ioctl(m_cec_dev_fd, HDMI_IOC_CEC_GET_MSG, &msg_buf[i]); - PrintMessage(__FUNCTION__, 0, &msg_buf[i]); - } - } - - close(m_cec_dev_fd); - m_cec_dev_fd = -1; - - return msg_cnt; -} - - -int CHDMIRxCEC::SendMessage(struct _cec_msg *msg) -{ - int m_cec_dev_fd = -1; - - if (msg == NULL) { - LOGE("%s, msg is NULL\n", __FUNCTION__); - } - - PrintMessage(__FUNCTION__, 0, msg); - - m_cec_dev_fd = open(CS_HDMIRX_CEC_PATH, O_RDWR); - if (m_cec_dev_fd < 0) { - LOGE("%s, Open file %s error: (%s)!\n", __FUNCTION__, CS_HDMIRX_CEC_PATH, strerror ( errno )); - return -1; - } - - ioctl(m_cec_dev_fd, HDMI_IOC_CEC_SENT_MSG, msg); - - close(m_cec_dev_fd); - m_cec_dev_fd = -1; - - return 0; -} - -int CHDMIRxCEC::sendMessageAndWaitReply(struct _cec_msg *msg, struct _cec_msg *reply_msg, int WaitCmd, int timeout) -{ - int tmp_ret = 0, tmp_ind = 0; - - tmp_ret = SendMessage(msg); - if (tmp_ret < 0) { - return tmp_ret; - } - - reply_msg->msg_len = 0; - - HDMIRxRequestReplyItem reply_item; - reply_item.WaitCmd = WaitCmd; - reply_item.WaitLogicAddr = msg->addr; - reply_item.WaitTimeOut = timeout; - reply_item.WaitFlag = 1; - reply_item.DataFlag = 0; - - tmp_ind = addToRequestList(&reply_item); - - mReplyLock[tmp_ind].lock(); - mReplyList[tmp_ind].WaitReplyCondition.waitRelative(mReplyLock[tmp_ind], timeout);//wait reply - mReplyLock[tmp_ind].unlock(); - - if (mReplyList[tmp_ind].DataFlag == 1) { - PrintMessage(__FUNCTION__, 0, &mReplyList[tmp_ind].msg); - *reply_msg = mReplyList[tmp_ind].msg; - } else { - rmFromRequestList(tmp_ind); - return -1; - } - - rmFromRequestList(tmp_ind); - - return 0; -} - -int CHDMIRxCEC::SendCustomMessage(int source_input, unsigned char data_buf[]) -{ - CECMsgStream msg_stream; - - if (isAllowOperate(source_input) < 0) { - return -1; - } - - memcpy((void *)msg_stream.buf, data_buf, CC_CEC_STREAM_SIZE); - if (msg_stream.msg.msg_len > CC_CEC_STREAM_SIZE) { - return -1; - } - - return SendMessage(&msg_stream.msg); -} - -int CHDMIRxCEC::SendCustomMessageAndWaitReply(int source_input, unsigned char data_buf[], unsigned char reply_buf[], int WaitCmd, int timeout) -{ - CECMsgStream msg_stream; - struct _cec_msg reply_msg; - - if (isAllowOperate(source_input) < 0) { - return -1; - } - - memcpy((void *)msg_stream.buf, data_buf, CC_CEC_STREAM_SIZE); - if (msg_stream.msg.msg_len > CC_CEC_STREAM_SIZE) { - return -1; - } - - if (sendMessageAndWaitReply(&msg_stream.msg, &reply_msg, WaitCmd, timeout) < 0) { - return -1; - } - - return CopyMessageData(reply_buf, reply_msg.msg_data, reply_msg.msg_len); -} - -int CHDMIRxCEC::SendBoradcastStandbyMessage(int source_input) -{ - struct _cec_msg msg; - - if (isAllowOperate(source_input) < 0) { - return -1; - } - - msg.addr = GetDeviceLogicAddr(source_input); - msg.cmd = E_MSG_STANDBY; - msg.msg_data[0] = 0; - msg.msg_len = 2; - - return SendMessage(&msg); -} - -int CHDMIRxCEC::SendGiveCECVersionMessage(int source_input, unsigned char data_buf[]) -{ - struct _cec_msg msg, reply_msg; - - if (isAllowOperate(source_input) < 0) { - return -1; - } - - if (data_buf == NULL) { - return -1; - } - - msg.addr = GetDeviceLogicAddr(source_input); - msg.cmd = E_MSG_GET_CEC_VERSION; - msg.msg_data[0] = 0; - msg.msg_len = 2; - - if (sendMessageAndWaitReply(&msg, &reply_msg, E_MSG_CEC_VERSION, 2000) < 0) { - return -1; - } - - return CopyMessageData(data_buf, reply_msg.msg_data, reply_msg.msg_len); -} - -int CHDMIRxCEC::SendGiveDeviceVendorIDMessage(int source_input, unsigned char data_buf[]) -{ - struct _cec_msg msg, reply_msg; - - if (isAllowOperate(source_input) < 0) { - return -1; - } - - if (data_buf == NULL) { - return -1; - } - - msg.addr = GetDeviceLogicAddr(source_input); - msg.cmd = E_MSG_GIVE_DEVICE_VENDOR_ID; - msg.msg_data[0] = 0; - msg.msg_len = 2; - - if (sendMessageAndWaitReply(&msg, &reply_msg, E_MSG_DEVICE_VENDOR_ID, 2000) < 0) { - return -1; - } - - return CopyMessageData(data_buf, reply_msg.msg_data, reply_msg.msg_len); -} - -int CHDMIRxCEC::SendGiveOSDNameMessage(int source_input, unsigned char data_buf[]) -{ - struct _cec_msg msg, reply_msg; - - if (isAllowOperate(source_input) < 0) { - return -1; - } - - if (data_buf == NULL) { - return -1; - } - - msg.addr = GetDeviceLogicAddr(source_input); - msg.cmd = E_MSG_OSDNT_GIVE_OSD_NAME; - msg.msg_data[0] = 0; - msg.msg_len = 2; - - if (sendMessageAndWaitReply(&msg, &reply_msg, E_MSG_OSDNT_SET_OSD_NAME, 2000) < 0) { - return -1; - } - - return CopyMessageData(data_buf, reply_msg.msg_data, reply_msg.msg_len); -} - -int CHDMIRxCEC::SendGivePhysicalAddressMessage(int source_input, int logic_addr, int *physical_addr) -{ - struct _cec_msg msg, reply_msg; - - if (isAllowOperate(source_input) < 0) { - return -1; - } - - if (physical_addr == NULL) { - return -1; - } - - msg.addr = logic_addr; - msg.cmd = E_MSG_GIVE_PHYSICAL_ADDRESS; - msg.msg_data[0] = 0; - msg.msg_len = 2; - - if (sendMessageAndWaitReply(&msg, &reply_msg, E_MSG_REPORT_PHYSICAL_ADDRESS, 2000) < 0) { - return -1; - } - - if (reply_msg.msg_len == 5) { - *physical_addr = 0; - *physical_addr |= reply_msg.msg_data[0] << 8; - *physical_addr |= reply_msg.msg_data[1]; - return reply_msg.msg_len; - } - - return -1; -} - -int CHDMIRxCEC::SendSetMenuLanguageMessage(int source_input, unsigned char data_buf[]) -{ - struct _cec_msg msg; - - if (isAllowOperate(source_input) < 0) { - return -1; - } - - if (data_buf == NULL) { - return -1; - } - - msg.addr = GetDeviceLogicAddr(source_input); - msg.cmd = E_MSG_SET_MENU_LANGUAGE; - msg.msg_data[0] = data_buf[0]; - msg.msg_data[1] = data_buf[1]; - msg.msg_data[2] = data_buf[2]; - msg.msg_len = 5; - - return SendMessage(&msg); -} - -int CHDMIRxCEC::SendVendorRemoteKeyDownMessage(int source_input, unsigned char key_val) -{ - struct _cec_msg msg; - - if (isAllowOperate(source_input) < 0) { - return -1; - } - - msg.addr = GetDeviceLogicAddr(source_input); - msg.cmd = E_MSG_VENDOR_RC_BUT_DOWN; - msg.msg_data[0] = key_val; - msg.msg_len = 3; - - return SendMessage(&msg); -} - -int CHDMIRxCEC::SendVendorRemoteKeyUpMessage(int source_input) -{ - struct _cec_msg msg; - - if (isAllowOperate(source_input) < 0) { - return -1; - } - - msg.addr = GetDeviceLogicAddr(source_input); - msg.cmd = E_MSG_VENDOR_RC_BUT_UP; - msg.msg_data[0] = 0; - msg.msg_len = 2; - - return SendMessage(&msg); -} - -int CHDMIRxCEC::rmFromRequestList(int index) -{ - mListLock.lock(); - - ClrReplyListItem(&mReplyList[index]); - - mListLock.unlock(); - - return 0; -} - -int CHDMIRxCEC::addToRequestList(HDMIRxRequestReplyItem *reply_item) -{ - int i = 0; - - mListLock.lock(); - - for (i = 0; i < CC_REQUEST_LIST_SIZE; i++) { - if (mReplyList[i].WaitFlag == 0) { - mReplyList[i] = *reply_item; - mListLock.unlock(); - return i; - } - } - - mListLock.unlock(); - - return 0; -} - -int CHDMIRxCEC::processData(int msg_cnt) -{ - int i = 0, j = 0; - CECMsgStream msg_stream; - - for (i = 0; i < msg_cnt; i++) { - for (j = 0; j < CC_REQUEST_LIST_SIZE; j++) { - if (mReplyList[j].WaitFlag) { - if (mMsgBuf[i].cmd == mReplyList[j].WaitCmd && ((mMsgBuf[i].addr & 0xF0) >> 4) == mReplyList[j].WaitLogicAddr) { - mReplyList[j].DataFlag = 1; - mReplyList[j].msg = mMsgBuf[i]; - PrintMessage(__FUNCTION__, 0, &mReplyList[j].msg); - mReplyList[j].WaitReplyCondition.signal(); - - return 0; - } - } - } - - msg_stream.msg = mMsgBuf[i]; - if (mpObserver != NULL) { - mpObserver->onHDMIRxCECMessage(msg_stream.msg.msg_len, msg_stream.buf); - } - } - - return 0; -} - -bool CHDMIRxCEC::threadLoop() -{ - int msg_cnt = 0; - int sleeptime = 200; //ms - - mState = STATE_RUNNING; - - while (!exitPending()) { //requietexit() or requietexitWait() not call - while (mRequestPause) { - mLock.lock(); - mState = STATE_PAUSE; - mPauseCondition.wait(mLock); //first unlock,when return,lock again,so need,call unlock - mState = STATE_RUNNING; - mLock.unlock(); - } - - msg_cnt = GetMessage(mMsgBuf); - - processData(msg_cnt); - - if (!mRequestPause) { - usleep(sleeptime * 1000); - } - } - - mState = STATE_STOPED; - //exit - //return true, run again, return false,not run. - return false; -} diff --git a/tvapi/libtv/tvin/CHDMIRxCEC.h b/tvapi/libtv/tvin/CHDMIRxCEC.h deleted file mode 100644 index 061a2b8..0000000 --- a/tvapi/libtv/tvin/CHDMIRxCEC.h +++ b/dev/null @@ -1,94 +0,0 @@ -#ifndef _C_HDMI_RX_CEC_H_ -#define _C_HDMI_RX_CEC_H_ - -#ifdef __cplusplus -//extern "C" { -#endif - -#include "CTvin.h" -#include <pthread.h> -//#include <cm.h> -//#include <ve.h> -#include "../tvutils/CThread.h" -#include <hdmirx_cec.h> - -class CHDMIRxCEC: public CThread { -public: - CHDMIRxCEC(); - ~CHDMIRxCEC(); - - class IHDMIRxCECObserver { - public: - IHDMIRxCECObserver() {}; - virtual ~IHDMIRxCECObserver() {}; - virtual void onHDMIRxCECMessage(int msg_len __unused, unsigned char msg_buf[] __unused) { - }; - }; - - void setObserver ( IHDMIRxCECObserver *pOb ) { - mpObserver = pOb; - }; - - int start(); - int stop(); - int pause(); - int resume(); - int ClearRxMessageBuffer(); - int processRefreshSrcDevice(int source_input); - int SendCustomMessage(int source_input, unsigned char data_buf[]); - int SendCustomMessageAndWaitReply(int source_input, unsigned char data_buf[], unsigned char reply_buf[], int WaitCmd, int timeout); - int SendBoradcastStandbyMessage(int source_input); - int SendGiveCECVersionMessage(int source_input, unsigned char data_buf[]); - int SendGiveDeviceVendorIDMessage(int source_input, unsigned char data_buf[]); - int SendGiveOSDNameMessage(int source_input, unsigned char data_buf[]); - int SendGivePhysicalAddressMessage(int source_input, int logic_addr, int *physical_addr); - int SendSetMenuLanguageMessage(int source_input, unsigned char data_buf[]); - int SendVendorRemoteKeyDownMessage(int source_input, unsigned char key_val); - int SendVendorRemoteKeyUpMessage(int source_input); - - -private: - int mModuleEnableFlag; - int mRequestPause; - int mState; - IHDMIRxCECObserver *mpObserver; - - bool threadLoop(); - int processData(int msg_cnt); - - int isAllowOperate(int source_input); - int GetModuleEnableFlag(); - int GetDeviceLogicAddr(int source_input); - int SendMessage(struct _cec_msg *msg); - int sendMessageAndWaitReply(struct _cec_msg *msg, struct _cec_msg *reply_msg, int WaitCmd, int timeout); - int GetMessage(struct _cec_msg *msg_list); - int rmFromRequestList(int index); - int addToRequestList(HDMIRxRequestReplyItem *reply_item); - int PrintMessage(const char *func_name, int data_type, struct _cec_msg *msg); - int ClrReplyListItem(HDMIRxRequestReplyItem *reply_item); - int CopyMessageData(unsigned char data_buf[], unsigned char msg_data[], int msg_len); - - int mSourceDevLogicAddrBuf[CC_SOURCE_DEV_REFRESH_CNT]; - int mSourceDevRefreshBuf[CC_SOURCE_DEV_REFRESH_CNT]; - - CCondition mPauseCondition; - mutable CMutex mLock; - mutable CMutex mListLock; - mutable CMutex mReplyLock[CC_REQUEST_LIST_SIZE]; - HDMIRxRequestReplyItem mReplyList[CC_REQUEST_LIST_SIZE]; - struct _cec_msg mMsgBuf[CC_REQUEST_LIST_SIZE]; - - enum RefreshState { - STATE_STOPED = 0, - STATE_RUNNING, - STATE_PAUSE, - STATE_FINISHED, - }; -}; - -#ifdef __cplusplus -//} -#endif - -#endif/*_C_HDMI_RX_CEC_H_*/ - diff --git a/tvapi/libtv/tvin/CSourceConnectDetect.cpp b/tvapi/libtv/tvin/CSourceConnectDetect.cpp deleted file mode 100644 index 0b3a81f..0000000 --- a/tvapi/libtv/tvin/CSourceConnectDetect.cpp +++ b/dev/null @@ -1,263 +0,0 @@ -#define LOG_TAG "CSourceConnectDetect" - -#include "CTvin.h" -#include <CTvLog.h> -#include <stdio.h> -#include <stdlib.h> -#include <unistd.h> -#include <sys/prctl.h> -#include <fcntl.h> -#include <errno.h> - -#include <cutils/log.h> - -#include "../tvutils/tvutils.h" -#include "../tvconfig/tvconfig.h" - -#include "CSourceConnectDetect.h" - -CSourceConnectDetect::CSourceConnectDetect() -{ - mpObserver = NULL; - if (mEpoll.create() < 0) { - return; - } - //avin - if (mAvinDetectFile.openFile(AVIN_DETECT_PATH) > 0) { - m_event.data.fd = mAvinDetectFile.getFd(); - m_event.events = EPOLLIN | EPOLLET; - mEpoll.add(mAvinDetectFile.getFd(), &m_event); - } - //HDMI - if (mHdmiDetectFile.openFile(HDMI_DETECT_PATH) > 0) { - m_event.data.fd = mHdmiDetectFile.getFd(); - m_event.events = EPOLLIN | EPOLLET; - mEpoll.add(mHdmiDetectFile.getFd(), &m_event); - } - //vfame size change - if (mVppPollFile.openFile(VPP_POLL_PATCH) > 0) { - m_event.data.fd = mVppPollFile.getFd(); - m_event.events = EPOLLIN | EPOLLET; - mEpoll.add(mVppPollFile.getFd(), &m_event); - } -} - -CSourceConnectDetect::~CSourceConnectDetect() -{ -} - -int CSourceConnectDetect::startDetect() -{ - this->run(); - - return 0; -} - -int CSourceConnectDetect::SourceInputMaptoChipHdmiPort(tv_source_input_t source_input) -{ - tvin_port_t source_port = TVIN_PORT_NULL; - source_port = CTvin::getInstance()->Tvin_GetSourcePortBySourceInput(source_input); - switch (source_port) { - case TVIN_PORT_HDMI0: - return HDMI_DETECT_STATUS_BIT_A; - break; - case TVIN_PORT_HDMI1: - return HDMI_DETECT_STATUS_BIT_B; - break; - case TVIN_PORT_HDMI2: - return HDMI_DETECT_STATUS_BIT_C; - break; - case TVIN_PORT_HDMI3: - return HDMI_DETECT_STATUS_BIT_D; - break; - default: - return HDMI_DETECT_STATUS_BIT_A; - break; - } - -} - -tv_source_input_t CSourceConnectDetect::ChipHdmiPortMaptoSourceInput(int port) -{ - switch (port) { - case HDMI_DETECT_STATUS_BIT_A: - return CTvin::getInstance()->Tvin_PortToSourceInput(TVIN_PORT_HDMI0); - break; - case HDMI_DETECT_STATUS_BIT_B: - return CTvin::getInstance()->Tvin_PortToSourceInput(TVIN_PORT_HDMI1); - break; - case HDMI_DETECT_STATUS_BIT_C: - return CTvin::getInstance()->Tvin_PortToSourceInput(TVIN_PORT_HDMI2); - break; - case HDMI_DETECT_STATUS_BIT_D: - return CTvin::getInstance()->Tvin_PortToSourceInput(TVIN_PORT_HDMI3); - break; - default: - return CTvin::getInstance()->Tvin_PortToSourceInput(TVIN_PORT_HDMI0); - break; - } -} - -int CSourceConnectDetect::GetSourceConnectStatus(tv_source_input_t source_input) -{ - int PlugStatus = -1; - int hdmi_status = 0; - int source = -1; - int HdmiDetectStatusBit = SourceInputMaptoChipHdmiPort((tv_source_input_t)source_input); - switch (source_input) { - case SOURCE_AV2: - case SOURCE_AV1: { - struct report_data_s status[2]; - mAvinDetectFile.readFile((void *)(&status), sizeof(struct report_data_s) * 2); - for (int i = 0; i < 2; i++) { - if (status[i].channel == AVIN_CHANNEL1) { - source = SOURCE_AV1; - } else if (status[i].channel == AVIN_CHANNEL2) { - source = SOURCE_AV2; - } - - if (source == source_input) { - if (status[i].status == AVIN_STATUS_IN) { - PlugStatus = CC_SOURCE_PLUG_IN; - } else { - PlugStatus = CC_SOURCE_PLUG_OUT; - } - break; - } - m_avin_status[i] = status[i]; - }//end for - - break; - } - case SOURCE_HDMI1: - case SOURCE_HDMI2: - case SOURCE_HDMI3: { - mHdmiDetectFile.readFile((void *)(&hdmi_status), sizeof(int)); - if ((hdmi_status & HdmiDetectStatusBit) == HdmiDetectStatusBit) { - PlugStatus = CC_SOURCE_PLUG_IN; - } else { - PlugStatus = CC_SOURCE_PLUG_OUT; - } - m_hdmi_status = hdmi_status; - break; - } - default: - LOGD("GetSourceConnectStatus not support source!!!!!!!!!!!!!!!1"); - break; - } - - return PlugStatus; -} - -bool CSourceConnectDetect::threadLoop() -{ - if ( mpObserver == NULL ) { - return false; - } - - LOGD("%s, entering...\n", "TV"); - - prctl(PR_SET_NAME, (unsigned long)"CSourceConnectDetect thread loop"); - //init status - mHdmiDetectFile.readFile((void *)(&m_hdmi_status), sizeof(int)); - mAvinDetectFile.readFile((void *)(&m_avin_status), sizeof(struct report_data_s) * 2); - LOGD("CSourceConnectDetect Loop, get init hdmi = 0x%x avin[0].status = %d, avin[1].status = %d", m_hdmi_status, m_avin_status[0].status, m_avin_status[1].status); - - while (!exitPending()) { //requietexit() or requietexitWait() not call - int num = mEpoll.wait(); - for (int i = 0; i < num; ++i) { - int fd = (mEpoll)[i].data.fd; - /** - * EPOLLIN event - */ - if ((mEpoll)[i].events & EPOLLIN) { - if (fd == mAvinDetectFile.getFd()) {//avin - struct report_data_s status[2]; - mAvinDetectFile.readFile((void *)(&status), sizeof(struct report_data_s) * 2); - for (int i = 0; i < 2; i++) { - int source = -1, plug = -1; - if (/*status[i].channel == m_avin_status[i].channel &&*/ status[i].status != m_avin_status[i].status) { - //LOGD("status[i].status != m_avin_status[i].status"); - if (status[i].status == AVIN_STATUS_IN) { - plug = CC_SOURCE_PLUG_IN; - } else { - plug = CC_SOURCE_PLUG_OUT; - } - - if (status[i].channel == AVIN_CHANNEL1) { - source = SOURCE_AV1; - } else if (status[i].channel == AVIN_CHANNEL2) { - source = SOURCE_AV2; - } - - if (mpObserver != NULL) { - mpObserver->onSourceConnect(source, plug); - } - }//not equal - m_avin_status[i] = status[i]; - } - } else if (fd == mHdmiDetectFile.getFd()) { //hdmi - int hdmi_status = 0; - mHdmiDetectFile.readFile((void *)(&hdmi_status), sizeof(int)); - 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);; - plug = CC_SOURCE_PLUG_OUT; - } - mpObserver->onSourceConnect(source, plug); - } - - if ((hdmi_status & HDMI_DETECT_STATUS_BIT_B) != (m_hdmi_status & HDMI_DETECT_STATUS_BIT_B) ) { - if ((hdmi_status & HDMI_DETECT_STATUS_BIT_B) == HDMI_DETECT_STATUS_BIT_B) { - source = ChipHdmiPortMaptoSourceInput(HDMI_DETECT_STATUS_BIT_B); - plug = CC_SOURCE_PLUG_IN; - } else { - source = ChipHdmiPortMaptoSourceInput(HDMI_DETECT_STATUS_BIT_B);; - plug = CC_SOURCE_PLUG_OUT; - } - mpObserver->onSourceConnect(source, plug); - } - - if ((hdmi_status & HDMI_DETECT_STATUS_BIT_C) != (m_hdmi_status & HDMI_DETECT_STATUS_BIT_C) ) { - if ((hdmi_status & HDMI_DETECT_STATUS_BIT_C) == HDMI_DETECT_STATUS_BIT_C) { - source = ChipHdmiPortMaptoSourceInput(HDMI_DETECT_STATUS_BIT_C); - plug = CC_SOURCE_PLUG_IN; - } else { - source = ChipHdmiPortMaptoSourceInput(HDMI_DETECT_STATUS_BIT_C);; - plug = CC_SOURCE_PLUG_OUT; - } - mpObserver->onSourceConnect(source, plug); - } - - if ((hdmi_status & HDMI_DETECT_STATUS_BIT_D) != (m_hdmi_status & HDMI_DETECT_STATUS_BIT_D) ) { - if ((hdmi_status & HDMI_DETECT_STATUS_BIT_D) == HDMI_DETECT_STATUS_BIT_D) { - source = ChipHdmiPortMaptoSourceInput(HDMI_DETECT_STATUS_BIT_D); - plug = CC_SOURCE_PLUG_IN; - } else { - source = ChipHdmiPortMaptoSourceInput(HDMI_DETECT_STATUS_BIT_D);; - plug = CC_SOURCE_PLUG_OUT; - } - mpObserver->onSourceConnect(source, plug); - } - m_hdmi_status = hdmi_status; - } else if (fd == mVppPollFile.getFd()) { //vframe size change - mpObserver->onVframeSizeChange(); - } - /** - * EPOLLOUT event - */ - if ((mEpoll)[i].events & EPOLLOUT) { - - } - } - } - }//exit - - LOGD("%s, exiting...\n", "CSourceConnectDetect"); - //return true, run again, return false,not run. - return false; -} diff --git a/tvapi/libtv/tvin/CSourceConnectDetect.h b/tvapi/libtv/tvin/CSourceConnectDetect.h deleted file mode 100644 index 3aa56d2..0000000 --- a/tvapi/libtv/tvin/CSourceConnectDetect.h +++ b/dev/null @@ -1,73 +0,0 @@ -#ifndef C_SOURCE_CONNECT_DETECT_H -#define C_SOURCE_CONNECT_DETECT_H -#include "../tvutils/CThread.h" -#include "../tvutils/CFile.h" -enum avin_status_e { - AVIN_STATUS_IN = 0, - AVIN_STATUS_OUT = 1, - AVIN_STATUS_UNKNOW = 2, -}; -enum avin_channel_e { - AVIN_CHANNEL1 = 0, - AVIN_CHANNEL2 = 1, -}; - -struct report_data_s { - enum avin_channel_e channel; - enum avin_status_e status; -}; - -/* -3 R 0 stat_5v_portD: -Status of 5v power for port D. -2 R 0 stat_5v_portC: -Status of 5v power for port C. -1 R 0 stat_5v_portB: -Status of 5v power for port B. -0 R 0 stat_5v_portA: -Status of 5v power for port A. - */ -static const int HDMI_DETECT_STATUS_BIT_A = 0x01; -static const int HDMI_DETECT_STATUS_BIT_B = 0x02; -static const int HDMI_DETECT_STATUS_BIT_C = 0x04; -static const int HDMI_DETECT_STATUS_BIT_D = 0x08; - -static const char *AVIN_DETECT_PATH = "/dev/avin_detect"; -static const char *HDMI_DETECT_PATH = "/dev/hdmirx0"; -static const char *VPP_POLL_PATCH = "/dev/amvideo_poll"; - -class CSourceConnectDetect: public CThread { -public: - CSourceConnectDetect(); - ~CSourceConnectDetect(); - int startDetect(); - int GetSourceConnectStatus(tv_source_input_t source_input); - int SourceInputMaptoChipHdmiPort(tv_source_input_t source_input); - tv_source_input_t ChipHdmiPortMaptoSourceInput(int port); - - class ISourceConnectObserver { - public: - ISourceConnectObserver() {}; - virtual ~ISourceConnectObserver() {}; - virtual void onSourceConnect(int source __unused, int connect_status __unused) { - }; - virtual void onVframeSizeChange() {}; - }; - - void setObserver ( ISourceConnectObserver *pOb ) { - mpObserver = pOb; - }; -private: - bool threadLoop(); - - ISourceConnectObserver *mpObserver; - Epoll mEpoll; - mutable CMutex mLock; - epoll_event m_event; - CFile mAvinDetectFile; - CFile mHdmiDetectFile; - CFile mVppPollFile; - struct report_data_s m_avin_status[2]; - int m_hdmi_status; -}; -#endif diff --git a/tvapi/libtv/tvin/CTvin.cpp b/tvapi/libtv/tvin/CTvin.cpp deleted file mode 100644 index 1fe4fd0..0000000 --- a/tvapi/libtv/tvin/CTvin.cpp +++ b/dev/null @@ -1,3278 +0,0 @@ -#define LOG_TAG "CTvin" - -#include "CTvin.h" -#include <CTvLog.h> -#include <stdio.h> -#include <unistd.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <sys/ioctl.h> -#include <fcntl.h> -#include <string.h> -#include <errno.h> -#include <dlfcn.h> -#include <linux/fb.h> -#include <stdlib.h> -#include <cutils/properties.h> -#include <cutils/log.h> -#include <sys/mman.h> -#include "../vpp/CPQdb.h" -#include "CAv.h" -#include "../tvsetting/CTvSetting.h" -#include "../tvutils/tvutils.h" -#include "../tvconfig/tvconfig.h" -#include "CFbcCommunication.h" - -#define AFE_DEV_PATH "/dev/tvafe0" -#define HDMIRX_KSV_PATH "/dev/hdmirx0" - - -#define CC_SEL_VDIN_DEV (0) - -#define MODE_3D_DISABLE 0x00000000 -#define MODE_3D_ENABLE 0x00000001 -#define MODE_AUTO 0x00000002 -#define MODE_2D_TO_3D 0x00000004 -#define MODE_LR 0x00000008 -#define MODE_BT 0x00000010 -#define MODE_LR_SWITCH 0x00000020 -#define MODE_FIELD_DEPTH 0x00000040 -//#define MODE_3D_TO_2D_L 0x00000080 redefine -//#define MODE_3D_TO_2D_R 0x00000100 redefine -#define LR_FORMAT_INDICATOR 0x00000200 -#define BT_FORMAT_INDICATOR 0x00000400 - -/* ADC calibration pattern & format define */ -/* default 100% 8 color-bar */ -//#define VGA_SOURCE_RGB444 -#define VGA_H_ACTIVE (1024) -#define VGA_V_ACTIVE (768) -#define COMP_H_ACTIVE (1280) -#define COMP_V_ACTIVE (720) -#define CVBS_H_ACTIVE (720) -#define CVBS_V_ACTIVE (480) - -int CTvin::mSourceInputToPortMap[SOURCE_MAX]; -CTvin *CTvin::mInstance; - -CTvin *CTvin::getInstance() -{ - if (NULL == mInstance) mInstance = new CTvin(); - return mInstance; -} - -CTvin::CTvin() -{ - int i = 0; - - m_vdin_dev_fd = -1; - afe_dev_fd = -1; - - m_tvin_param.index = 0; - m_is_decoder_start = false; - gExistD2D3 = -1; - gVideoPath[0] = '\0'; - m_pathid = TV_PATH_DECODER_3D_AMVIDEO; - - for (i = 0; i < SOURCE_MAX; i++) { - mSourceInputToPortMap[i] = TVIN_PORT_NULL; - } - - mSourceInputToPortMap[SOURCE_TV] = TVIN_PORT_CVBS3; - mSourceInputToPortMap[SOURCE_AV1] = TVIN_PORT_CVBS1; - mSourceInputToPortMap[SOURCE_AV2] = TVIN_PORT_CVBS2; - mSourceInputToPortMap[SOURCE_YPBPR1] = TVIN_PORT_COMP0; - mSourceInputToPortMap[SOURCE_YPBPR2] = TVIN_PORT_COMP1; - mSourceInputToPortMap[SOURCE_HDMI1] = TVIN_PORT_HDMI0; - mSourceInputToPortMap[SOURCE_HDMI2] = TVIN_PORT_HDMI2; - mSourceInputToPortMap[SOURCE_HDMI3] = TVIN_PORT_HDMI1; - mSourceInputToPortMap[SOURCE_VGA] = TVIN_PORT_VGA0; - mSourceInputToPortMap[SOURCE_MPEG] = TVIN_PORT_MPEG0; - mSourceInputToPortMap[SOURCE_DTV] = TVIN_PORT_DTV; - mSourceInputToPortMap[SOURCE_IPTV] = TVIN_PORT_BT656; -} - -CTvin::~CTvin() -{ -} - -int CTvin::OpenTvin() -{ - const char *config_value; - config_value = config_get_str ( CFG_SECTION_TV, "tvin.manual.set.tvpath", "null" ); - strcpy ( config_tv_path, config_value ); - memset ( config_default_path, 0x0, 64 ); - config_value = config_get_str ( CFG_SECTION_TV, "tvin.manual.set.defaultpath", "null" ); - strcpy ( config_default_path, config_value ); - return 0; -} - -int CTvin::IsFileExist ( const char *file_name ) -{ - struct stat tmp_st; - - if ( stat ( file_name, &tmp_st ) < 0 ) { - return 0; - } - - return 1; -} - -char *CTvin::DelSub ( char *str, char *sub ) -{ - char *psrc = str, *pdest = str, *psub = NULL, *p = NULL; - - if ( ( str == NULL ) || ( sub == NULL ) ) { - return NULL; - } - - while ( *psrc ) { - p = psrc; - psub = sub; - - while ( *p && *p == *psub ) { - p++; - psub++; - } - - if ( *psub == 0 ) { - psrc = p; - } else { - *pdest++ = *psrc++; - } - } - - *pdest = 0; - - return str; -} - -int CTvin::setMpeg2Vdin(int enable) -{ - /* let output data loop to vdin */ - FILE *fp = fopen ( "/sys/module/di/parameters/mpeg2vdin_en", "w" ); - - if ( fp == NULL ) { - LOGW ( "Open /sys/module/di/parameters/mpeg2vdin_en error\n" ); - return -1; - } - fprintf ( fp, "%d", enable ); - fclose ( fp ); - return 0; -} - -char *CTvin::VDIN_CheckVideoPath ( const char *videopath ) -{ - strncpy ( gVideoPath, videopath, sizeof ( gVideoPath ) ); - - if ( strstr ( videopath, "d2d3 " ) != NULL ) { - if ( gExistD2D3 == -1 ) { - gExistD2D3 = IsFileExist ( "/sys/class/d2d3/d2d3" ); - } - - if ( gExistD2D3 == 0 ) { - DelSub ( gVideoPath, (char *)"d2d3 " ); - } - } - - LOGW ( "%s, video path before check [%s]\n", CFG_SECTION_TV, videopath ); - LOGW ( "%s, video path after check [%s]\n", CFG_SECTION_TV, gVideoPath ); - - return gVideoPath; -} - -int CTvin::VDIN_AddPath ( const char *videopath ) -{ - FILE *fp = NULL; - int ret = -1; - char *tmp_video_path = NULL; - - tmp_video_path = VDIN_CheckVideoPath ( videopath ); - - fp = fopen ( "/sys/class/vfm/map", "w" ); - - if ( fp == NULL ) { - LOGW ( "Open /sys/class/vfm/map error(%s)!\n", strerror ( errno ) ); - return -1; - } - - ret = fprintf ( fp, "%s", tmp_video_path ); - - if ( ret < 0 ) { - LOGW ( "Add VideoPath error(%s)!\n", strerror ( errno ) ); - } - - fclose ( fp ); - fp = NULL; - - return ret; -} - -int CTvin::VDIN_RmDefPath ( void ) -{ - int fd = -1, ret; - char str[] = "rm default"; - - - fd = open ( "/sys/class/vfm/map", O_RDWR ); - - if ( fd < 0 ) { - LOGW ( "Open /sys/class/vfm/map error(%s)!\n", strerror ( errno ) ); - return -1; - } - - ret = write ( fd, str, sizeof ( str ) ); - - if ( ret < 0 ) { - LOGW ( "Rm default path error(%s)!\n", strerror ( errno ) ); - } - - close ( fd ); - fd = -1; - - return ret; -} - -int CTvin::VDIN_RmTvPath ( void ) -{ - int fd, ret; - char str[] = "rm tvpath"; - - - fd = open ( "/sys/class/vfm/map", O_RDWR ); - - if ( fd < 0 ) { - LOGW ( "Open /sys/class/vfm/map error(%s)!\n", strerror ( errno ) ); - return -1; - } - - ret = write ( fd, str, sizeof ( str ) ); - - if ( ret <= 0 ) { - LOGW ( "Rm tv path error(%s)!\n", strerror ( errno ) ); - } - - close ( fd ); - fd = -1; - return ret; -} - -int CTvin::VDIN_AddVideoPath ( int selPath ) -{ - int ret = -1; - - switch ( selPath ) { - case TV_PATH_VDIN_AMVIDEO: - ret = VDIN_AddPath ( "add tvpath vdin0 amvideo" ); - break; - - case TV_PATH_VDIN_DEINTERLACE_AMVIDEO: - ret = VDIN_AddPath ( "add tvpath vdin0 deinterlace amvideo" ); - break; - - case TV_PATH_VDIN_3D_AMVIDEO: - ret = VDIN_AddPath ( "add tvpath vdin0 ppmgr amvideo" ); - break; - - case TV_PATH_VDIN_NEW3D_AMVIDEO: - ret = VDIN_AddPath ( "add tvpath vdin0 deinterlace ppmgr d2d3 amvideo" ); - break; - - case TV_PATH_VDIN_NEW3D_WITHOUTPPMGR_AMVIDEO: - ret = VDIN_AddPath ( "add tvpath vdin0 deinterlace d2d3 amvideo" ); - break; - - case TV_PATH_DECODER_3D_AMVIDEO: - ret = VDIN_AddPath ( "add default decoder ppmgr deinterlace amvideo" ); - break; - - case TV_PATH_DECODER_AMVIDEO: - ret = VDIN_AddPath ( "add default decoder deinterlace amvideo" ); - break; - - case TV_PATH_VDIN_FREESCALE_AMVIDEO: - ret = VDIN_AddPath ( "add previewpath vdin0 freescale amvideo" ); - break; - - case TV_PATH_DECODER_NEW3D_AMVIDEO: - ret = VDIN_AddPath ( "add default decoder deinterlace ppmgr d2d3 amvideo" ); - break; - - case TV_PATH_DECODER_NEW3D_WITHOUTPPMGR_AMVIDEO: - ret = VDIN_AddPath ( "add default decoder deinterlace d2d3 amvideo" ); - break; - } - - return ret; -} - -int CTvin::VDIN_RmPreviewPath ( void ) -{ - int fd, ret; - char str[] = "rm previewpath"; - - - fd = open ( "/sys/class/vfm/map", O_RDWR ); - - if ( fd < 0 ) { - LOGW ( "Open /sys/class/vfm/map error(%s)!\n", strerror ( errno ) ); - return -1; - } - - ret = write ( fd, str, sizeof ( str ) ); - - if ( ret < 0 ) { - LOGW ( "Rm tv path error(%s)!\n", strerror ( errno ) ); - } - - close ( fd ); - fd = -1; - - return ret; -} - -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 ) { - LOGW ( "Open %s error(%s)!\n", file_name, strerror ( errno ) ); - return -1; - } - - 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; -} - -int CTvin::VDIN_GetVdinFd() -{ - return m_vdin_dev_fd; -} - -int CTvin::VDIN_CloseModule() -{ - if ( m_vdin_dev_fd != -1 ) { - close ( m_vdin_dev_fd ); - m_vdin_dev_fd = -1; - } - - return 0; -} - -int CTvin::VDIN_DeviceIOCtl ( int request, ... ) -{ - int tmp_ret = -1; - va_list ap; - void *arg; - - if ( m_vdin_dev_fd >= 0 ) { - va_start ( ap, request ); - arg = va_arg ( ap, void * ); - va_end ( ap ); - - tmp_ret = ioctl ( m_vdin_dev_fd, request, arg ); - return tmp_ret; - } - - return -1; -} - -int CTvin::VDIN_OpenPort ( tvin_port_t port ) -{ - int rt = -1; - struct tvin_parm_s vdinParam; - vdinParam.port = port; - vdinParam.index = 0; - rt = VDIN_DeviceIOCtl ( TVIN_IOC_OPEN, &vdinParam ); - - if ( rt < 0 ) { - LOGW ( "Vdin open port, error(%s)!", strerror ( errno ) ); - } - - return rt; -} - -int CTvin::VDIN_ClosePort() -{ - int rt = -1; - - rt = VDIN_DeviceIOCtl ( TVIN_IOC_CLOSE ); - - if ( rt < 0 ) { - LOGW ( "Vdin close port, error(%s)!", strerror ( errno ) ); - } - - return rt; -} - -int CTvin::VDIN_StartDec ( const struct tvin_parm_s *vdinParam ) -{ - int rt = -1; - - if ( vdinParam == NULL ) { - return -1; - } - - rt = VDIN_DeviceIOCtl ( TVIN_IOC_START_DEC, vdinParam ); - - LOGD ( "VDIN_StartDec:\n" ); - LOGD ( "index = [%d]\n", vdinParam->index ); - LOGD ( "port = [0x%x]\n", ( unsigned int ) vdinParam->port ); - LOGD ( "format = [0x%x]\n", ( unsigned int ) ( vdinParam->info.fmt ) ); - - if ( rt < 0 ) { - LOGW ( "Vdin start decode, error(%s)!\n", strerror ( errno ) ); - } - - return rt; -} - -int CTvin::VDIN_StopDec() -{ - int rt = -1; - - rt = VDIN_DeviceIOCtl ( TVIN_IOC_STOP_DEC ); - - if ( rt < 0 ) { - LOGW ( "Vdin stop decode, error(%s)", strerror ( errno ) ); - } - - return rt; -} - -int CTvin::VDIN_GetSignalInfo ( struct tvin_info_s *SignalInfo ) -{ - int rt = -1; - - rt = VDIN_DeviceIOCtl ( TVIN_IOC_G_SIG_INFO, SignalInfo ); - - if ( rt < 0 ) { - LOGW ( "Vdin get signal info, error(%s), ret = %d.\n", strerror ( errno ), rt ); - //system("reboot"); - } - - return rt; -} - -int CTvin::VDIN_SetVdinParam ( const struct tvin_parm_s *vdinParam ) -{ - int rt = -1, i = 0; - - rt = VDIN_DeviceIOCtl ( TVIN_IOC_S_PARM, vdinParam ); - - if ( rt < 0 ) { - LOGW ( "Vdin set signal param, error(%s)\n", strerror ( errno ) ); - } - - return rt; -} - -int CTvin::VDIN_GetVdinParam ( const struct tvin_parm_s *vdinParam ) -{ - int rt = -1, i = 0; - - rt = VDIN_DeviceIOCtl ( TVIN_IOC_G_PARM, vdinParam ); - - if ( rt < 0 ) { - LOGW ( "Vdin get signal param, error(%s)\n", strerror ( errno ) ); - } - - return rt; -} - -int CTvin::VDIN_OnoffVScaler ( int isOn ) -{ - FILE *fp = NULL; - - if ( isOn == 1 ) { - isOn = 1; - } else { - isOn = 0; - } - - fp = fopen ( "/sys/class/video/vscaler", "w" ); - if ( fp == NULL ) { - LOGW ( "Open /sys/class/video/vscaler error(%s)!\n", strerror ( errno ) ); - return -1; - } - - fprintf ( fp, "%d", ( int ) isOn ); - fclose ( fp ); - fp = NULL; - - return 0; -} - -int CTvin::VDIN_GetDisplayVFreq (void) -{ - int fd = -1; - char buf[32]; - - fd = open("/sys/class/display/mode", O_RDWR); - if (fd < 0) { - LOGW("Open /sys/class/display/mode error(%s)!\n", strerror(errno)); - return -1; - } - memset(buf, 0, sizeof(buf)); - read(fd, buf, sizeof(buf)); - close(fd); - LOGD( "%s, VDIN_GetDisplayVFreq is %s\n", __FUNCTION__, buf); - if (strstr(buf, "50hz") != NULL) { - return 50; - } else if (strstr(buf, "60hz") != 0) { - return 60; - } else { - return 50; - } -} - -int CTvin::VDIN_SetDisplayVFreq ( int freq, int display_resolution , bool isFbc) -{ - FILE *fp = NULL; - const char *config_value = NULL; - static int display_mode_type = -1; - CFbcCommunication *pFBC = NULL; - static int last_freq = 50; - - last_freq = VDIN_GetDisplayVFreq(); - if (last_freq == freq) { - LOGD ( "%s, same freq, last_freq = %d, freq = %d.", __FUNCTION__, last_freq, freq); - return 0; - } else { - LOGD ( "%s, from last_freq[%d[ to new_freq[%d].", __FUNCTION__, last_freq, freq); - last_freq = freq; - } - - if (display_mode_type == -1) { - config_value = config_get_str ( CFG_SECTION_TV, "tvin.display.mode.type", "null" ); - if (strcasecmp(config_value, "null") == 0 || strcasecmp(config_value, "hdmi_out") == 0) { - display_mode_type = 0; - } else if (strcasecmp(config_value, "lvds_out") == 0) { - display_mode_type = 1; - } else { - display_mode_type = 0; - } - } - - fp = fopen ( "/sys/class/display/mode", "w" ); - - if ( fp == NULL ) { - LOGW ( "Open /sys/class/display/mode error(%s)!\n", strerror ( errno ) ); - return -1; - } - - if ( isFbc ) { - pFBC = GetSingletonFBC(); - if (pFBC != NULL) { - pFBC->cfbc_Set_VMute (COMM_DEV_SERIAL, 2); - usleep ( 300000 ); - } - } - - switch ( display_resolution ) { - case VPP_DISPLAY_RESOLUTION_1366X768: - if ( freq == 50 ) { - fprintf ( fp, "%s", "768p50hz" ); - } else { - fprintf ( fp, "%s", "768p60hz" ); - } - break; - case VPP_DISPLAY_RESOLUTION_3840X2160: - if ( freq == 50 ) { - if (isFbc) { - fprintf ( fp, "%s", "2160p50hz420" ); - } else { - fprintf ( fp, "%s", "2160p50hz" ); - } - } else { - if (isFbc) { - fprintf ( fp, "%s", "2160p60hz420" ); - } else { - fprintf ( fp, "%s", "2160p60hz" ); - } - } - break; - case VPP_DISPLAY_RESOLUTION_1920X1080: - default: - if ( freq == 50 ) { - fprintf ( fp, "%s", "1080p50hz" ); - } else { - fprintf ( fp, "%s", "1080p60hz" ); - } - break; - } - - fclose ( fp ); - fp = NULL; - - return 0; -} - -void CTvin::Tvin_SetDepthOf2Dto3D ( int value ) -{ - //value = -16~16 - int tmp_value = DepthTable_2DTO3D[value + 16]; - LOGD ( "%s, value: %d", __FUNCTION__, value ); - VDIN_Set2D3DDepth ( value ); -} - - -int CTvin::VDIN_Set2D3DDepth ( int count ) -{ - FILE *fp = NULL; - - - fp = fopen ( "/sys/module/d2d3/parameters/depth", "w" ); - - if ( fp == NULL ) { - LOGW ( "Open /sys/module/d2d3/parameters/depth ERROR(%s)!!\n", strerror ( errno ) ); - return -1; - } - - if ( count >= -127 && count <= 127 ) { -#ifdef LOGD_3D_FUNCTION - LOGD ( "set depth value (%d).\n", count ); -#endif - } else { - count = 8 * 12; - LOGE ( "set depth value ERROR!! set default depth.\n" ); - } - - fprintf ( fp, "%d", count ); - fclose ( fp ); - fp = NULL; - - return 0; -} - -int CTvin::VDIN_Set2Dto3D ( int on_off ) -{ - struct tvin_parm_s VdinParam; - VDIN_GetVdinParam ( &VdinParam ); - VdinParam.flag &= ( ~TVIN_PARM_FLAG_2D_TO_3D ); - VdinParam.flag |= ( on_off ) ? ( TVIN_PARM_FLAG_2D_TO_3D ) : ( 0 ); - return VDIN_SetVdinParam ( &VdinParam ); -} - -int CTvin::VDIN_Get_avg_luma(void) -{ - unsigned int lum_sum, pixel_sum, luma_avg; - struct tvin_parm_s vdinParam; - - if ( 0 == VDIN_GetVdinParam( &vdinParam )) { - lum_sum = vdinParam.luma_sum; - pixel_sum = vdinParam.pixel_sum * 2; - if (pixel_sum != 0 && m_is_decoder_start) { - luma_avg = lum_sum / pixel_sum; - } else { - luma_avg = 116; - } - } else { - return -1; - } - LOGD ( "VDIN_get_avg_lut lum_sum =%d,pixel_sum=%d,lut_avg=%d\n", lum_sum, pixel_sum, luma_avg); - return luma_avg; -} - -int CTvin::VDIN_GetHistgram ( int *hisgram ) -{ - int i = 0; - struct tvin_parm_s vdinParam; - - if ( NULL == hisgram ) { - return -1; - } - - if ( 0 == VDIN_GetVdinParam ( &vdinParam ) ) { - for ( i = 0; i < CC_HIST_GRAM_BUF_SIZE; i++ ) { - hisgram[i] = ( int ) vdinParam.histgram[i]; - } - } else { - return -1; - } - - return 0; -} - -int CTvin::VDIN_SetMVCViewMode ( int mode ) -{ - FILE *fp = NULL; - - - fp = fopen ( "/sys/module/amvdec_h264mvc/parameters/view_mode", "w" ); - - if ( fp == NULL ) { - LOGW ( "Open /sys/module/amvdec_h264mvc/parameters/view_mode error(%s)!\n", strerror ( errno ) ); - return -1; - } - - fprintf ( fp, "%d", ( int ) mode ); - - fclose ( fp ); - fp = NULL; - - return 0; -} - -int CTvin::VDIN_GetMVCViewMode ( void ) -{ - FILE *fp = NULL; - int ret = 0; - int mode = 0; - - - fp = fopen ( "/sys/module/amvdec_h264mvc/parameters/view_mode", "w" ); - - if ( fp == NULL ) { - LOGW ( "Open /sys/module/amvdec_h264mvc/parameters/view_mode ERROR(%s)!!\n", strerror ( errno ) ); - return -1; - } - - ret = fread ( &mode, 1, 1, fp ); - LOGD ( "fread /sys/module/amvdec_h264mvc/parameters/view_mode = [%d]", mode ); - - fclose ( fp ); - fp = NULL; - - return mode; -} - -int CTvin::VDIN_SetDIBuffMgrMode ( int mgr_mode ) -{ - FILE *fp = NULL; - - - fp = fopen ( "sys/module/di/parameters/buf_mgr_mode", "w" ); - - if ( fp == NULL ) { - LOGW ( "Open /sys/module/di/parameters/buf_mgr_mode error(%s)!\n", strerror ( errno ) ); - return -1; - } - - fprintf ( fp, "%d", mgr_mode ); - - fclose ( fp ); - fp = NULL; - - return 0; -} - -int CTvin::VDIN_SetDICFG ( int cfg ) -{ - FILE *fp = NULL; - - - fp = fopen ( "sys/class/deinterlace/di0/config", "w" ); - - if ( fp == NULL ) { - LOGW ( "Open /sys/class/deinterlace/di0/config error(%s)!\n", strerror ( errno ) ); - return -1; - } - - if ( 0 == cfg ) { - fprintf ( fp, "%s", "disable" ); - } else { - fprintf ( fp, "%s", "enable" ); - } - - fclose ( fp ); - fp = NULL; - - return 0; -} - -int CTvin::VDIN_SetDI3DDetc ( int enable ) -{ - FILE *fp = NULL; - - - fp = fopen ( "/sys/module/di/parameters/det3d_en", "w" ); - - if ( fp == NULL ) { - LOGW ( "Open /sys/module/di/parameters/det3d_en error(%s)!\n", strerror ( errno ) ); - return -1; - } - - fprintf ( fp, "%d", enable ); - - - fclose ( fp ); - fp = NULL; - - return 0; -} - -int CTvin::VDIN_Get3DDetc ( void ) -{ - int fd = -1; - int ret = -1; - char buf[10]; - - fd = open ( "/sys/module/di/parameters/det3d_en", O_RDWR ); - if ( fd < 0 ) { - LOGW ( "Open /sys/module/di/parameters/det3d_en error(%s)!\n", strerror ( errno ) ); - return -1; - } - - ret = read ( fd, buf, sizeof ( buf ) ); - close ( fd ); - fd = -1; - - if ( strcmp ( "enable", buf ) == 0 ) { - return 1; - } else { - return 0; - } -} - - -int CTvin::VDIN_GetVscalerStatus ( void ) -{ - int fd = -1; - int ret = -1; - char buf[7]; - - fd = open ( "/sys/class/video/vscaler", O_RDWR ); - if ( fd < 0 ) { - LOGW ( "Open /sys/class/video/vscaler error(%s)!\n", strerror ( errno ) ); - return -1; - } - - ret = read ( fd, buf, sizeof ( buf ) ); - close ( fd ); - fd = -1; - - sscanf ( buf, "%d", &ret ); - - ret = ( ( ret & 0x40000 ) == 0 ) ? 1 : 0; - if ( ret == 1 ) { - sleep ( 1 ); - } - - return ret; -} - -int CTvin::VDIN_TurnOnBlackBarDetect ( int isEnable ) -{ - FILE *fp = NULL; - - fp = fopen ( "/sys/module/tvin_vdin/parameters/black_bar_enable", "w" ); - if ( fp == NULL ) { - LOGW ( "Open /sys/module/tvin_vdin/parameters/black_bar_enable error(%s)!\n", strerror ( errno ) ); - return -1; - } - - fprintf ( fp, "%d", isEnable ); - fclose ( fp ); - fp = NULL; - - return 0; -} - -int CTvin::VDIN_LoadHdcpKey ( unsigned char *hdcpkey_buff __unused) -{ - unsigned char testHdcp[368] = { 0x53, 0x4B, 0x59, 0x01, 0x00, 0x10, 0x0D, 0x15, 0x3A, 0x8E, 0x99, 0xEE, 0x2A, 0x55, 0x58, 0xEE, 0xED, 0x4B, 0xBE, 0x00, 0x74, 0xA9, 0x00, 0x10, 0x0A, 0x21, 0xE3, - 0x30, 0x66, 0x34, 0xCE, 0x9C, 0xC7, 0x8B, 0x51, 0x27, 0xF9, 0x0B, 0xAD, 0x09, 0x5F, 0x4D, 0xC2, 0xCA, 0xA2, 0x13, 0x06, 0x18, 0x8D, 0x34, 0x82, 0x46, 0x2D, 0xC9, 0x4B, 0xB0, 0x1C, 0xDE, - 0x3D, 0x49, 0x39, 0x58, 0xEF, 0x2B, 0x68, 0x39, 0x71, 0xC9, 0x4D, 0x25, 0xE9, 0x75, 0x4D, 0xAC, 0x62, 0xF5, 0xF5, 0x87, 0xA0, 0xB2, 0x4A, 0x60, 0xD3, 0xF1, 0x09, 0x3A, 0xB2, 0x3E, 0x19, - 0x4F, 0x3B, 0x1B, 0x2F, 0x85, 0x14, 0x28, 0x44, 0xFC, 0x69, 0x6F, 0x50, 0x42, 0x81, 0xBF, 0x7C, 0x2B, 0x3A, 0x17, 0x2C, 0x15, 0xE4, 0x93, 0x77, 0x74, 0xE8, 0x1F, 0x1C, 0x38, 0x54, 0x49, - 0x10, 0x64, 0x5B, 0x7D, 0x90, 0x3D, 0xA0, 0xE1, 0x8B, 0x67, 0x5C, 0x19, 0xE6, 0xCA, 0x9D, 0xE9, 0x68, 0x5A, 0xB5, 0x62, 0xDF, 0xA1, 0x28, 0xBC, 0x68, 0x82, 0x9A, 0x22, 0xC4, 0xDC, 0x48, - 0x85, 0x0F, 0xF1, 0x3E, 0x05, 0xDD, 0x1B, 0x2D, 0xF5, 0x49, 0x3A, 0x15, 0x29, 0xE7, 0xB6, 0x0B, 0x2A, 0x40, 0xE3, 0xB0, 0x89, 0xD5, 0x75, 0x84, 0x2E, 0x76, 0xE7, 0xBC, 0x63, 0x67, 0xE3, - 0x57, 0x67, 0x86, 0x81, 0xF4, 0xD7, 0xEA, 0x4D, 0x89, 0x8E, 0x37, 0x95, 0x59, 0x1C, 0x8A, 0xCD, 0x79, 0xF8, 0x4F, 0x82, 0xF2, 0x6C, 0x7E, 0x7F, 0x79, 0x8A, 0x6B, 0x90, 0xC0, 0xAF, 0x4C, - 0x8D, 0x43, 0x47, 0x1F, 0x9A, 0xF1, 0xBB, 0x88, 0x64, 0x49, 0x14, 0x50, 0xD1, 0xC3, 0xDF, 0xA6, 0x87, 0xA0, 0x15, 0x98, 0x51, 0x81, 0xF5, 0x97, 0x55, 0x10, 0x4A, 0x99, 0x30, 0x54, 0xA4, - 0xFC, 0xDA, 0x0E, 0xAC, 0x6A, 0xFA, 0x90, 0xEE, 0x12, 0x70, 0x69, 0x74, 0x63, 0x46, 0x63, 0xFB, 0xE6, 0x1F, 0x72, 0xEC, 0x43, 0x5D, 0x50, 0xFF, 0x03, 0x4F, 0x05, 0x33, 0x88, 0x36, 0x93, - 0xE4, 0x72, 0xD5, 0xCC, 0x34, 0x52, 0x96, 0x15, 0xCE, 0xD0, 0x32, 0x52, 0x41, 0x4F, 0xBC, 0x2D, 0xDF, 0xC5, 0xD6, 0x7F, 0xD5, 0x74, 0xCE, 0x51, 0xDC, 0x10, 0x5E, 0xF7, 0xAA, 0x4A, 0x2D, - 0x20, 0x9A, 0x17, 0xDD, 0x30, 0x89, 0x71, 0x82, 0x36, 0x50, 0x09, 0x1F, 0x7C, 0xF3, 0x12, 0xE9, 0x43, 0x10, 0x5F, 0x51, 0xBF, 0xB8, 0x45, 0xA8, 0x5A, 0x8D, 0x3F, 0x77, 0xE5, 0x96, 0x73, - 0x68, 0xAB, 0x73, 0xE5, 0x4C, 0xFB, 0xE5, 0x98, 0xB9, 0xAE, 0x74, 0xEB, 0x51, 0xDB, 0x91, 0x07, 0x7B, 0x66, 0x02, 0x9B, 0x79, 0x03, 0xC5, 0x34, 0x1C, 0x58, 0x13, 0x31, 0xD2, 0x4A, 0xEC - }; - int ret = -1; - int fd = -1; - - fd = open ( "/sys/class/hdmirx/hdmirx0/edid", O_RDWR ); - if ( fd < 0 ) { - LOGW ( "Open hdmi hdcp key error(%s)!!\n", strerror ( errno ) ); - return -1; - } - - ret = write ( fd, testHdcp, 368 ); - if ( ret < 0 ) { - LOGD ( "Write hdmi hdcp key error(%s)!!\n", strerror ( errno ) ); - } - - close ( fd ); - fd = -1; - - return ret; -} - -int CTvin::VDIN_KeepLastFrame ( int enable __unused) -{ - return 0; - /* - FILE *fp = NULL; - fp = fopen ( "/sys/module/amvideo/parameters/keep_old_frame", "w" ); - - if ( fp == NULL ) { - LOGW ( "Open /sys/module/amvideo/parameters/keep_old_frame error(%s)!\n", strerror ( errno ) ); - return -1; - } - - fprintf ( fp, "%d", enable ); - - fclose ( fp ); - fp = NULL; - - return 0; - */ -} - -int CTvin::VDIN_SetVideoFreeze ( int enable ) -{ - FILE *fp = NULL; - - fp = fopen ( "/sys/class/vdin/vdin0/attr", "w" ); - if ( fp == NULL ) { - LOGW ( "Open /sys/class/vdin/vdin0/attr error(%s)!\n", strerror ( errno ) ); - return -1; - } - - if ( enable == 1 ) { - fprintf ( fp, "freeze" ); - } else { - fprintf ( fp, "unfreeze" ); - } - - fclose ( fp ); - fp = NULL; - - return 0; -} - -int CTvin::VDIN_SetDIBypasshd ( int enable ) -{ - FILE *fp = NULL; - - fp = fopen ( "/sys/module/di/parameters/bypass_hd", "w" ); - if ( fp == NULL ) { - LOGW ( "Open /sys/module/di/parameters/bypass_hd error(%s)!\n", strerror ( errno ) ); - return -1; - } - - fprintf ( fp, "%d", enable ); - fclose ( fp ); - fp = NULL; - - return 0; -} - -int CTvin::VDIN_SetDIBypassAll ( int enable ) -{ - FILE *fp = NULL; - - fp = fopen ( "/sys/module/di/parameters/bypass_all", "w" ); - if ( fp == NULL ) { - LOGW ( "Open /sys/module/di/parameters/bypass_all error(%s)!\n", strerror ( errno ) ); - return -1; - } - - fprintf ( fp, "%d", enable ); - fclose ( fp ); - fp = NULL; - return 0; -} - -int CTvin::VDIN_SetDIBypass_Get_Buf_Threshold ( int enable ) -{ - FILE *fp = NULL; - - fp = fopen ( "/sys/module/di/parameters/bypass_get_buf_threshold", "w" ); - if ( fp == NULL ) { - LOGW ( "Open /sys/module/di/parameters/bypass_get_buf_threshold error(%s)!\n", strerror ( errno ) ); - return -1; - } - - fprintf ( fp, "%d", enable ); - fclose ( fp ); - fp = NULL; - - return 0; - -} - -int CTvin::VDIN_SetDIBypassProg ( int enable ) -{ - FILE *fp = NULL; - - fp = fopen ( "/sys/module/di/parameters/bypass_prog", "w" ); - if ( fp == NULL ) { - LOGW ( "Open /sys/module/di/parameters/bypass_prog error(%s)!\n", strerror ( errno ) ); - return -1; - } - - fprintf ( fp, "%d", enable ); - fclose ( fp ); - fp = NULL; - - return 0; -} - -int CTvin::VDIN_SetDIBypassDynamic ( int flag ) -{ - FILE *fp = NULL; - - fp = fopen ( "/sys/module/di/parameters/bypass_dynamic", "w" ); - if ( fp == NULL ) { - LOGW ( "Open /sys/module/di/parameters/bypass_dynamic error(%s)!\n", strerror ( errno ) ); - return -1; - } - - fprintf ( fp, "%d", flag ); - fclose ( fp ); - fp = NULL; - - return 0; -} - -int CTvin::VDIN_SetDIDet3DMode ( int value ) -{ - FILE *fp = NULL; - - fp = fopen ( "/sys/module/di/parameters/det3d_mode", "w" ); - if ( fp == NULL ) { - LOGW ( "Open /sys/module/di/parameters/det3d_mode error(%s)!\n", strerror ( errno ) ); - return -1; - } - - fprintf ( fp, "%d", value ); - fclose ( fp ); - fp = NULL; - - return 0; -} - -int CTvin::VDIN_SetDIBypass3D ( int enable ) -{ - FILE *fp = NULL; - - fp = fopen ( "/sys/module/di/parameters/bypass_3d", "w" ); - - if ( fp == NULL ) { - LOGW ( "Open /sys/module/di/parameters/bypass_3d error(%s)!\n", strerror ( errno ) ); - return -1; - } - - fprintf ( fp, "%d", enable ); - fclose ( fp ); - fp = NULL; - - return 0; -} - -int CTvin::VDIN_SetDIBypassPost ( int enable ) -{ - FILE *fp = NULL; - - fp = fopen ( "/sys/module/di/parameters/bypass_post", "w" ); - if ( fp == NULL ) { - LOGW ( "Open /sys/module/di/parameters/bypass_post error(%s)!\n", strerror ( errno ) ); - return -1; - } - - fprintf ( fp, "%d", enable ); - fclose ( fp ); - fp = NULL; - - return 0; -} - -int CTvin::set3D_FL_Frame(int value) -{ - FILE *fp = NULL; - fp = fopen ( "/sys/module/amvideo/parameters/pause_one_3d_fl_frame", "w" ); - if ( fp == NULL ) { - LOGW ( "Open /sys/module/amvideo/parameters/pause_one_3d_fl_frame error(%s)!\n", strerror ( errno ) ); - return -1; - } - fprintf ( fp, "%d", value ); - fclose ( fp ); - fp = NULL; - return 0; -} - -int CTvin::setLatchFlag(int value) -{ - int fd = -1; - int nodeVal = 0; - char s[10]; - FILE *fp = NULL; - memset(s, 0, sizeof(s)); - read(fd, s, sizeof(s)); - close(fd); - nodeVal = atoi(s); - fp = fopen ( "/sys/module/am_vecm/parameters/vecm_latch_flag", "w" ); - if ( fp == NULL ) { - LOGW ( "/sys/module/am_vecm/parameters/vecm_latch_flag error(%s)!\n", strerror ( errno ) ); - return -1; - } - fprintf ( fp, "%d", value | nodeVal); - fclose ( fp ); - fp = NULL; - LOGD ( "read vecm_latch_flag = (%s)====(0x%x), then set vecm_latch_flag | 0x%x = 0x%x.\n", s, nodeVal, value, value | nodeVal); - return 0; -} - -int CTvin::VDIN_SetDIProg_Proc_Config ( int value ) -{ - FILE *fp = NULL; - - fp = fopen ( "/sys/module/di/parameters/prog_proc_config", "w" ); - if ( fp == NULL ) { - LOGW ( "Open /sys/module/di/parameters/prog_proc_config error(%s)!\n", strerror ( errno ) ); - return -1; - } - - fprintf ( fp, "%d", value ); - fclose ( fp ); - fp = NULL; - - return 0; -} - -#if(1) -int CTvin::VDIN_SetDIInput2Pre ( int value ) -{ - FILE *fp = NULL; - - fp = fopen ( "/sys/module/di/parameters/input2pre", "w" ); - if ( fp == NULL ) { - LOGW ( "Open /sys/module/di/parameters/input2pre error(%s)!\n", strerror ( errno ) ); - return -1; - } - - fprintf ( fp, "%d", value ); - fclose ( fp ); - fp = NULL; - - return 0; - -} -#endif -int CTvin::VDIN_SetVdinFlag ( int flag ) -{ - FILE *fp = NULL; - int freq = 1200000; - - fp = fopen ( "/sys/class/vdin/memp", "w" ); - if ( fp == NULL ) { - LOGW ( "Open /sys/class/vdin/memp error(%s)!\n", strerror ( errno ) ); - return -1; - } - - fprintf ( fp, "%d", flag ); - fclose ( fp ); - fp = NULL; - - return 0; -} - -int CTvin::VDIN_EnableRDMA ( int enable ) -{ - FILE *fp = NULL; - fp = fopen ( "/sys/module/rdma/parameters/enable", "w" ); - - if ( fp == NULL ) { - LOGW ( "Open /sys/module/rdma/parameters/enable error(%s)!\n", strerror ( errno ) ); - return -1; - } - - fprintf ( fp, "%d", enable ); - fclose ( fp ); - fp = NULL; - return 0; -} - -// 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; - } - } - - return afe_dev_fd; -} - -void CTvin::AFE_CloseModule ( void ) -{ - if ( afe_dev_fd >= 0 ) { - close ( afe_dev_fd ); - afe_dev_fd = -1; - } - - return; -} - -int CTvin::AFE_DeviceIOCtl ( int request, ... ) -{ - int tmp_ret = -1; - va_list ap; - void *arg; - - if ( afe_dev_fd >= 0 ) { - va_start ( ap, request ); - arg = va_arg ( ap, void * ); - va_end ( ap ); - - tmp_ret = ioctl ( afe_dev_fd, request, arg ); - - return tmp_ret; - } - - return -1; -} - -int CTvin::AFE_GetDeviceFileHandle() -{ - return afe_dev_fd; -} - -int CTvin::AFE_SetVGAEdid ( const unsigned char *ediddata ) -{ - int rt = -1; - struct tvafe_vga_edid_s vgaEdid; - -#ifdef NO_IC_TEST - - for ( int i = 0; i < 256; i++ ) { - test_edid[i] = ediddata[i]; - } - -#endif - - for ( int i = 0; i < 256; i++ ) { - vgaEdid.value[i] = ediddata[i]; - } - - rt = AFE_DeviceIOCtl ( TVIN_IOC_S_AFE_VGA_EDID, &vgaEdid ); - - if ( rt < 0 ) { - LOGW ( "AFE_SetVGAEdid, error(%s).!\n", strerror ( errno ) ); - } - - return rt; -} - -int CTvin::AFE_GetVGAEdid ( unsigned char *ediddata ) -{ - int rt = -1; - struct tvafe_vga_edid_s vgaEdid; - -#ifdef NO_IC_TEST - - for ( int i = 0; i < 256; i++ ) { - ediddata[i] = test_edid[i]; - } - - LOGD ( "AFE_GetVGAEdid:\n" ); - LOGD ( "===================================================\n" ); - - for ( int i = 0; i < 256; i++ ) { - LOGD ( "vag edid[%d] = [0x%x].\n", i, ediddata[i] ); - } - - LOGD ( "===================================================\n" ); -#endif - - rt = AFE_DeviceIOCtl ( TVIN_IOC_G_AFE_VGA_EDID, &vgaEdid ); - - for ( int i = 0; i < 256; i++ ) { - ediddata[i] = vgaEdid.value[i]; - } - - if ( rt < 0 ) { - LOGW ( "AFE_GetVGAEdid, error(%s)!\n", strerror ( errno ) ); - } - - return rt; -} - -int CTvin::AFE_SetADCTimingAdjust ( const struct tvafe_vga_parm_s *timingadj ) -{ - int rt = -1; - - if ( timingadj == NULL ) { - return rt; - } - - rt = AFE_DeviceIOCtl ( TVIN_IOC_S_AFE_VGA_PARM, timingadj ); - - if ( rt < 0 ) { - LOGW ( "AFE_SetADCTimingAdjust, error(%s)!\n", strerror ( errno ) ); - } - - return rt; -} - -int CTvin::AFE_GetADCCurrentTimingAdjust ( struct tvafe_vga_parm_s *timingadj ) -{ - int rt = -1; - - if ( timingadj == NULL ) { - return rt; - } - - rt = AFE_DeviceIOCtl ( TVIN_IOC_G_AFE_VGA_PARM, timingadj ); - - if ( rt < 0 ) { - LOGW ( "AFE_GetADCCurrentTimingAdjust, error(%s)!\n", strerror ( errno ) ); - return -1; - } - - return 0; -} - -int CTvin::AFE_VGAAutoAdjust ( struct tvafe_vga_parm_s *timingadj ) -{ - enum tvafe_cmd_status_e CMDStatus = TVAFE_CMD_STATUS_PROCESSING; - struct tvin_parm_s tvin_para; - int rt = -1, i = 0; - - if ( timingadj == NULL ) { - return -1; - } - - for ( i = 0, CMDStatus == TVAFE_CMD_STATUS_PROCESSING; i < 50; i++ ) { - 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 ); - } - - if ( ( CMDStatus == TVAFE_CMD_STATUS_IDLE ) || ( CMDStatus == TVAFE_CMD_STATUS_SUCCESSFUL ) ) { - break; - } - - usleep ( 10 * 1000 ); - } - - if ( ( CMDStatus == TVAFE_CMD_STATUS_PROCESSING ) || ( CMDStatus == TVAFE_CMD_STATUS_FAILED ) ) { - return -1; - } - - for ( i = 0; i < 100; i++ ) { - rt = VDIN_DeviceIOCtl ( TVIN_IOC_G_PARM, &tvin_para ); - - if ( tvin_para.info.status == TVIN_SIG_STATUS_STABLE ) { - break; - } - - usleep ( 10 * 1000 ); - } - - rt = AFE_DeviceIOCtl ( TVIN_IOC_S_AFE_VGA_AUTO ); - - if ( rt < 0 ) { - timingadj->clk_step = 0; - timingadj->phase = 0; - timingadj->hpos_step = 0; - timingadj->vpos_step = 0; - AFE_DeviceIOCtl ( TVIN_IOC_S_AFE_VGA_PARM, timingadj ); - return rt; - } else { - ;//AFE_DeviceIOCtl(TVIN_IOC_G_AFE_VGA_PARM, timingadj); - } - - for ( i = 0; i < 10; i++ ) { - sleep ( 1 ); - - rt = AFE_DeviceIOCtl ( TVIN_IOC_G_AFE_CMD_STATUS, &CMDStatus ); - - if ( rt < 0 ) { - return rt; - } else { - if ( CMDStatus == TVAFE_CMD_STATUS_SUCCESSFUL ) { - usleep ( 100 * 1000 ); - AFE_GetADCCurrentTimingAdjust ( timingadj ); - LOGD ( "===================================================\n" ); - LOGW ( "AFE_VGAAutoAdjust, successfull!\n" ); - return 0; - } - } - } - - return -1; -} - -int CTvin::AFE_SetVGAAutoAjust ( void ) -{ - int rt = -1; - tvafe_vga_parm_t timingadj; - tvafe_cmd_status_t Status; - rt = AFE_DeviceIOCtl ( TVIN_IOC_G_AFE_CMD_STATUS, &Status ); - - if ( ( Status == TVAFE_CMD_STATUS_IDLE ) || ( Status == TVAFE_CMD_STATUS_SUCCESSFUL ) ) { - ; - } else { - LOGW ( "AFE_SetVGAAutoAjust, TVIN_IOC_G_AFE_CMD_STATUS failed!\n" ); - return -1; - } - - rt = AFE_DeviceIOCtl ( TVIN_IOC_S_AFE_VGA_AUTO ); - - if ( rt < 0 ) { - timingadj.clk_step = 0; - timingadj.phase = 0; - timingadj.hpos_step = 0; - timingadj.vpos_step = 0; - AFE_DeviceIOCtl ( TVIN_IOC_S_AFE_VGA_PARM, &timingadj ); - return rt; - } - - return 0; -} - -int CTvin::AFE_GetVGAAutoAdjustCMDStatus ( tvafe_cmd_status_t *Status ) -{ - int rt = -1; - - if ( Status == NULL ) { - return rt; - } - - 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 ); - return rt; - } - - return 0; -} - -int CTvin::AFE_GetAdcCal ( struct tvafe_adc_cal_s *adccalvalue ) -{ - int rt = -1; - - rt = AFE_DeviceIOCtl ( TVIN_IOC_G_AFE_ADC_CAL, adccalvalue ); - - if ( rt < 0 ) { - LOGW ( "AFE_GetADCGainOffset, error(%s)!\n", strerror ( errno ) ); - } - - return rt; -} - -int CTvin::AFE_SetAdcCal ( struct tvafe_adc_cal_s *adccalvalue ) -{ - int rt = AFE_DeviceIOCtl ( TVIN_IOC_S_AFE_ADC_CAL, adccalvalue ); - - if ( rt < 0 ) { - LOGW ( "AFE_SetAdcCal, error(%s)!", strerror ( errno ) ); - } - - return rt; -} - -int CTvin::AFE_GetAdcCompCal ( struct tvafe_adc_comp_cal_s *adccalvalue ) -{ - int rt = -1; - - rt = AFE_DeviceIOCtl ( TVIN_IOC_G_AFE_ADC_COMP_CAL, adccalvalue ); - - if ( rt < 0 ) { - LOGW ( "AFE_GetYPbPrADCGainOffset, error(%s)!\n", strerror ( errno ) ); - } - - return rt; -} - -int CTvin::AFE_SetAdcCompCal ( struct tvafe_adc_comp_cal_s *adccalvalue ) -{ - int rt = AFE_DeviceIOCtl ( TVIN_IOC_S_AFE_ADC_COMP_CAL, adccalvalue ); - - if ( rt < 0 ) { - LOGW ( "AFE_SetYPbPrADCGainOffset, error(%s)!", strerror ( errno ) ); - } - - return rt; -} -int CTvin::AFE_GetYPbPrWSSinfo ( struct tvafe_comp_wss_s *wssinfo ) -{ - int rt = AFE_DeviceIOCtl ( TVIN_IOC_G_AFE_COMP_WSS, wssinfo ); - - if ( rt < 0 ) { - LOGW ( "AFE_GetYPbPrWSSinfo, error(%s)!", strerror ( errno ) ); - } - - return rt; -} - -#define RGB444 3 -#define YCBCR422 2 -#define YCBCR444 3 -#define Y422_POS 0 -#define CB422_POS 1 -#define CR422_POS 3 -#define Y444_POS 0 -#define CB444_POS 1 -#define CR444_POS 2 -#define R444_POS 0 -#define G444_POS 1 -#define B444_POS 2 - -//=========== VGA ===================== -#define VGA_BUF_WID (VGA_H_ACTIVE) - -#ifdef PATTERN_7_COLOR_BAR -#define VGA_BAR_WID (VGA_H_ACTIVE/7) -#define VGA_H_CUT_WID (10) -#else -#define VGA_BAR_WID (VGA_H_ACTIVE/8) -#define VGA_H_CUT_WID (10) -#endif - -#define VGA_V_CUT_WID (40) -#define VGA_V_CAL_WID (200+VGA_V_CUT_WID) - -#define VGA_WHITE_HS (VGA_BAR_WID*0+VGA_H_CUT_WID) -#define VGA_WHITE_HE (VGA_BAR_WID*1-VGA_H_CUT_WID-1) -#define VGA_WHITE_VS (VGA_V_CUT_WID) -#define VGA_WHITE_VE (VGA_V_CAL_WID-1) -#define VGA_WHITE_SIZE ((VGA_WHITE_HE-VGA_WHITE_HS+1)*(VGA_WHITE_VE-VGA_WHITE_VS+1)) -#ifdef PATTERN_7_COLOR_BAR -#define VGA_BLACK_HS (VGA_BAR_WID*6+VGA_H_CUT_WID) -#define VGA_BLACK_HE (VGA_BAR_WID*7-VGA_H_CUT_WID-1) -#define VGA_BLACK_VS (768-140) -#define VGA_BLACK_VE (768-40-1) -#define VGA_BLACK_SIZE ((VGA_BLACK_HE-VGA_BLACK_HS+1)*(VGA_BLACK_VE-VGA_BLACK_VS+1)) -#else -#define VGA_BLACK_HS (VGA_BAR_WID*7+VGA_H_CUT_WID) -#define VGA_BLACK_HE (VGA_BAR_WID*8-VGA_H_CUT_WID-1) -#define VGA_BLACK_VS (VGA_V_CUT_WID) -#define VGA_BLACK_VE (VGA_V_CAL_WID-1) -#define VGA_BLACK_SIZE ((VGA_BLACK_HE-VGA_BLACK_HS+1)*(VGA_BLACK_VE-VGA_BLACK_VS+1)) -#endif - -//=========== YPBPR ===================== -#define COMP_BUF_WID (COMP_H_ACTIVE) - -#define COMP_BAR_WID (COMP_H_ACTIVE/8) -#define COMP_H_CUT_WID (20) -#define COMP_V_CUT_WID (100) -#define COMP_V_CAL_WID (200+COMP_V_CUT_WID) - -#define COMP_WHITE_HS (COMP_BAR_WID*0+COMP_H_CUT_WID) -#define COMP_WHITE_HE (COMP_BAR_WID*1-COMP_H_CUT_WID-1) -#define COMP_WHITE_VS (COMP_V_CUT_WID) -#define COMP_WHITE_VE (COMP_V_CAL_WID-1) -#define COMP_WHITE_SIZE ((COMP_WHITE_HE-COMP_WHITE_HS+1)*(COMP_WHITE_VE-COMP_WHITE_VS+1)) -#define CB_WHITE_SIZE ((COMP_WHITE_HE-COMP_WHITE_HS+1)*(COMP_WHITE_VE-COMP_WHITE_VS+1)/2) -#define CR_WHITE_SIZE ((COMP_WHITE_HE-COMP_WHITE_HS+1)*(COMP_WHITE_VE-COMP_WHITE_VS+1)/2) - -#define COMP_YELLOW_HS (COMP_BAR_WID*1+COMP_H_CUT_WID) -#define COMP_YELLOW_HE (COMP_BAR_WID*2-COMP_H_CUT_WID-1) -#define COMP_YELLOW_VS (COMP_V_CUT_WID) -#define COMP_YELLOW_VE (COMP_V_CAL_WID-1) -#define COMP_YELLOW_SIZE ((COMP_YELLOW_HE-COMP_YELLOW_HS+1)*(COMP_YELLOW_VE-COMP_YELLOW_VS+1)/2) - -#define COMP_CYAN_HS (COMP_BAR_WID*2+COMP_H_CUT_WID) -#define COMP_CYAN_HE (COMP_BAR_WID*3-COMP_H_CUT_WID-1) -#define COMP_CYAN_VS (COMP_V_CUT_WID) -#define COMP_CYAN_VE (COMP_V_CAL_WID-1) -#define COMP_CYAN_SIZE ((COMP_CYAN_HE-COMP_CYAN_HS+1)*(COMP_CYAN_VE-COMP_CYAN_VS+1)/2) - -#define COMP_RED_HS (COMP_BAR_WID*5+COMP_H_CUT_WID) -#define COMP_RED_HE (COMP_BAR_WID*6-COMP_H_CUT_WID-1) -#define COMP_RED_VS (COMP_V_CUT_WID) -#define COMP_RED_VE (COMP_V_CAL_WID-1) -#define COMP_RED_SIZE ((COMP_RED_HE-COMP_RED_HS+1)*(COMP_RED_VE-COMP_RED_VS+1)/2) - -#define COMP_BLUE_HS (COMP_BAR_WID*6+COMP_H_CUT_WID) -#define COMP_BLUE_HE (COMP_BAR_WID*7-COMP_H_CUT_WID-1) -#define COMP_BLUE_VS (COMP_V_CUT_WID) -#define COMP_BLUE_VE (COMP_V_CAL_WID-1) -#define COMP_BLUE_SIZE ((COMP_BLUE_HE-COMP_BLUE_HS+1)*(COMP_BLUE_VE-COMP_BLUE_VS+1)/2) - -#define COMP_BLACK_HS (COMP_BAR_WID*7+COMP_H_CUT_WID) -#define COMP_BLACK_HE (COMP_BAR_WID*8-COMP_H_CUT_WID-1) -#define COMP_BLACK_VS (COMP_V_CUT_WID) -#define COMP_BLACK_VE (COMP_V_CAL_WID-1) -#define COMP_BLACK_SIZE ((COMP_BLACK_HE-COMP_BLACK_HS+1)*(COMP_BLACK_VE-COMP_BLACK_VS+1)) -#define CB_BLACK_SIZE ((COMP_BLACK_HE-COMP_BLACK_HS+1)*(COMP_BLACK_VE-COMP_BLACK_VS+1)/2) -#define CR_BLACK_SIZE ((COMP_BLACK_HE-COMP_BLACK_HS+1)*(COMP_BLACK_VE-COMP_BLACK_VS+1)/2) - -//=========== CVBS ===================== -#define CVBS_BUF_WID (CVBS_H_ACTIVE) -#define CVBS_BAR_WID (CVBS_H_ACTIVE/8) -#define CVBS_H_CUT_WID (20) - -#define CVBS_V_CUT_WID (40) -#define CVBS_V_CAL_WID (140+CVBS_V_CUT_WID) - -#define CVBS_WHITE_HS (CVBS_BAR_WID*0+CVBS_H_CUT_WID) -#define CVBS_WHITE_HE (CVBS_BAR_WID*1-CVBS_H_CUT_WID-1) -#define CVBS_WHITE_VS (CVBS_V_CUT_WID) -#define CVBS_WHITE_VE (CVBS_V_CAL_WID-1) -#define CVBS_WHITE_SIZE ((CVBS_WHITE_HE-CVBS_WHITE_HS+1)*(CVBS_WHITE_VE-CVBS_WHITE_VS+1)) - -#define CVBS_BLACK_HS (CVBS_BAR_WID*7+CVBS_H_CUT_WID) -#define CVBS_BLACK_HE (CVBS_BAR_WID*8-CVBS_H_CUT_WID-1) -#define CVBS_BLACK_VS (CVBS_V_CUT_WID) -#define CVBS_BLACK_VE (CVBS_V_CAL_WID-1) -#define CVBS_BLACK_SIZE ((CVBS_BLACK_HE-CVBS_BLACK_HS+1)*(CVBS_BLACK_VE-CVBS_BLACK_VS+1)) - -#define COMP_CAP_SIZE (COMP_H_ACTIVE*COMP_V_ACTIVE*YCBCR422) -#ifdef VGA_SOURCE_RGB444 -#define VGA_CAP_SIZE (VGA_H_ACTIVE*VGA_V_ACTIVE*RGB444) -#else -#define VGA_CAP_SIZE (VGA_H_ACTIVE*VGA_V_ACTIVE*YCBCR444) -#endif -#define CVBS_CAP_SIZE (CVBS_H_ACTIVE*CVBS_V_ACTIVE) - -#define PRE_0 -16 -#define PRE_1 -128 -#define PRE_2 -128 -#define COEF_00 1.164 -#define COEF_01 0 -#define COEF_02 1.793 -#define COEF_10 1.164 -#define COEF_11 -0.213 -#define COEF_12 -0.534 -#define COEF_20 1.164 -#define COEF_21 2.115 -#define COEF_22 0 -#define POST_0 0 -#define POST_1 0 -#define POST_2 0 - -unsigned int CTvin::data_limit ( float data ) -{ - if ( data < 0 ) { - return ( 0 ); - } else if ( data > 255 ) { - return ( 255 ); - } else { - return ( ( unsigned int ) data ); - } -} - -void CTvin::matrix_convert_yuv709_to_rgb ( unsigned int y, unsigned int u, unsigned int v, unsigned int *r, unsigned int *g, unsigned int *b ) -{ - *r = data_limit ( ( ( float ) y + PRE_0 ) * COEF_00 + ( ( float ) u + PRE_1 ) * COEF_01 + ( ( float ) v + PRE_2 ) * COEF_02 + POST_0 + 0.5 ); - *g = data_limit ( ( ( float ) y + PRE_0 ) * COEF_10 + ( ( float ) u + PRE_1 ) * COEF_11 + ( ( float ) v + PRE_2 ) * COEF_12 + POST_1 + 0.5 ); - *b = data_limit ( ( ( float ) y + PRE_0 ) * COEF_20 + ( ( float ) u + PRE_1 ) * COEF_21 + ( ( float ) v + PRE_2 ) * COEF_22 + POST_2 + 0.5 ); -} - -void CTvin::re_order ( unsigned int *a, unsigned int *b ) -{ - unsigned int c = 0; - - if ( *a > *b ) { - c = *a; - *a = *b; - *b = c; - } -} - -char *CTvin::get_cap_addr ( enum adc_cal_type_e calType ) -{ - int n; - char *dp; - - 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 ); - return NULL; - } else { - if ( gTvinAFESignalInfo.status == TVIN_SIG_STATUS_STABLE ) { - gTvinAFEParam.info.fmt = gTvinAFESignalInfo.fmt; - break; - } - } - } - - if ( gTvinAFESignalInfo.status != TVIN_SIG_STATUS_STABLE ) { - LOGD ( "get_cap_addr, signal isn't stable, out of calibration!\n" ); - return NULL; - } else { - if ( VDIN_DeviceIOCtl ( TVIN_IOC_STOP_DEC ) < 0 ) { - LOGW ( "get_cap_addr, stop vdin, error (%s).\n", strerror ( errno ) ); - return NULL; - } - - usleep ( 1000 ); - - if ( calType == CAL_YPBPR ) { - dp = ( char * ) mmap ( NULL, COMP_CAP_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, m_vdin_dev_fd, 0 ); - } else { - dp = ( char * ) mmap ( NULL, VGA_CAP_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, m_vdin_dev_fd, 0 ); - } - - if ( dp == NULL ) { - LOGE ( "get_cap_addr, mmap failed!\n" ); - } - - return dp; - } - - return NULL; -} - -inline unsigned char CTvin::get_mem_data ( char *dp, unsigned int addr ) -{ - return ( * ( dp + ( addr ^ 7 ) ) ); -} - -int CTvin::get_frame_average ( enum adc_cal_type_e calType, struct adc_cal_s *mem_data ) -{ - unsigned int y = 0, cb = 0, cr = 0; - unsigned int r = 0, g = 0, b = 0; - unsigned long n; - unsigned int i = 0, j = 0; - char *dp = get_cap_addr ( calType ); - - if ( calType == CAL_YPBPR ) { - for ( j = COMP_WHITE_VS; j <= COMP_WHITE_VE; j++ ) { - for ( i = COMP_WHITE_HS; i <= COMP_WHITE_HE; i++ ) { - mem_data->g_y_max += get_mem_data ( dp, ( ( COMP_BUF_WID * j + i ) * YCBCR422 ) ); - } - } - - mem_data->g_y_max /= COMP_WHITE_SIZE; - - for ( j = COMP_WHITE_VS; j <= COMP_WHITE_VE; j++ ) { - for ( i = COMP_WHITE_HS; i <= COMP_WHITE_HE; ) { - mem_data->cb_white += get_mem_data ( dp, ( ( COMP_BUF_WID * j + i ) * YCBCR422 + CB422_POS ) ); - mem_data->cr_white += get_mem_data ( dp, ( ( COMP_BUF_WID * j + i ) * YCBCR422 + CR422_POS ) ); - i = i + 2; - } - } - - mem_data->cb_white /= CB_WHITE_SIZE; - mem_data->cr_white /= CR_WHITE_SIZE; - - for ( j = COMP_RED_VS; j <= COMP_RED_VE; j++ ) { - for ( i = COMP_RED_HS; i <= COMP_RED_HE; ) { - mem_data->rcr_max += get_mem_data ( dp, ( ( COMP_BUF_WID * j + i ) * YCBCR422 + CR422_POS ) ); - i = i + 2; - } - } - - mem_data->rcr_max /= COMP_RED_SIZE; - - for ( j = COMP_BLUE_VS; j <= COMP_BLUE_VE; j++ ) { - for ( i = COMP_BLUE_HS; i <= COMP_BLUE_HE; ) { - mem_data->bcb_max += get_mem_data ( dp, ( ( COMP_BUF_WID * j + i ) * YCBCR422 + CB422_POS ) ); - i = i + 2; - } - } - - mem_data->bcb_max /= COMP_BLUE_SIZE; - - for ( j = COMP_BLACK_VS; j <= COMP_BLACK_VE; j++ ) { - for ( i = COMP_BLACK_HS; i <= COMP_BLACK_HE; i++ ) { - mem_data->g_y_min += get_mem_data ( dp, ( ( COMP_BUF_WID * j + i ) * YCBCR422 ) ); - } - } - - mem_data->g_y_min /= COMP_BLACK_SIZE; - - for ( j = COMP_BLACK_VS; j <= COMP_BLACK_VE; j++ ) { - for ( i = COMP_BLACK_HS; i <= COMP_BLACK_HE; ) { - mem_data->cb_black += get_mem_data ( dp, ( ( COMP_BUF_WID * j + i ) * YCBCR422 + CB422_POS ) ); - mem_data->cr_black += get_mem_data ( dp, ( ( COMP_BUF_WID * j + i ) * YCBCR422 + CR422_POS ) ); - i = i + 2; - } - } - - mem_data->cb_black /= CB_BLACK_SIZE; - mem_data->cr_black /= CR_BLACK_SIZE; - - /* - for (j=COMP_BLACK_VS; j<=COMP_BLACK_VE; j++) { - for (i=COMP_BLACK_HS; i<=COMP_BLACK_HE;) { - //mem_data->cb_black += get_mem_data(dp, ((COMP_BUF_WID*j+i)*YCBCR422+CB422_POS)); - mem_data->cr_black += get_mem_data(dp, ((COMP_BUF_WID*j+i)*YCBCR422+CR422_POS)); - i = i+2; - } - } - mem_data->cr_black /= CR_BLACK_SIZE; - */ - for ( j = COMP_CYAN_VS; j <= COMP_CYAN_VE; j++ ) { - for ( i = COMP_CYAN_HS; i <= COMP_CYAN_HE; ) { - mem_data->rcr_min += get_mem_data ( dp, ( ( COMP_BUF_WID * j + i ) * YCBCR422 + CR422_POS ) ); - i = i + 2; - } - } - - mem_data->rcr_min /= COMP_CYAN_SIZE; - - for ( j = COMP_YELLOW_VS; j <= COMP_YELLOW_VE; j++ ) { - for ( i = COMP_YELLOW_HS; i <= COMP_YELLOW_HE; ) { - mem_data->bcb_min += get_mem_data ( dp, ( COMP_BUF_WID * j + i ) * YCBCR422 + CB422_POS ); - i = i + 2; - } - } - - mem_data->bcb_min /= COMP_YELLOW_SIZE; - - } else if ( calType == CAL_VGA ) { - for ( j = VGA_WHITE_VS; j <= VGA_WHITE_VE; j++ ) { - for ( i = VGA_WHITE_HS; i <= VGA_WHITE_HE; i++ ) { -#ifdef VGA_SOURCE_RGB444 - r = get_mem_data ( dp, ( ( VGA_BUF_WID * j + i ) * RGB444 + R444_POS ) ); - g = get_mem_data ( dp, ( ( VGA_BUF_WID * j + i ) * RGB444 + G444_POS ) ); - b = get_mem_data ( dp, ( ( VGA_BUF_WID * j + i ) * RGB444 + B444_POS ) ); -#else - y = get_mem_data ( dp, ( ( VGA_BUF_WID * j + i ) * YCBCR444 + Y444_POS ) ); - cb = get_mem_data ( dp, ( ( VGA_BUF_WID * j + i ) * YCBCR444 + CB444_POS ) ); - cr = get_mem_data ( dp, ( ( VGA_BUF_WID * j + i ) * YCBCR444 + CR444_POS ) ); - matrix_convert_yuv709_to_rgb ( y, cb, cr, &r, &g, &b ); -#endif - mem_data->rcr_max = mem_data->rcr_max + r; - mem_data->g_y_max = mem_data->g_y_max + g; - mem_data->bcb_max = mem_data->bcb_max + b; - } - } - - mem_data->rcr_max = mem_data->rcr_max / VGA_WHITE_SIZE; - mem_data->g_y_max = mem_data->g_y_max / VGA_WHITE_SIZE; - mem_data->bcb_max = mem_data->bcb_max / VGA_WHITE_SIZE; - - for ( j = VGA_BLACK_VS; j <= VGA_BLACK_VE; j++ ) { - for ( i = VGA_BLACK_HS; i <= VGA_BLACK_HE; i++ ) { -#ifdef VGA_SOURCE_RGB444 - r = get_mem_data ( dp, ( ( VGA_BUF_WID * j + i ) * RGB444 + R444_POS ) ); - g = get_mem_data ( dp, ( ( VGA_BUF_WID * j + i ) * RGB444 + G444_POS ) ); - b = get_mem_data ( dp, ( ( VGA_BUF_WID * j + i ) * RGB444 + B444_POS ) ); -#else - y = get_mem_data ( dp, ( ( VGA_BUF_WID * j + i ) * YCBCR444 + Y444_POS ) ); - cb = get_mem_data ( dp, ( ( VGA_BUF_WID * j + i ) * YCBCR444 + CB444_POS ) ); - cr = get_mem_data ( dp, ( ( VGA_BUF_WID * j + i ) * YCBCR444 + CR444_POS ) ); - matrix_convert_yuv709_to_rgb ( y, cb, cr, &r, &g, &b ); -#endif - mem_data->rcr_min = mem_data->rcr_min + r; - mem_data->g_y_min = mem_data->g_y_min + g; - mem_data->bcb_min = mem_data->bcb_min + b; - } - } - - mem_data->rcr_min = mem_data->rcr_min / VGA_BLACK_SIZE; - mem_data->g_y_min = mem_data->g_y_min / VGA_BLACK_SIZE; - mem_data->bcb_min = mem_data->bcb_min / VGA_BLACK_SIZE; - - } else { //CVBS - for ( j = CVBS_WHITE_VS; j <= CVBS_WHITE_VE; j++ ) { - for ( i = CVBS_WHITE_HS; i <= CVBS_WHITE_HE; i++ ) { - mem_data->g_y_max += mem_data->g_y_max + get_mem_data ( dp, ( ( CVBS_BUF_WID * j + i ) * YCBCR422 ) ); - } - } - - mem_data->g_y_max /= COMP_WHITE_SIZE; - - for ( j = CVBS_BLACK_VS; j <= CVBS_BLACK_VE; j++ ) { - for ( i = CVBS_BLACK_HS; i <= CVBS_BLACK_HE; i++ ) { - mem_data->g_y_min += mem_data->g_y_min + get_mem_data ( dp, ( ( CVBS_BUF_WID * j + i ) * YCBCR422 ) ); - } - } - - mem_data->g_y_min /= CVBS_BLACK_SIZE; - } - - if ( calType == CAL_YPBPR ) { - munmap ( dp, COMP_CAP_SIZE ); - } else if ( calType == CAL_VGA ) { - munmap ( dp, VGA_CAP_SIZE ); - } else { - munmap ( dp, CVBS_CAP_SIZE ); - } - - 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 ); - return 0; - } - - return 0; -} - -#define ADC_CAL_FRAME_QTY_ORDER 2 //NOTE: MUST >=2!! -struct adc_cal_s CTvin::get_n_frame_average ( enum adc_cal_type_e calType ) -{ - struct adc_cal_s mem_data = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; - unsigned int rcrmax[1 << ADC_CAL_FRAME_QTY_ORDER]; - unsigned int rcrmin[1 << ADC_CAL_FRAME_QTY_ORDER]; - unsigned int g_ymax[1 << ADC_CAL_FRAME_QTY_ORDER]; - unsigned int g_ymin[1 << ADC_CAL_FRAME_QTY_ORDER]; - unsigned int bcbmax[1 << ADC_CAL_FRAME_QTY_ORDER]; - unsigned int bcbmin[1 << ADC_CAL_FRAME_QTY_ORDER]; - unsigned int cbwhite[1 << ADC_CAL_FRAME_QTY_ORDER]; - unsigned int crwhite[1 << ADC_CAL_FRAME_QTY_ORDER]; - unsigned int cbblack[1 << ADC_CAL_FRAME_QTY_ORDER]; - unsigned int crblack[1 << ADC_CAL_FRAME_QTY_ORDER]; - unsigned int i = 0, j = 0; - - for ( i = 0; i < ( 1 << ADC_CAL_FRAME_QTY_ORDER ); i++ ) { - get_frame_average ( calType, &mem_data ); - rcrmax[i] = mem_data.rcr_max; - rcrmin[i] = mem_data.rcr_min; - g_ymax[i] = mem_data.g_y_max; - g_ymin[i] = mem_data.g_y_min; - bcbmax[i] = mem_data.bcb_max; - bcbmin[i] = mem_data.bcb_min; - cbwhite[i] = mem_data.cb_white; - crwhite[i] = mem_data.cr_white; - cbblack[i] = mem_data.cb_black; - crblack[i] = mem_data.cr_black; - } - - for ( i = 0; i < ( 1 << ADC_CAL_FRAME_QTY_ORDER ) - 1; i++ ) { - for ( j = 1; j < ( 1 << ADC_CAL_FRAME_QTY_ORDER ); j++ ) { - re_order ( & ( rcrmax[i] ), & ( rcrmax[j] ) ); - re_order ( & ( rcrmin[i] ), & ( rcrmin[j] ) ); - re_order ( & ( g_ymax[i] ), & ( g_ymax[j] ) ); - re_order ( & ( g_ymin[i] ), & ( g_ymin[j] ) ); - re_order ( & ( bcbmax[i] ), & ( bcbmax[j] ) ); - re_order ( & ( bcbmin[i] ), & ( bcbmin[j] ) ); - re_order ( & ( cbwhite[i] ), & ( cbwhite[j] ) ); - re_order ( & ( crwhite[i] ), & ( crwhite[j] ) ); - re_order ( & ( cbblack[i] ), & ( cbblack[j] ) ); - re_order ( & ( crblack[i] ), & ( crblack[j] ) ); - } - } - - memset ( &mem_data, 0, sizeof ( mem_data ) ); - - for ( i = 0; i < ( 1 << ( ADC_CAL_FRAME_QTY_ORDER - 1 ) ); i++ ) { //(1<<(ADC_CAL_FRAME_QTY_ORDER-1)) - mem_data.rcr_max += rcrmax[i + ( 1 << ( ADC_CAL_FRAME_QTY_ORDER - 2 ) )]; - mem_data.rcr_min += rcrmin[i + ( 1 << ( ADC_CAL_FRAME_QTY_ORDER - 2 ) )]; - mem_data.g_y_max += g_ymax[i + ( 1 << ( ADC_CAL_FRAME_QTY_ORDER - 2 ) )]; - mem_data.g_y_min += g_ymin[i + ( 1 << ( ADC_CAL_FRAME_QTY_ORDER - 2 ) )]; - mem_data.bcb_max += bcbmax[i + ( 1 << ( ADC_CAL_FRAME_QTY_ORDER - 2 ) )]; - mem_data.bcb_min += bcbmin[i + ( 1 << ( ADC_CAL_FRAME_QTY_ORDER - 2 ) )]; - mem_data.cb_white += cbwhite[i + ( 1 << ( ADC_CAL_FRAME_QTY_ORDER - 2 ) )]; - mem_data.cr_white += crwhite[i + ( 1 << ( ADC_CAL_FRAME_QTY_ORDER - 2 ) )]; - mem_data.cb_black += cbblack[i + ( 1 << ( ADC_CAL_FRAME_QTY_ORDER - 2 ) )]; - mem_data.cr_black += crblack[i + ( 1 << ( ADC_CAL_FRAME_QTY_ORDER - 2 ) )]; - } - - - mem_data.rcr_max >>= ( ADC_CAL_FRAME_QTY_ORDER - 1 ); - mem_data.rcr_min >>= ( ADC_CAL_FRAME_QTY_ORDER - 1 ); - mem_data.g_y_max >>= ( ADC_CAL_FRAME_QTY_ORDER - 1 ); - mem_data.g_y_min >>= ( ADC_CAL_FRAME_QTY_ORDER - 1 ); - mem_data.bcb_max >>= ( ADC_CAL_FRAME_QTY_ORDER - 1 ); - mem_data.bcb_min >>= ( ADC_CAL_FRAME_QTY_ORDER - 1 ); - mem_data.cb_white >>= ( ADC_CAL_FRAME_QTY_ORDER - 1 ); - mem_data.cr_white >>= ( ADC_CAL_FRAME_QTY_ORDER - 1 ); - mem_data.cb_black >>= ( ADC_CAL_FRAME_QTY_ORDER - 1 ); - mem_data.cr_black >>= ( ADC_CAL_FRAME_QTY_ORDER - 1 ); - - return mem_data; -} - -int CTvin::AFE_GetMemData ( int typeSel, struct adc_cal_s *mem_data ) -{ - int rt = -1; - - if ( m_vdin_dev_fd < 0 || mem_data == NULL ) { - LOGW ( "AFE_GetMemData, didn't open vdin fd, return!\n" ); - return -1; - } - - memset ( &gTvinAFEParam, 0, sizeof ( gTvinAFEParam ) ); - 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 ); - return -1; - } - - gTvinAFEParam.flag = gTvinAFEParam.flag | TVIN_PARM_FLAG_CAP; - - if ( VDIN_DeviceIOCtl ( TVIN_IOC_S_PARM, &gTvinAFEParam ) < 0 ) { - LOGW ( "AFE_GetMemData, set vdin param error(%s)!\n", strerror ( errno ) ); - return -1; - } - - if ( typeSel == 0 ) { - get_frame_average ( CAL_YPBPR, mem_data ); - } else if ( typeSel == 1 ) { - get_frame_average ( CAL_VGA, mem_data ); - } else { - *mem_data = get_n_frame_average ( CAL_CVBS ); - } - - gTvinAFEParam.flag &= 0x11111110; - - if ( VDIN_DeviceIOCtl ( TVIN_IOC_S_PARM, &gTvinAFEParam ) < 0 ) { - LOGW ( "AFE_GetMemData, set vdin param error(%s)\n", strerror ( errno ) ); - return -1; - } - - LOGD ( "AFE_GetMemData, MAX ======> :\n Y(White)->%d \n Cb(Blue)->%d \n Cr(Red)->%d\n", mem_data->g_y_max, mem_data->bcb_max, mem_data->rcr_max ); - LOGD ( "AFE_GetMemData, MIN ======>:\n Y(Black)->%d \n Cb(Yellow)->%d \n Cr(Cyan)->%d\n Cb(White) ->%d\n Cb(Black)->%d\n Cr(Black)->%d\n", mem_data->g_y_min, mem_data->bcb_min, mem_data->rcr_min, - mem_data->cb_white, mem_data->cb_black, mem_data->cr_black ); - return 0; -} - -int CTvin::AFE_GetCVBSLockStatus ( enum tvafe_cvbs_video_e *cvbs_lock_status ) -{ - int rt = -1; - - rt = AFE_DeviceIOCtl ( TVIN_IOC_G_AFE_CVBS_LOCK, cvbs_lock_status ); - - if ( rt < 0 ) { - LOGD ( "AFE_GetCVBSLockStatus, error: return(%d), error(%s)!\n", rt, strerror ( errno ) ); - } else { - LOGD ( "AFE_GetCVBSLockStatus, value=%d.\n", *cvbs_lock_status ); - } - - return *cvbs_lock_status; -} - -int CTvin::AFE_SetCVBSStd ( tvin_sig_fmt_t fmt ) -{ - int rt = -1; - - LOGD ( "AFE_SetCVBSStd, sig_fmt = %d\n", fmt ); - rt = AFE_DeviceIOCtl ( TVIN_IOC_S_AFE_CVBS_STD, &fmt ); - - if ( rt < 0 ) { - LOGD ( "AFE_SetCVBSStd, error: return(%d), error(%s)!\n", rt, strerror ( errno ) ); - } - - return rt; -} - -int CTvin::TvinApi_SetStartDropFrameCn ( int count ) -{ - int ret = -1; - char set_str[4]; - - memset ( set_str, 0, 4 ); - sprintf ( set_str, "%d", count ); - return SetFileAttrValue ( "/sys/module/di/parameters/start_frame_drop_count", set_str ); -} - -int CTvin::TvinApi_SetVdinHVScale ( int vdinx, int hscale, int vscale ) -{ - int ret = -1; - char set_str[32]; - - memset ( set_str, 0, 32 ); - sprintf ( set_str, "%s %d %d", "hvscaler", hscale, vscale ); - - if ( vdinx == 0 ) { - ret = SetFileAttrValue ( "/sys/class/vdin/vdin0/attr", set_str ); - } else { - ret = SetFileAttrValue ( "/sys/class/vdin/vdin1/attr", set_str ); - } - - return ret; -} -int CTvin::TvinApi_SetCompPhase ( am_phase_t &am_phase ) -{ - int ret = -1, fd = -1; - unsigned int i = 0; - int idx = 0, len = 0; - char str1[200], str2[100]; - - LOGD ( "enter,TvinApi_SetCompPhase" ); - - fd = open ( "/sys/module/tvin_afe/parameters/comp_phase", O_RDWR ); - if ( fd < 0 ) { - LOGW ( "Open vdin_comp_phase_op_mutex error(%s)!!\n", strerror ( errno ) ); - return -1; - } - - for ( i = 0; i < am_phase.length; i++ ) { - sprintf ( &str1[idx], "%d,", am_phase.phase[i] ); - sprintf ( str2, "%d,", am_phase.phase[i] ); - int len = strlen ( str2 ); - idx = idx + len; - } - - LOGD ( "##########str1 = %s\n", str1 ); - - ret = write ( fd, str1, strlen ( str1 ) ); - if ( ret < 0 ) { - LOGD ( "Write vdin_comp_phase_op_mutex error(%s)!!\n", strerror ( errno ) ); - } - - LOGD ( "write ok!!!" ); - close ( fd ); - fd = -1; - - return ret; -} - -tvin_trans_fmt CTvin::TvinApi_Get3DDectMode() -{ - int fd; - int ret; - char det_3d[10]; - int det_3dmode = 8; - //LOGW("det_3dmode %d\n", det_3dmode); - - fd = open ( "/sys/module/di/parameters/det3d_mode", O_RDWR ); - if ( fd < 0 ) { - LOGW ( "/sys/module/di/parameters/det3d_mode error(%s)!!\n", strerror ( errno ) ); - - return TVIN_TFMT_3D_MAX; - } - - ret = read ( fd, det_3d, 10 ); - if ( ret < 0 ) { - LOGW ( "/sys/module/di/parameters/det3d_mode error(%s)!!\n", strerror ( errno ) ); - } - - det_3dmode = atoi ( det_3d ); - close ( fd ); - fd = -1; - - return (tvin_trans_fmt)det_3dmode; -} - -int CTvin::TvinApi_SetCompPhaseEnable ( int enable ) -{ - int ret = -1; - if ( enable == 1 ) { - ret = SetFileAttrValue ( "/sys/module/tvin_afe/parameters/enable_dphase", "Y" ); - LOGD ( "%s, enable TvinApi_SetCompPhase.", CFG_SECTION_TV ); - } - - return ret; -} - -int CTvin::VDIN_GetPortConnect ( int port ) -{ - int status = 0; - - if ( VDIN_DeviceIOCtl ( TVIN_IOC_CALLMASTER_SET, &port ) < 0 ) { - LOGW ( "TVIN_IOC_CALLMASTER_SET error(%s) port %d\n", strerror ( errno ), port ); - return 0; - } - - if ( VDIN_DeviceIOCtl ( TVIN_IOC_CALLMASTER_GET, &status ) < 0 ) { - LOGW ( "TVIN_IOC_CALLMASTER_GET error(%s)\n", strerror ( errno ) ); - return 0; - } - - //LOGD("%s, port:%x,status:%d", CFG_SECTION_TV,port,status); - return status; -} - -int CTvin::VDIN_OpenHDMIPinMuxOn ( bool flag ) -{ - FILE *fp = NULL; - - fp = fopen ( "/sys/class/hdmirx/hdmirx0/debug", "w" ); - if ( fp == NULL ) { - LOGW ( "Open /sys/class/hdmirx/hdmirx0/debug(%s)!\n", strerror ( errno ) ); - return -1; - } - - if ( flag ) { - fprintf ( fp, "%s", "pinmux_on" ); - } else { - fprintf ( fp, "%s", "pinmux_off" ); - - } - - fclose ( fp ); - fp = NULL; - return 1; -} - -int CTvin::VDIN_GetHdmiHdcpKeyKsvInfo(struct _hdcp_ksv *msg) -{ - int m_ksv_dev_fd = -1; - - if (msg == NULL) { - LOGE("%s, msg is NULL\n", __FUNCTION__); - } - - //PrintMessage(__FUNCTION__, 0, msg); - - m_ksv_dev_fd = open(HDMIRX_KSV_PATH, O_RDWR); - if (m_ksv_dev_fd < 0) { - LOGE("%s, Open file %s error: (%s)!\n", __FUNCTION__, HDMIRX_KSV_PATH, strerror ( errno )); - return -1; - } - LOGD("# call ioctl with HDMI_IOC_HDCP_SENT_KSV #"); - ioctl(m_ksv_dev_fd, HDMI_IOC_HDCP_KSV, msg); - - close(m_ksv_dev_fd); - m_ksv_dev_fd = -1; - - LOGD("msg->bksv0 is %x, msg->bksv1 is %x", msg->bksv0, msg->bksv1); - - return 0; -} - - -int CTvin::get_hdmi_ksv_info(int source_input, int data_buf[]) -{ - if (source_input != SOURCE_HDMI1 && source_input != SOURCE_HDMI2 && source_input != SOURCE_HDMI3) { - return -1; - } - - struct _hdcp_ksv msg; - int ret = -1; - ret = VDIN_GetHdmiHdcpKeyKsvInfo(&msg); - memset((void *)data_buf, 0, 2); - data_buf[0] = msg.bksv0; - data_buf[1] = msg.bksv1; - return ret; -} - - -int CTvin::TVAFE_EnablePlugInDetect ( bool flag ) -{ - FILE *fp = NULL; - int status = 1; - - fp = fopen ( "/sys/class/tvafe/tvafe0/debug", "w" ); - if ( fp == NULL ) { - LOGW ( "Open /sys/class/tvafe/tvafe0/debug (%s)!\n", strerror ( errno ) ); - return -1; - } - - if ( flag ) { - fprintf ( fp, "%s", "tvafe_enable" ); - } else { - fprintf ( fp, "%s", "tvafe_down" ); - - } - - fclose ( fp ); - fp = NULL; - return status; -} - -int CTvin::TvinApi_GetHDMIAudioStatus ( void ) -{ - int fd; - int val = 0; - char bcmd[16]; - fd = open ( "/sys/module/tvin_hdmirx/parameters/auds_rcv_sts", O_RDONLY ); - - if ( fd >= 0 ) { - read ( fd, bcmd, sizeof ( bcmd ) ); - val = strtol ( bcmd, NULL, 10 ); - close ( fd ); - } else { - LOGE ( "open /sys/module/tvin_hdmirx/parameters/auds_rcv_sts ERROR(%s)!!\n", strerror ( errno ) ); - return -1; - } - - return val; -} - -int CTvin::TvinApi_LoadPLLValues ( am_regs_t regs ) -{ - int rt = AFE_DeviceIOCtl ( TVIN_IOC_LOAD_REG, ®s ); - - if ( rt < 0 ) { - LOGE ( "TvinApi_LoadPLLValues, error(%s)!\n", strerror ( errno ) ); - } - - return rt; -} - -int CTvin::TvinApi_LoadCVD2Values ( am_regs_t regs ) -{ - int rt = AFE_DeviceIOCtl ( TVIN_IOC_LOAD_REG, ®s ); - - if ( rt < 0 ) { - LOGE ( "TvinApi_LoadCVD2Values, error(%s)!\n", strerror ( errno ) ); - } - - return rt; -} - -int CTvin::TvinApi_GetFbSize ( unsigned int *fb_width, unsigned int *fb_height ) -{ - int fbfd = 0; - struct fb_var_screeninfo vinfo; - struct fb_fix_screeninfo finfo; - int xres = 0, yres = 0, bits_per_pixel = 0; - - fbfd = open ( "/dev/graphics/fb0", O_RDWR ); - if ( !fbfd ) { - return -1; - } - - if ( ioctl ( fbfd, FBIOGET_FSCREENINFO, &finfo ) ) { - goto fail_close_fb; - } - - if ( ioctl ( fbfd, FBIOGET_VSCREENINFO, &vinfo ) ) { - goto fail_close_fb; - } - - *fb_width = vinfo.xres; - *fb_height = vinfo.yres; - return 1; - -fail_close_fb: - close ( fbfd );; - return -1; -} - -tv_source_input_type_t CTvin::Tvin_SourceInputToSourceInputType ( tv_source_input_t source_input ) -{ - if (source_input == SOURCE_TV) { - return SOURCE_TYPE_TV; - } else if (source_input == SOURCE_AV1 || source_input == SOURCE_AV2) { - return SOURCE_TYPE_AV; - } else if (source_input == SOURCE_YPBPR1 || source_input == SOURCE_YPBPR2) { - return SOURCE_TYPE_COMPONENT; - } else if (source_input == SOURCE_VGA) { - return SOURCE_TYPE_VGA; - } else if (source_input == SOURCE_HDMI1 || source_input == SOURCE_HDMI2 || source_input == SOURCE_HDMI3) { - return SOURCE_TYPE_HDMI; - } else if (source_input == SOURCE_DTV) { - return SOURCE_TYPE_DTV; - } else if (source_input == SOURCE_IPTV) { - return SOURCE_TYPE_IPTV; - } else if (source_input == SOURCE_MPEG) { - return SOURCE_TYPE_MPEG; - } - - return SOURCE_TYPE_MPEG; -} - -tv_source_input_type_t CTvin::Tvin_SourcePortToSourceInputType ( tvin_port_t source_port ) -{ - tv_source_input_t source_input = Tvin_PortToSourceInput(source_port); - return Tvin_SourceInputToSourceInputType(source_input); -} - -tvin_port_t CTvin::Tvin_GetSourcePortBySourceType ( tv_source_input_type_t source_type ) -{ - tvin_port_t source_port; - - switch ( source_type ) { - case SOURCE_TYPE_TV: - source_port = Tvin_GetSourcePortBySourceInput(SOURCE_TV); - break; - case SOURCE_TYPE_AV: - source_port = Tvin_GetSourcePortBySourceInput(SOURCE_AV1); - break; - case SOURCE_TYPE_COMPONENT: - source_port = Tvin_GetSourcePortBySourceInput(SOURCE_YPBPR1); - break; - case SOURCE_TYPE_VGA: - source_port = Tvin_GetSourcePortBySourceInput(SOURCE_VGA); - break; - case SOURCE_TYPE_HDMI: - source_port = TVIN_PORT_HDMI0; - break; - case SOURCE_TYPE_IPTV: - source_port = Tvin_GetSourcePortBySourceInput(SOURCE_IPTV); - break; - case SOURCE_TYPE_DTV: - source_port = Tvin_GetSourcePortBySourceInput(SOURCE_DTV); - break; - case SOURCE_TYPE_MPEG: - default: - source_port = Tvin_GetSourcePortBySourceInput(SOURCE_MPEG); - break; - } - - return source_port; -} - -tvin_port_t CTvin::Tvin_GetSourcePortBySourceInput ( tv_source_input_t source_input ) -{ - tvin_port_t source_port = TVIN_PORT_NULL; - - if ( source_input < SOURCE_TV || source_input >= SOURCE_MAX ) { - source_port = TVIN_PORT_NULL; - } else { - source_port = ( tvin_port_t ) mSourceInputToPortMap[ ( int ) source_input]; - } - - return source_port; -} - -tv_source_input_t CTvin::Tvin_PortToSourceInput ( tvin_port_t port ) -{ - int i; - - for ( i = SOURCE_TV; i < SOURCE_MAX; i++ ) { - if ( mSourceInputToPortMap[i] == (int)port ) { - break; - } - } - - if ( i == SOURCE_MAX ) { - return SOURCE_MAX; - } else { - return tv_source_input_t ( i ); - } -} - -unsigned int CTvin::Tvin_TransPortStringToValue(const char *port_str) -{ - if (strcasecmp(port_str, "TVIN_PORT_CVBS0") == 0) { - return TVIN_PORT_CVBS0; - } else if (strcasecmp(port_str, "TVIN_PORT_CVBS1") == 0) { - return TVIN_PORT_CVBS1; - } else if (strcasecmp(port_str, "TVIN_PORT_CVBS2") == 0) { - return TVIN_PORT_CVBS2; - } else if (strcasecmp(port_str, "TVIN_PORT_CVBS3") == 0) { - return TVIN_PORT_CVBS3; - } else if (strcasecmp(port_str, "TVIN_PORT_COMP0") == 0) { - return TVIN_PORT_COMP0; - } else if (strcasecmp(port_str, "TVIN_PORT_COMP1") == 0) { - return TVIN_PORT_COMP1; - } else if (strcasecmp(port_str, "TVIN_PORT_VGA0") == 0) { - return TVIN_PORT_VGA0; - } else if (strcasecmp(port_str, "TVIN_PORT_HDMI0") == 0) { - return TVIN_PORT_HDMI0; - } else if (strcasecmp(port_str, "TVIN_PORT_HDMI1") == 0) { - return TVIN_PORT_HDMI1; - } else if (strcasecmp(port_str, "TVIN_PORT_HDMI2") == 0) { - return TVIN_PORT_HDMI2; - } else if (strcasecmp(port_str, "TVIN_PORT_HDMI3") == 0) { - return TVIN_PORT_HDMI3; - } - - return TVIN_PORT_MPEG0; -} - -void CTvin::Tvin_LoadSourceInputToPortMap() -{ - const char *config_value = NULL; - - config_value = config_get_str(CFG_SECTION_SRC_INPUT, "ro.tv.tvinchannel.atv", "TVIN_PORT_CVBS3"); - mSourceInputToPortMap[SOURCE_TV] = Tvin_TransPortStringToValue(config_value); - - config_value = config_get_str(CFG_SECTION_SRC_INPUT, "ro.tv.tvinchannel.av1", "TVIN_PORT_CVBS1"); - mSourceInputToPortMap[SOURCE_AV1] = Tvin_TransPortStringToValue(config_value); - - config_value = config_get_str(CFG_SECTION_SRC_INPUT, "ro.tv.tvinchannel.av2", "TVIN_PORT_CVBS2"); - mSourceInputToPortMap[SOURCE_AV2] = Tvin_TransPortStringToValue(config_value); - - config_value = config_get_str(CFG_SECTION_SRC_INPUT, "ro.tv.tvinchannel.ypbpr1", "TVIN_PORT_COMP0"); - mSourceInputToPortMap[SOURCE_YPBPR1] = Tvin_TransPortStringToValue(config_value); - - config_value = config_get_str(CFG_SECTION_SRC_INPUT, "ro.tv.tvinchannel.ypbpr2", "TVIN_PORT_COMP1"); - mSourceInputToPortMap[SOURCE_YPBPR2] = Tvin_TransPortStringToValue(config_value); - - config_value = config_get_str(CFG_SECTION_SRC_INPUT, "ro.tv.tvinchannel.hdmi1", "TVIN_PORT_HDMI0"); - mSourceInputToPortMap[SOURCE_HDMI1] = Tvin_TransPortStringToValue(config_value); - - config_value = config_get_str(CFG_SECTION_SRC_INPUT, "ro.tv.tvinchannel.hdmi2", "TVIN_PORT_HDMI2"); - mSourceInputToPortMap[SOURCE_HDMI2] = Tvin_TransPortStringToValue(config_value); - - config_value = config_get_str(CFG_SECTION_SRC_INPUT, "ro.tv.tvinchannel.hdmi3", "TVIN_PORT_HDMI1"); - mSourceInputToPortMap[SOURCE_HDMI3] = Tvin_TransPortStringToValue(config_value); - - config_value = config_get_str(CFG_SECTION_SRC_INPUT, "ro.tv.tvinchannel.vga", "TVIN_PORT_VGA0"); - mSourceInputToPortMap[SOURCE_VGA] = Tvin_TransPortStringToValue(config_value); - - mSourceInputToPortMap[SOURCE_MPEG] = TVIN_PORT_MPEG0; - mSourceInputToPortMap[SOURCE_DTV] = TVIN_PORT_DTV; - mSourceInputToPortMap[SOURCE_IPTV] = TVIN_PORT_BT656; -} - -int CTvin::Tvin_GetSourcePortByCECPhysicalAddress(int physical_addr) -{ - if (physical_addr == 0x1000) { - return TVIN_PORT_HDMI0; - } else if (physical_addr == 0x2000) { - return TVIN_PORT_HDMI1; - } else if (physical_addr == 0x3000) { - return TVIN_PORT_HDMI2; - } - - return TVIN_PORT_MAX; -} - -tv_audio_channel_t CTvin::Tvin_GetInputSourceAudioChannelIndex ( tv_source_input_t source_input ) -{ - int aud_chan = TV_AUDIO_LINE_IN_0; - const char *config_value = NULL; - - if ( source_input == SOURCE_TV ) { - config_value = config_get_str(CFG_SECTION_TV, "tvin.aud.chan.atv", "2"); - } else if ( source_input == SOURCE_AV1 ) { - config_value = config_get_str(CFG_SECTION_TV, "tvin.aud.chan.av1", "1"); - } else if ( source_input == SOURCE_AV2 ) { - config_value = config_get_str(CFG_SECTION_TV, "tvin.aud.chan.av2", "3"); - } else if ( source_input == SOURCE_YPBPR1 ) { - config_value = config_get_str(CFG_SECTION_TV, "tvin.aud.chan.comp1", "0"); - } else if ( source_input == SOURCE_YPBPR2 ) { - config_value = config_get_str(CFG_SECTION_TV, "tvin.aud.chan.comp2", "0"); - } else if ( source_input == SOURCE_HDMI1 ) { - config_value = config_get_str(CFG_SECTION_TV, "tvin.aud.chan.hdmi1", "0"); - } else if ( source_input == SOURCE_HDMI2 ) { - config_value = config_get_str(CFG_SECTION_TV, "tvin.aud.chan.hdmi2", "0"); - } else if ( source_input == SOURCE_HDMI3 ) { - config_value = config_get_str(CFG_SECTION_TV, "tvin.aud.chan.hdmi3", "0"); - } else if ( source_input == SOURCE_VGA ) { - config_value = config_get_str(CFG_SECTION_TV, "tvin.aud.chan.vga", "0"); - } else if ( source_input == SOURCE_MPEG ) { - config_value = config_get_str(CFG_SECTION_TV, "tvin.aud.chan.mpeg", "0"); - } - - if (config_value != NULL) { - aud_chan = strtol (config_value, NULL, 10); - } - - return ( tv_audio_channel_t ) aud_chan; -} - -tv_audio_in_source_type_t CTvin::Tvin_GetAudioInSourceType ( tv_source_input_t source_input ) -{ - const char *config_value = NULL; - - if (source_input == SOURCE_TV) { - config_value = config_get_str(CFG_SECTION_TV, "tvin.aud.insource.atv", "TV_AUDIO_IN_SOURCE_TYPE_LINEIN"); - if (strcasecmp(config_value, "TV_AUDIO_IN_SOURCE_TYPE_ATV") == 0) { - return TV_AUDIO_IN_SOURCE_TYPE_ATV; - } - } else if (source_input == SOURCE_AV1 || source_input == SOURCE_AV2) { - return TV_AUDIO_IN_SOURCE_TYPE_LINEIN; - } else if (source_input == SOURCE_YPBPR1 || source_input == SOURCE_YPBPR2 || source_input == SOURCE_VGA) { - return TV_AUDIO_IN_SOURCE_TYPE_LINEIN; - } else if (source_input == SOURCE_HDMI1 || source_input == SOURCE_HDMI2 || source_input == SOURCE_HDMI3) { - return TV_AUDIO_IN_SOURCE_TYPE_HDMI; - } - - return TV_AUDIO_IN_SOURCE_TYPE_LINEIN; -} - -int CTvin::isVgaFmtInHdmi ( tvin_sig_fmt_t fmt ) -{ - if ( fmt == TVIN_SIG_FMT_HDMI_640X480P_60HZ - || fmt == TVIN_SIG_FMT_HDMI_800X600_00HZ - || fmt == TVIN_SIG_FMT_HDMI_1024X768_00HZ - || fmt == TVIN_SIG_FMT_HDMI_720X400_00HZ - || fmt == TVIN_SIG_FMT_HDMI_1280X768_00HZ - || fmt == TVIN_SIG_FMT_HDMI_1280X800_00HZ - || fmt == TVIN_SIG_FMT_HDMI_1280X960_00HZ - || fmt == TVIN_SIG_FMT_HDMI_1280X1024_00HZ - || fmt == TVIN_SIG_FMT_HDMI_1360X768_00HZ - || fmt == TVIN_SIG_FMT_HDMI_1366X768_00HZ - || fmt == TVIN_SIG_FMT_HDMI_1600X1200_00HZ - || fmt == TVIN_SIG_FMT_HDMI_1920X1200_00HZ ) { - LOGD ( "%s, HDMI source : VGA format.", CFG_SECTION_TV ); - return 1; - } - - return -1; -} - -int CTvin::isSDFmtInHdmi ( tvin_sig_fmt_t fmt ) -{ - if ( fmt == TVIN_SIG_FMT_HDMI_640X480P_60HZ - || fmt == TVIN_SIG_FMT_HDMI_720X480P_60HZ - || fmt == TVIN_SIG_FMT_HDMI_1440X480I_60HZ - || fmt == TVIN_SIG_FMT_HDMI_1440X240P_60HZ - || fmt == TVIN_SIG_FMT_HDMI_2880X480I_60HZ - || fmt == TVIN_SIG_FMT_HDMI_2880X240P_60HZ - || fmt == TVIN_SIG_FMT_HDMI_1440X480P_60HZ - || fmt == TVIN_SIG_FMT_HDMI_720X576P_50HZ - || fmt == TVIN_SIG_FMT_HDMI_1440X576I_50HZ - || fmt == TVIN_SIG_FMT_HDMI_1440X288P_50HZ - || fmt == TVIN_SIG_FMT_HDMI_2880X576I_50HZ - || fmt == TVIN_SIG_FMT_HDMI_2880X288P_50HZ - || fmt == TVIN_SIG_FMT_HDMI_1440X576P_50HZ - || fmt == TVIN_SIG_FMT_HDMI_2880X480P_60HZ - || fmt == TVIN_SIG_FMT_HDMI_2880X576P_60HZ - || fmt == TVIN_SIG_FMT_HDMI_720X576P_100HZ - || fmt == TVIN_SIG_FMT_HDMI_1440X576I_100HZ - || fmt == TVIN_SIG_FMT_HDMI_720X480P_120HZ - || fmt == TVIN_SIG_FMT_HDMI_1440X480I_120HZ - || fmt == TVIN_SIG_FMT_HDMI_720X576P_200HZ - || fmt == TVIN_SIG_FMT_HDMI_1440X576I_200HZ - || fmt == TVIN_SIG_FMT_HDMI_720X480P_240HZ - || fmt == TVIN_SIG_FMT_HDMI_1440X480I_240HZ - || fmt == TVIN_SIG_FMT_HDMI_800X600_00HZ - || fmt == TVIN_SIG_FMT_HDMI_720X400_00HZ ) { - LOGD ( "%s, SD format.", CFG_SECTION_TV ); - return true; - } else { - LOGD ( "%s, HD format.", CFG_SECTION_TV ); - return false; - } -} - -bool CTvin::Tvin_is50HzFrameRateFmt ( tvin_sig_fmt_t fmt ) -{ - /** component **/ - if ( fmt == TVIN_SIG_FMT_COMP_576P_50HZ_D000 - || fmt == TVIN_SIG_FMT_COMP_576I_50HZ_D000 - || fmt == TVIN_SIG_FMT_COMP_720P_50HZ_D000 - || fmt == TVIN_SIG_FMT_COMP_1080P_50HZ_D000 - || fmt == TVIN_SIG_FMT_COMP_1080I_50HZ_D000_A - || fmt == TVIN_SIG_FMT_COMP_1080I_50HZ_D000_B - || fmt == TVIN_SIG_FMT_COMP_1080I_50HZ_D000_C - || fmt == TVIN_SIG_FMT_COMP_1080P_24HZ_D000 - || fmt == TVIN_SIG_FMT_COMP_1080P_25HZ_D000 - /** hdmi **/ - || fmt == TVIN_SIG_FMT_HDMI_720X576P_50HZ - || fmt == TVIN_SIG_FMT_HDMI_1280X720P_50HZ - || fmt == TVIN_SIG_FMT_HDMI_1920X1080I_50HZ_A - || fmt == TVIN_SIG_FMT_HDMI_1440X576I_50HZ - || fmt == TVIN_SIG_FMT_HDMI_1440X288P_50HZ - || fmt == TVIN_SIG_FMT_HDMI_2880X576I_50HZ - || fmt == TVIN_SIG_FMT_HDMI_2880X288P_50HZ - || fmt == TVIN_SIG_FMT_HDMI_1440X576P_50HZ - || fmt == TVIN_SIG_FMT_HDMI_1920X1080P_50HZ - || fmt == TVIN_SIG_FMT_HDMI_1920X1080I_50HZ_B - || fmt == TVIN_SIG_FMT_HDMI_1280X720P_50HZ_FRAME_PACKING - || fmt == TVIN_SIG_FMT_HDMI_1920X1080I_50HZ_FRAME_PACKING - || fmt == TVIN_SIG_FMT_HDMI_720X576P_50HZ_FRAME_PACKING - /** cvbs **/ - || fmt == TVIN_SIG_FMT_CVBS_PAL_I - || fmt == TVIN_SIG_FMT_CVBS_PAL_M - || fmt == TVIN_SIG_FMT_CVBS_PAL_CN - || fmt == TVIN_SIG_FMT_CVBS_SECAM ) { - LOGD ( "%s, Frame rate == 50Hz.", CFG_SECTION_TV ); - return true; - } else { - LOGD ( "%s, Frame rate != 50Hz.", CFG_SECTION_TV ); - return false; - } -} - -bool CTvin::Tvin_IsDeinterlaceFmt ( tvin_sig_fmt_t fmt ) -{ - if ( fmt == TVIN_SIG_FMT_COMP_480I_59HZ_D940 - || fmt == TVIN_SIG_FMT_COMP_576I_50HZ_D000 - || fmt == TVIN_SIG_FMT_COMP_1080I_47HZ_D952 - || fmt == TVIN_SIG_FMT_COMP_1080I_48HZ_D000 - || fmt == TVIN_SIG_FMT_COMP_1080I_50HZ_D000_A - || fmt == TVIN_SIG_FMT_COMP_1080I_50HZ_D000_B - || fmt == TVIN_SIG_FMT_COMP_1080I_50HZ_D000_C - || fmt == TVIN_SIG_FMT_COMP_1080I_60HZ_D000 - || fmt == TVIN_SIG_FMT_HDMI_1440X480I_120HZ - || fmt == TVIN_SIG_FMT_HDMI_1440X480I_240HZ - || fmt == TVIN_SIG_FMT_HDMI_1440X480I_60HZ - || fmt == TVIN_SIG_FMT_HDMI_1440X576I_100HZ - || fmt == TVIN_SIG_FMT_HDMI_1440X576I_200HZ - || fmt == TVIN_SIG_FMT_HDMI_1440X576I_50HZ - || fmt == TVIN_SIG_FMT_HDMI_1920X1080I_100HZ - || fmt == TVIN_SIG_FMT_HDMI_1920X1080I_120HZ - || fmt == TVIN_SIG_FMT_HDMI_1920X1080I_50HZ_A - || fmt == TVIN_SIG_FMT_HDMI_1920X1080I_50HZ_B - || fmt == TVIN_SIG_FMT_HDMI_1920X1080I_50HZ_FRAME_PACKING - || fmt == TVIN_SIG_FMT_HDMI_1920X1080I_60HZ - || fmt == TVIN_SIG_FMT_HDMI_1920X1080I_60HZ_FRAME_PACKING - || fmt == TVIN_SIG_FMT_HDMI_2880X480I_60HZ - || fmt == TVIN_SIG_FMT_HDMI_2880X576I_50HZ - || fmt == TVIN_SIG_FMT_CVBS_NTSC_M - || fmt == TVIN_SIG_FMT_CVBS_NTSC_443 - || fmt == TVIN_SIG_FMT_CVBS_PAL_60 - || fmt == TVIN_SIG_FMT_CVBS_PAL_CN - || fmt == TVIN_SIG_FMT_CVBS_PAL_I - || fmt == TVIN_SIG_FMT_CVBS_PAL_M - || fmt == TVIN_SIG_FMT_CVBS_SECAM ) { - LOGD ( "%s, Interlace format.", CFG_SECTION_TV ); - return true; - } else { - LOGD ( "%s, Progressive format.", CFG_SECTION_TV ); - return false; - } -} - -int CTvin::Tvin_StartDecoder ( tvin_info_t &info ) -{ - if ( m_is_decoder_start == false ) { - m_tvin_param.info = info; - - if ( VDIN_StartDec ( &m_tvin_param ) >= 0 ) { - LOGD ( "StartDecoder succeed." ); - m_is_decoder_start = true; - } else { - LOGW ( "StartDecoder failed." ); - return -1; - } - } else { - return -2; - } - - return 0; -} - -int CTvin::SwitchPort (tvin_port_t source_port ) -{ - int ret = 0; - LOGD ("%s, source_port = %x", __FUNCTION__, source_port); - ret = Tvin_StopDecoder(); - if ( 0 == ret || 1 == ret ) { - if ( 1 == ret ) { //decode not started - //mVpp.Tvin_SetVideoScreenColorType ( TV_SIGNAL_BLUE_PATTERN ); - } - VDIN_ClosePort(); - } else { - LOGW ( "%s,stop decoder failed.", __FUNCTION__); - return -1; - } - // Open Port - if ( VDIN_OpenPort ( source_port ) < 0 ) { - LOGD ( "%s, OpenPort failed, source_port =%x ", __FUNCTION__, source_port ); - } - m_tvin_param.port = source_port; - return 0; -} - -int CTvin::Tvin_StopDecoder() -{ - if ( m_is_decoder_start == true ) { - if ( VDIN_StopDec() >= 0 ) { - LOGD ( "StopDecoder ok!" ); - m_is_decoder_start = false; - return 0; - } else { - LOGD ( "StopDecoder Failed!" ); - } - } else { - return 1; - } - - return -1; -} - -int CTvin::init_vdin ( void ) -{ - VDIN_OpenModule(); - return 0; -} - -int CTvin::uninit_vdin ( void ) -{ - VDIN_ClosePort(); - VDIN_CloseModule(); - return 0; -} - -int CTvin::Tvin_AddPath ( tvin_path_id_t pathid ) -{ - int ret = -1; - int i = 0, dly = 10; - tv_path_type_t pathtype; - - if ( pathid >= TV_PATH_VDIN_AMVIDEO && pathid < TV_PATH_DECODER_3D_AMVIDEO ) { - pathtype = TV_PATH_TYPE_TVIN; - } else { - pathtype = TV_PATH_TYPE_DEFAULT; - } - - if ( pathid >= TV_PATH_VDIN_AMVIDEO && pathid < TV_PATH_DECODER_3D_AMVIDEO ) { - if ( m_pathid == pathid ) { - LOGW ( "%s, no need to add the same tvin path.\n", CFG_SECTION_TV ); - return 0; - } - - for ( i = 0; i < 50; i++ ) { - ret = VDIN_RmTvPath(); - - if ( ret > 0 ) { - LOGD ( "%s, remove tvin path ok, %d ms gone.\n", CFG_SECTION_TV, ( dly * i ) ); - break; - } else { - LOGW ( "%s, remove tvin path faild, %d ms gone.\n", CFG_SECTION_TV, ( dly * i ) ); - usleep ( dly * 1000 ); - } - } - } else { - for ( i = 0; i < 50; i++ ) { - ret = VDIN_RmDefPath(); - - if ( ret > 0 ) { - LOGD ( "%s, remove default path ok, %d ms gone.\n", CFG_SECTION_TV, ( dly * i ) ); - break; - } else { - LOGW ( "%s, remove default path faild, %d ms gone.\n", CFG_SECTION_TV, ( dly * i ) ); - usleep ( dly * 1000 ); - } - } - } - - for ( i = 0; i < 50; i++ ) { - if ( pathid >= TV_PATH_VDIN_AMVIDEO && pathid < TV_PATH_DECODER_3D_AMVIDEO ) { - if ( strcmp ( config_tv_path, "null" ) == 0 ) { - ret = VDIN_AddVideoPath ( pathid ); - } else { - ret = VDIN_AddPath ( config_tv_path ); - } - } else { - if ( strcmp ( config_default_path, "null" ) == 0 ) { - ret = VDIN_AddVideoPath ( pathid ); - } else { - ret = VDIN_AddPath ( config_default_path ); - } - } - - if ( ret >= 0 ) { - LOGD ( "%s, add pathid[%d] ok, %d ms gone.\n", CFG_SECTION_TV, pathid, i ); - break; - } else { - LOGW ( "%s, add pathid[%d] faild, %d ms gone.\n", CFG_SECTION_TV, pathid, i ); - usleep ( dly * 1000 ); - } - } - - if ( pathid >= TV_PATH_VDIN_AMVIDEO && pathid < TV_PATH_MAX ) { - m_pathid = pathid; - } - - return ret; -} - - -int CTvin::Tvin_RemovePath ( tv_path_type_t pathtype ) -{ - int ret = -1; - int i = 0, dly = 10; - - for ( i = 0; i < 500; i++ ) { - ret = Tvin_CheckPathActive ( pathtype, 0 ); - - if ( ret == TV_PATH_STATUS_INACTIVE ) { - LOGD ( "%s, check path is inactive, %d ms gone.\n", CFG_SECTION_TV, ( dly * i ) ); - break; - } else if ( ret == TV_PATH_STATUS_INACTIVE || ret == TV_PATH_STATUS_ERROR ) { - usleep ( dly * 1000 ); - } else { - break; - } - } - - if ( i == 500 ) { - LOGE ( "%s, check path active faild, %d ms gone.\n", CFG_SECTION_TV, ( dly * i ) ); - } - - if ( pathtype == TV_PATH_TYPE_DEFAULT ) { - for ( i = 0; i < 50; i++ ) { - ret = VDIN_RmDefPath(); - - if ( ret > 0 ) { - LOGD ( "%s, remove default path ok, %d ms gone.\n", CFG_SECTION_TV, ( dly * i ) ); - break; - } else { - LOGW ( "%s, remove default path faild, %d ms gone.\n", CFG_SECTION_TV, ( dly * i ) ); - usleep ( dly * 1000 ); - } - } - } else if ( pathtype == TV_PATH_TYPE_TVIN ) { - for ( i = 0; i < 50; i++ ) { - ret = VDIN_RmTvPath(); - - if ( ret > 0 ) { - LOGD ( "%s, remove tvin path ok, %d ms gone.\n", CFG_SECTION_TV, ( dly * i ) ); - break; - } else { - LOGW ( "%s, remove tvin path faild, %d ms gone.\n", CFG_SECTION_TV, ( dly * i ) ); - usleep ( dly * 1000 ); - } - } - - m_pathid = TV_PATH_DECODER_3D_AMVIDEO; - } else if ( pathtype == TV_PATH_TYPE_TVIN_PREVIEW ) { - for ( i = 0; i < 50; i++ ) { - ret = VDIN_RmPreviewPath(); - - if ( ret > 0 ) { - LOGD ( "%s, remove preview path ok, %d ms gone.\n", CFG_SECTION_TV, ( dly * i ) ); - break; - } else { - LOGW ( "%s, remove preview path faild, %d ms gone.\n", CFG_SECTION_TV, ( dly * i ) ); - usleep ( dly * 1000 ); - } - } - - m_pathid = TV_PATH_DECODER_NEW3D_WITHOUTPPMGR_AMVIDEO; - } else { - ret = -1; - } - - return ret; -} - - -int CTvin::Tvin_CheckPathActive ( tv_path_type_t path_type, int isCheckD2D3 ) -{ - FILE *f; - char path[256]; - char decoder_str[20] = "default {"; - char tvin_str[20] = "tvpath {"; - char decoder_active_str[20] = "decoder(1)"; - char tvin_active_str[20] = "vdin0(1)"; - char di_active_str[20] = "deinterlace(1)"; - char d2d3_active_str[20] = "d2d3(1)"; - char decoder_inactive_str[20] = "decoder(0)"; - char tvin_inactive_str[20] = "vdin0(0)"; - char di_inactive_str[20] = "deinterlace(0)"; - char d2d3_inactive_str[20] = "d2d3(0)"; - - char *str_find = NULL; - char *active_str = NULL; - char *inactive_str = NULL; - int mount_freq; - int match; - int is_active = TV_PATH_STATUS_INACTIVE; - - memset ( path, 0, 255 ); - - f = fopen ( "/sys/class/vfm/map", "r" ); - if ( !f ) { - LOGE ( "%s, can not open /sys/class/vfm/map!\n", CFG_SECTION_TV ); - return TV_PATH_STATUS_NO_DEV; - } - - while ( fgets ( path, 254, f ) ) { - if ( path_type == TV_PATH_TYPE_DEFAULT ) { - str_find = strstr ( path, decoder_str ); - active_str = decoder_active_str; - inactive_str = decoder_inactive_str; - } else if ( path_type == TV_PATH_TYPE_TVIN || path_type == TV_PATH_TYPE_TVIN_PREVIEW ) { - str_find = strstr ( path, tvin_str ); - active_str = tvin_active_str; - inactive_str = tvin_inactive_str; - } else { - LOGW ( "%s, there is no %d path_type.\n", CFG_SECTION_TV, path_type ); - break; - } - - if ( str_find ) { - if ( isCheckD2D3 == 0 ) { - if ( strstr ( str_find, active_str ) && strstr ( str_find, di_active_str ) ) { - is_active = TV_PATH_STATUS_ACTIVE; - //LOGD("%s, %s is active.\n", CFG_SECTION_TV, path); - } else if ( strstr ( str_find, inactive_str ) - && ( strstr ( str_find, di_inactive_str ) || ( !strstr ( str_find, di_inactive_str ) ) ) - ) { - is_active = TV_PATH_STATUS_INACTIVE; - //LOGD("%s, %s is inactive.\n", CFG_SECTION_TV, path); - } else { - is_active = TV_PATH_STATUS_ERROR; - LOGE ( "%s, %s is error!\n", CFG_SECTION_TV, path ); - } - - break; - } else { - if ( strstr ( str_find, active_str ) && strstr ( str_find, di_active_str ) && strstr ( str_find, d2d3_active_str ) ) { - is_active = TV_PATH_STATUS_ACTIVE; - //LOGD("%s, %s is active.\n", CFG_SECTION_TV, path); - } else if ( strstr ( str_find, inactive_str ) - && ( strstr ( str_find, di_inactive_str ) || ( !strstr ( str_find, di_inactive_str ) ) ) - && ( strstr ( str_find, d2d3_inactive_str ) || ( !strstr ( str_find, d2d3_inactive_str ) ) ) - ) { - is_active = TV_PATH_STATUS_INACTIVE; - //LOGD("%s, %s is inactive.\n", CFG_SECTION_TV, path); - } else { - is_active = TV_PATH_STATUS_ERROR; - LOGE ( "%s, %s is error!\n", CFG_SECTION_TV, path ); - } - - break; - } - } - } - - fclose ( f ); - - return is_active; -} - - -int CTvin::Tv_init_afe ( void ) -{ - AFE_OpenModule(); - return 0; -} - -int CTvin::Tv_uninit_afe ( void ) -{ - AFE_CloseModule(); - return 0; -} - -int CTvin::get_hdmi_sampling_rate() -{ - int fd; - int val = 0; - char bcmd[16]; - fd = open ( "/sys/module/tvin_hdmirx/parameters/audio_sample_rate", O_RDONLY ); - if ( fd >= 0 ) { - read ( fd, bcmd, sizeof ( bcmd ) ); - val = strtol ( bcmd, NULL, 10 ); - close ( fd ); - } - - return val; -} - -//************************************************************************** -CTvin::CTvinSigDetect::CTvinSigDetect () -{ - mDetectState = STATE_STOPED; - mpObserver = NULL; - initSigState(); -} - -CTvin::CTvinSigDetect::~CTvinSigDetect() -{ -} - -int CTvin::CTvinSigDetect::startDetect(bool bPause) -{ - LOGD ( "startDetect()" ); - - if ( mDetectState == STATE_RUNNING || mDetectState == STATE_PAUSE ) { - return mDetectState; - } - - m_request_pause_detect = bPause; - initSigState(); - this->run(); - return mDetectState; -} - -int CTvin::CTvinSigDetect::initSigState() -{ - m_cur_sig_info.trans_fmt = TVIN_TFMT_2D; - m_cur_sig_info.fmt = TVIN_SIG_FMT_NULL; - m_cur_sig_info.status = TVIN_SIG_STATUS_NULL; - m_cur_sig_info.reserved = 0; - m_pre_sig_info = m_cur_sig_info; - mKeepNosigTime = 0; - m_is_nosig_checktimes_once_valid = false; - mResumeLaterTime = 0; - return 0; -} - -int CTvin::CTvinSigDetect::stopDetect() -{ - CMutex::Autolock _l ( mLock ); - LOGD ( "stopDetect()" ); - requestExit(); - return 0; -} - -int CTvin::CTvinSigDetect::pauseDetect() -{ - CMutex::Autolock _l ( mLock ); - LOGD ( "pauseDetect()" ); - m_request_pause_detect = true; - return 0; -} - -int CTvin::CTvinSigDetect::requestAndWaitPauseDetect() -{ - CMutex::Autolock _l ( mLock ); - LOGD ( "requestAndWaitPauseDetect()" ); - m_request_pause_detect = true; - - if ( mDetectState == STATE_RUNNING ) { - mRequestPauseCondition.wait ( mLock ); - } - - return 0; -} - -int CTvin::CTvinSigDetect::resumeDetect(int later)//ms -{ - CMutex::Autolock _l ( mLock ); - LOGD ( "resumeDetect()" ); - mResumeLaterTime = later; - m_request_pause_detect = false; - mDetectPauseCondition.signal(); - return 0; -} - -void CTvin::CTvinSigDetect::setVdinNoSigCheckKeepTimes(int times, bool isOnce) -{ - LOGD("setVdinNoSigCheckKeepTimes mKeepNosigTime = %d, times = %d", mKeepNosigTime, times); - mKeepNosigTime = times; - m_is_nosig_checktimes_once_valid = isOnce; -} - -int CTvin::CTvinSigDetect::Tv_TvinSigDetect ( int &sleeptime ) -{ - CTvin::getInstance()->VDIN_GetSignalInfo ( &m_cur_sig_info ); //get info - //set no sig check times - static long long sNosigKeepTime = 0; - //LOGD("stime=%d status=%d, fmt = %d sNosigKeepTime = %d, mKeepNosigTime = %d", sleeptime, m_cur_sig_info.status,m_cur_sig_info.fmt, sNosigKeepTime, mKeepNosigTime); - if ( m_cur_sig_info.status == TVIN_SIG_STATUS_NOSIG || m_cur_sig_info.status == TVIN_SIG_STATUS_NULL ) { - sNosigKeepTime += sleeptime; - if ( sNosigKeepTime > mKeepNosigTime ) { //real no sig - //cur is no sig - if ( m_is_nosig_checktimes_once_valid ) { //just once change,is nosig, and default it - m_is_nosig_checktimes_once_valid = false; - mKeepNosigTime = 0; - } - } else {//not - m_cur_sig_info.status = m_pre_sig_info.status; - } - } else { - sNosigKeepTime = 0; - if ( m_is_nosig_checktimes_once_valid ) { //just once change,not nosig,default is - m_is_nosig_checktimes_once_valid = false; - mKeepNosigTime = 0; - } - } - - //if state change - if ( m_cur_sig_info.status != m_pre_sig_info.status ) { - sleeptime = 20; - - if ( m_cur_sig_info.status == TVIN_SIG_STATUS_STABLE ) { // to stable - mpObserver->onSigToStable(); - } else if ( m_pre_sig_info.status == TVIN_SIG_STATUS_STABLE && m_cur_sig_info.status == TVIN_SIG_STATUS_UNSTABLE ) { //stable to unstable - //mVpp.Tvin_SetVideoScreenColorType ( TV_SIGNAL_BLACK_PATTERN ); - mpObserver->onSigStableToUnstable(); - } else if ( m_pre_sig_info.status == TVIN_SIG_STATUS_STABLE && m_cur_sig_info.status == TVIN_SIG_STATUS_NOTSUP ) { - mpObserver->onSigStableToUnSupport(); - } else if ( m_pre_sig_info.status == TVIN_SIG_STATUS_STABLE && m_cur_sig_info.status == TVIN_SIG_STATUS_NOSIG ) { - mpObserver->onSigStableToNoSig(); - } else if ( m_pre_sig_info.status == TVIN_SIG_STATUS_UNSTABLE && m_cur_sig_info.status == TVIN_SIG_STATUS_NOTSUP ) { - mpObserver->onSigUnStableToUnSupport(); - } else if ( m_pre_sig_info.status == TVIN_SIG_STATUS_UNSTABLE && m_cur_sig_info.status == TVIN_SIG_STATUS_NOSIG ) { - mpObserver->onSigUnStableToNoSig(); - } else if ( m_pre_sig_info.status == TVIN_SIG_STATUS_NULL && m_cur_sig_info.status == TVIN_SIG_STATUS_NOSIG ) { - mpObserver->onSigNullToNoSig(); - } else if ( m_pre_sig_info.status == TVIN_SIG_STATUS_NOSIG && m_cur_sig_info.status == TVIN_SIG_STATUS_UNSTABLE ) { - mpObserver->onSigNoSigToUnstable(); - } - } else { //state not change - sleeptime = 20; - - switch ( m_cur_sig_info.status ) { - case TVIN_SIG_STATUS_STABLE: - mpObserver->onSigStillStable(); - if ( m_cur_sig_info.trans_fmt != m_pre_sig_info.trans_fmt ) { - mpObserver->onStableTransFmtChange(); - } - if (m_cur_sig_info.fmt != m_pre_sig_info.fmt) { - mpObserver->onStableSigFmtChange(); - } - break; - - case TVIN_SIG_STATUS_NOTSUP: - mpObserver->onSigStillNoSupport(); - break; - - case TVIN_SIG_STATUS_UNSTABLE: - mpObserver->onSigStillUnstable(); - break; - - case TVIN_SIG_STATUS_NOSIG: - mpObserver->onSigStillNosig(); - break; - - case TVIN_SIG_STATUS_NULL: - default: - mpObserver->onSigStillNull(); - break; - } - } - - m_pre_sig_info = m_cur_sig_info;//backup info - return sleeptime; -} - -bool CTvin::CTvinSigDetect::threadLoop() -{ - //enter onStart() - if ( mpObserver == NULL ) { - return false; - } - - int sleeptime = 200;//ms - mDetectState = STATE_RUNNING; - mpObserver->onSigDetectEnter(); - - while ( !exitPending() ) { //requietexit() or requietexitWait() not call - while ( m_request_pause_detect ) { - mLock.lock(); - mRequestPauseCondition.broadcast(); - mDetectState = STATE_PAUSE; - mDetectPauseCondition.wait ( mLock ); //first unlock,when return,lock again,so need,call unlock - mDetectState = STATE_RUNNING; - mLock.unlock(); - // - while (!m_request_pause_detect && mResumeLaterTime > 0) { - //LOGD("mResumeLaterTime = %d", mResumeLaterTime); - usleep(10 * 1000); - mResumeLaterTime -= 10; - } - } - - mResumeLaterTime = 0; - mpObserver->onSigDetectLoop(); - Tv_TvinSigDetect ( sleeptime ); - //可以优化 - if ( !m_request_pause_detect ) { - usleep ( sleeptime * 1000 ); - } - } - - mDetectState = STATE_STOPED; - mRequestPauseCondition.broadcast(); - //exit - //return true, run again, return false,not run. - return false; -} - -v4l2_std_id CTvin::CvbsFtmToV4l2ColorStd(tvin_sig_fmt_t fmt) -{ - v4l2_std_id v4l2_std; - if (fmt == TVIN_SIG_FMT_CVBS_NTSC_M || fmt == TVIN_SIG_FMT_CVBS_NTSC_443) { - v4l2_std = V4L2_COLOR_STD_NTSC; - } else if (fmt >= TVIN_SIG_FMT_CVBS_PAL_I && fmt <= TVIN_SIG_FMT_CVBS_PAL_CN) { - v4l2_std = V4L2_COLOR_STD_PAL; - } else if (fmt == TVIN_SIG_FMT_CVBS_SECAM) { - v4l2_std = V4L2_COLOR_STD_SECAM; - } else { - v4l2_std = V4L2_COLOR_STD_PAL; - } - return v4l2_std; -} - -int CTvin::CvbsFtmToColorStdEnum(tvin_sig_fmt_t fmt) -{ - v4l2_std_id v4l2_std; - if (fmt == TVIN_SIG_FMT_CVBS_NTSC_M || fmt == TVIN_SIG_FMT_CVBS_NTSC_443) { - v4l2_std = CC_ATV_VIDEO_STD_NTSC; - } else if (fmt >= TVIN_SIG_FMT_CVBS_PAL_I && fmt <= TVIN_SIG_FMT_CVBS_PAL_CN) { - v4l2_std = CC_ATV_VIDEO_STD_PAL; - } else if (fmt == TVIN_SIG_FMT_CVBS_SECAM) { - v4l2_std = CC_ATV_VIDEO_STD_SECAM; - } else { - v4l2_std = CC_ATV_VIDEO_STD_PAL; - } - return v4l2_std; -} - -int CTvin::GetITContent() -{ - FILE *fp = NULL; - int value = 0; - fp = fopen("/sys/module/tvin_hdmirx/parameters/it_content", "r"); - if (fp == NULL) { - LOGE ( "Open /sys/module/tvin_hdmirx/parameters/it_content error(%s)!\n", strerror ( errno ) ); - return -1; - } - fscanf(fp, "%d", &value ); - fclose(fp); - fp = NULL; - return value; -} -//************************************************************************** diff --git a/tvapi/libtv/tvin/CTvin.h b/tvapi/libtv/tvin/CTvin.h deleted file mode 100644 index c48ecc1..0000000 --- a/tvapi/libtv/tvin/CTvin.h +++ b/dev/null @@ -1,1248 +0,0 @@ -/* - * TVIN Modules Exported Header File - * - * Author: Lin Xu <lin.xu@amlogic.com> - * Bobby Yang <bo.yang@amlogic.com> - * - * Copyright (C) 2010 Amlogic Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - - -#ifndef _CTVIN_H -#define _CTVIN_H - - -#include <pthread.h> -#include <cm.h> -#include <ve.h> -#include "../tvutils/CThread.h" -#include <hdmirx_cec.h> -#include "../tv/CFrontEnd.h" - -#define DEPTH_LEVEL_2DTO3D 33 -static const int DepthTable_2DTO3D[DEPTH_LEVEL_2DTO3D] = { - -64, // -16 - -60, // -15 - -56, // -14 - -52, // -13 - -49, // -12 - -46, // -11 - -43, // -10 - -40, // -09 - -37, // -08 - -34, // -07 - -31, // -06 - -28, // -05 - -25, // -04 - -22, // -03 - -19, // -02 - -16, // -01 - -13, // 0 - 3, // 1 - 6, // 2 - 9, // 3 - 12, // 4 - 15, // 5 - 18, // 6 - 21, // 7 - 24, // 8 - 28, // 9 - 32, // 10 - 36, // 11 - 40, // 12 - 44, // 13 - 48, // 14 - 52, // 15 - 56, // 16 -}; - -enum { - MEMP_VDIN_WITHOUT_3D = 0, - MEMP_VDIN_WITH_3D, - MEMP_DCDR_WITHOUT_3D, - MEMP_DCDR_WITH_3D, - MEMP_ATV_WITHOUT_3D, - MEMP_ATV_WITH_3D, -}; - -// *************************************************************************** -// *** TVIN general definition/enum/struct *********************************** -// *************************************************************************** -/* tvin input port select */ -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; - -const char *tvin_port_str(enum tvin_port_e port); - - -/* 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_RESERVE7 = 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_MAX = 0x44e, - 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; - -//tvin signal status -typedef enum tvin_sig_status_e { - TVIN_SIG_STATUS_NULL = 0, // processing status from init to the finding of the 1st confirmed status - TVIN_SIG_STATUS_NOSIG, // no signal - physically no signal - TVIN_SIG_STATUS_UNSTABLE, // unstable - physically bad signal - TVIN_SIG_STATUS_NOTSUP, // not supported - physically good signal & not supported - TVIN_SIG_STATUS_STABLE, // stable - physically good signal & supported -} tvin_sig_status_t; - -const char *tvin_sig_status_str(enum tvin_sig_status_e status); - -// tvin parameters -#define TVIN_PARM_FLAG_CAP 0x00000001 //tvin_parm_t.flag[ 0]: 1/enable or 0/disable frame capture function -#define TVIN_PARM_FLAG_CAL 0x00000002 //tvin_parm_t.flag[ 1]: 1/enable or 0/disable adc calibration -/*used for processing 3d in ppmgr set this flag to drop one field and send real height in vframe*/ -#define TVIN_PARM_FLAG_2D_TO_3D 0x00000004 //tvin_parm_t.flag[ 2]: 1/enable or 0/disable 2D->3D mode - -typedef enum tvin_trans_fmt { - TVIN_TFMT_2D = 0, - TVIN_TFMT_3D_LRH_OLOR, // 1 Primary: Side-by-Side(Half) Odd/Left picture, Odd/Right p - TVIN_TFMT_3D_LRH_OLER, // 2 Primary: Side-by-Side(Half) Odd/Left picture, Even/Right picture - TVIN_TFMT_3D_LRH_ELOR, // 3 Primary: Side-by-Side(Half) Even/Left picture, Odd/Right picture - TVIN_TFMT_3D_LRH_ELER, // 4 Primary: Side-by-Side(Half) Even/Left picture, Even/Right picture - TVIN_TFMT_3D_TB, // 5 Primary: Top-and-Bottom - TVIN_TFMT_3D_FP, // 6 Primary: Frame Packing - TVIN_TFMT_3D_FA, // 7 Secondary: Field Alternative - TVIN_TFMT_3D_LA, // 8 Secondary: Line Alternative - TVIN_TFMT_3D_LRF, // 9 Secondary: Side-by-Side(Full) - TVIN_TFMT_3D_LD, // 10 Secondary: L+depth - TVIN_TFMT_3D_LDGD, // 11 Secondary: L+depth+Graphics+Graphics-depth - /* normal 3D format */ - TVIN_TFMT_3D_DET_TB,// 12 - TVIN_TFMT_3D_DET_LR,// 13 - TVIN_TFMT_3D_DET_INTERLACE,// 14 - TVIN_TFMT_3D_DET_CHESSBOARD,// 15 - TVIN_TFMT_3D_MAX, -} tvin_trans_fmt_t; - -const char *tvin_trans_fmt_str(enum tvin_trans_fmt trans_fmt); - -typedef enum tvin_color_fmt_e { - TVIN_RGB444 = 0, - TVIN_YUV422, // 1 - TVIN_YUV444, // 2 - TVIN_YUYV422,// 3 - TVIN_YVYU422,// 4 - TVIN_UYVY422,// 5 - TVIN_VYUY422,// 6 - TVIN_NV12, // 7 - TVIN_NV21, // 8 - TVIN_BGGR, // 9 raw data - TVIN_RGGB, // 10 raw data - TVIN_GBRG, // 11 raw data - TVIN_GRBG, // 12 raw data - TVIN_COLOR_FMT_MAX, -} tvin_color_fmt_t; - -const char *tvin_color_fmt_str(enum tvin_color_fmt_e color_fmt); -typedef enum tvin_scan_mode_e { - TVIN_SCAN_MODE_NULL = 0, - TVIN_SCAN_MODE_PROGRESSIVE, - TVIN_SCAN_MODE_INTERLACED, -} tvin_scan_mode_t; - -typedef struct tvin_info_s { - enum tvin_trans_fmt trans_fmt; - enum tvin_sig_fmt_e fmt; - volatile enum tvin_sig_status_e status; - enum tvin_color_fmt_e cfmt; - unsigned int fps; - unsigned int reserved; -} tvin_info_t; - -typedef struct tvin_buf_info_s { - unsigned int vf_size; - unsigned int buf_count; - unsigned int buf_width; - unsigned int buf_height; - unsigned int buf_size; - unsigned int wr_list_size; -} tvin_buf_info_t; - -typedef struct tvin_video_buf_s { - unsigned int index; - unsigned int reserved; -} tvin_video_buf_t; - -// hs=he=vs=ve=0 is to disable Cut Window -typedef struct tvin_cutwin_s { - unsigned short hs; - unsigned short he; - unsigned short vs; - unsigned short ve; -} tvin_cutwin_t; - -typedef struct tvin_parm_s { - int index; // index of frontend for vdin - enum tvin_port_e port; // must set port in IOCTL - struct tvin_info_s info; - unsigned int hist_pow; - unsigned int luma_sum; - unsigned int pixel_sum; - unsigned short histgram[64]; - unsigned int flag; - unsigned short dest_width;//for vdin horizontal scale down - unsigned short dest_height;//for vdin vertical scale down - bool h_reverse;//for vdin horizontal reverse - bool v_reverse;//for vdin vertical reverse - unsigned int reserved; -} tvin_parm_t; - - - -// *************************************************************************** -// *** AFE module definition/enum/struct ************************************* -// *************************************************************************** - -typedef enum tvafe_cmd_status_e { - TVAFE_CMD_STATUS_IDLE = 0, // idle, be ready for TVIN_IOC_S_AFE_VGA_AUTO command - TVAFE_CMD_STATUS_PROCESSING, // TVIN_IOC_S_AFE_VGA_AUTO command is in process - TVAFE_CMD_STATUS_SUCCESSFUL, // TVIN_IOC_S_AFE_VGA_AUTO command is done with success - TVAFE_CMD_STATUS_FAILED, // TVIN_IOC_S_AFE_VGA_AUTO command is done with failure - TVAFE_CMD_STATUS_TERMINATED, // TVIN_IOC_S_AFE_VGA_AUTO command is terminated by others related -} tvafe_cmd_status_t; - -typedef struct tvafe_vga_edid_s { - unsigned char value[256]; //256 byte EDID -} tvafe_vga_edid_t; - -typedef struct tvafe_comp_wss_s { - unsigned int wss1[5]; - unsigned int wss2[5]; -} tvafe_comp_wss_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; - -#define TVAFE_ADC_CAL_VALID 0x00000001 -typedef struct tvafe_adc_cal_s { - // ADC A - unsigned short a_analog_clamp; // 0x00~0x7f - unsigned short a_analog_gain; // 0x00~0xff, means 0dB~6dB - unsigned short a_digital_offset1; // offset for fine-tuning - // s11.0: signed value, 11 integer bits, 0 fraction bits - unsigned short a_digital_gain; // 0~3.999 - // u2.10: unsigned value, 2 integer bits, 10 fraction bits - unsigned short a_digital_offset2; // offset for format - // s11.0: signed value, 11 integer bits, 0 fraction bits - // ADC B - unsigned short b_analog_clamp; // ditto to ADC A - unsigned short b_analog_gain; - unsigned short b_digital_offset1; - unsigned short b_digital_gain; - unsigned short b_digital_offset2; - // ADC C - unsigned short c_analog_clamp; // ditto to ADC A - unsigned short c_analog_gain; - unsigned short c_digital_offset1; - unsigned short c_digital_gain; - unsigned short c_digital_offset2; - // ADC D - unsigned short d_analog_clamp; // ditto to ADC A - unsigned short d_analog_gain; - unsigned short d_digital_offset1; - unsigned short d_digital_gain; - unsigned short d_digital_offset2; - unsigned int reserved; // bit[ 0]: TVAFE_ADC_CAL_VALID -} tvafe_adc_cal_t; - -typedef struct tvafe_adc_cal_clamp_s { - short a_analog_clamp_diff; - short b_analog_clamp_diff; - short c_analog_clamp_diff; -} tvafe_adc_cal_clamp_t; - -typedef struct tvafe_adc_comp_cal_s { - struct tvafe_adc_cal_s comp_cal_val[3]; -} tvafe_adc_comp_cal_t; - -typedef enum tvafe_cvbs_video_e { - TVAFE_CVBS_VIDEO_HV_UNLOCKED = 0, - TVAFE_CVBS_VIDEO_H_LOCKED, - TVAFE_CVBS_VIDEO_V_LOCKED, - TVAFE_CVBS_VIDEO_HV_LOCKED, -} tvafe_cvbs_video_t; - -// for pin selection -typedef enum tvafe_adc_pin_e { - TVAFE_ADC_PIN_NULL = 0, -#if (MESON_CPU_TYPE == MESON_CPU_TYPE_MESONG9TV) - TVAFE_CVBS_IN0 = 1, - TVAFE_CVBS_IN1 = 2, - TVAFE_CVBS_IN2 = 3, - TVAFE_CVBS_IN3 = 4,//as atvdemod to tvafe -#else - TVAFE_ADC_PIN_A_PGA_0 = 1, - TVAFE_ADC_PIN_A_PGA_1 = 2, - TVAFE_ADC_PIN_A_PGA_2 = 3, - TVAFE_ADC_PIN_A_PGA_3 = 4, - TVAFE_ADC_PIN_A_PGA_4 = 5, - TVAFE_ADC_PIN_A_PGA_5 = 6, - TVAFE_ADC_PIN_A_PGA_6 = 7, - TVAFE_ADC_PIN_A_PGA_7 = 8, - TVAFE_ADC_PIN_A_0 = 9, - TVAFE_ADC_PIN_A_1 = 10, - TVAFE_ADC_PIN_A_2 = 11, - TVAFE_ADC_PIN_A_3 = 12, - TVAFE_ADC_PIN_A_4 = 13, - TVAFE_ADC_PIN_A_5 = 14, - TVAFE_ADC_PIN_A_6 = 15, - TVAFE_ADC_PIN_A_7 = 16, - TVAFE_ADC_PIN_B_0 = 17, - TVAFE_ADC_PIN_B_1 = 18, - TVAFE_ADC_PIN_B_2 = 19, - TVAFE_ADC_PIN_B_3 = 20, - TVAFE_ADC_PIN_B_4 = 21, - TVAFE_ADC_PIN_B_5 = 22, - TVAFE_ADC_PIN_B_6 = 23, - TVAFE_ADC_PIN_B_7 = 24, - TVAFE_ADC_PIN_C_0 = 25, - TVAFE_ADC_PIN_C_1 = 26, - TVAFE_ADC_PIN_C_2 = 27, - TVAFE_ADC_PIN_C_3 = 28, - TVAFE_ADC_PIN_C_4 = 29, - TVAFE_ADC_PIN_C_5 = 30, - TVAFE_ADC_PIN_C_6 = 31, - TVAFE_ADC_PIN_C_7 = 32, - TVAFE_ADC_PIN_D_0 = 33, - TVAFE_ADC_PIN_D_1 = 34, - TVAFE_ADC_PIN_D_2 = 35, - TVAFE_ADC_PIN_D_3 = 36, - TVAFE_ADC_PIN_D_4 = 37, - TVAFE_ADC_PIN_D_5 = 38, - TVAFE_ADC_PIN_D_6 = 39, - TVAFE_ADC_PIN_D_7 = 40, - TVAFE_ADC_PIN_SOG_0 = 41, - TVAFE_ADC_PIN_SOG_1 = 42, - TVAFE_ADC_PIN_SOG_2 = 43, - TVAFE_ADC_PIN_SOG_3 = 44, - TVAFE_ADC_PIN_SOG_4 = 45, - TVAFE_ADC_PIN_SOG_5 = 46, - TVAFE_ADC_PIN_SOG_6 = 47, - TVAFE_ADC_PIN_SOG_7 = 48, -#endif - TVAFE_ADC_PIN_MAX, -} tvafe_adc_pin_t; - -typedef enum tvafe_src_sig_e { -#if (MESON_CPU_TYPE == MESON_CPU_TYPE_MESONG9TV) - CVBS_IN0 = 0, - CVBS_IN1, - CVBS_IN2, - CVBS_IN3, -#else - CVBS0_Y = 0, - CVBS0_SOG, - CVBS1_Y, - CVBS1_SOG, - CVBS2_Y, - CVBS2_SOG, - CVBS3_Y, - CVBS3_SOG, - CVBS4_Y, - CVBS4_SOG, - CVBS5_Y, - CVBS5_SOG, - CVBS6_Y, - CVBS6_SOG, - CVBS7_Y, - CVBS7_SOG, - S_VIDEO0_Y, - S_VIDEO0_C, - S_VIDEO0_SOG, - S_VIDEO1_Y, - S_VIDEO1_C, - S_VIDEO1_SOG, - S_VIDEO2_Y, - S_VIDEO2_C, - S_VIDEO2_SOG, - S_VIDEO3_Y, - S_VIDEO3_C, - S_VIDEO3_SOG, - S_VIDEO4_Y, - S_VIDEO4_C, - S_VIDEO4_SOG, - S_VIDEO5_Y, - S_VIDEO5_C, - S_VIDEO5_SOG, - S_VIDEO6_Y, - S_VIDEO6_C, - S_VIDEO6_SOG, - S_VIDEO7_Y, - S_VIDEO7_C, - S_VIDEO7_SOG, - VGA0_G, - VGA0_B, - VGA0_R, - VGA0_SOG, - VGA1_G, - VGA1_B, - VGA1_R, - VGA1_SOG, - VGA2_G, - VGA2_B, - VGA2_R, - VGA2_SOG, - VGA3_G, - VGA3_B, - VGA3_R, - VGA3_SOG, - VGA4_G, - VGA4_B, - VGA4_R, - VGA4_SOG, - VGA5_G, - VGA5_B, - VGA5_R, - VGA5_SOG, - VGA6_G, - VGA6_B, - VGA6_R, - VGA6_SOG, - VGA7_G, - VGA7_B, - VGA7_R, - VGA7_SOG, - COMP0_Y, - COMP0_PB, - COMP0_PR, - COMP0_SOG, - COMP1_Y, - COMP1_PB, - COMP1_PR, - COMP1_SOG, - COMP2_Y, - COMP2_PB, - COMP2_PR, - COMP2_SOG, - COMP3_Y, - COMP3_PB, - COMP3_PR, - COMP3_SOG, - COMP4_Y, - COMP4_PB, - COMP4_PR, - COMP4_SOG, - COMP5_Y, - COMP5_PB, - COMP5_PR, - COMP5_SOG, - COMP6_Y, - COMP6_PB, - COMP6_PR, - COMP6_SOG, - COMP7_Y, - COMP7_PB, - COMP7_PR, - COMP7_SOG, - SCART0_G, - SCART0_B, - SCART0_R, - SCART0_CVBS, - SCART1_G, - SCART1_B, - SCART1_R, - SCART1_CVBS, - SCART2_G, - SCART2_B, - SCART2_R, - SCART2_CVBS, - SCART3_G, - SCART3_B, - SCART3_R, - SCART3_CVBS, - SCART4_G, - SCART4_B, - SCART4_R, - SCART4_CVBS, - SCART5_G, - SCART5_B, - SCART5_R, - SCART5_CVBS, - SCART6_G, - SCART6_B, - SCART6_R, - SCART6_CVBS, - SCART7_G, - SCART7_B, - SCART7_R, - SCART7_CVBS, -#endif - TVAFE_SRC_SIG_MAX_NUM, -} tvafe_src_sig_t; - -typedef struct tvafe_pin_mux_s { - enum tvafe_adc_pin_e pin[TVAFE_SRC_SIG_MAX_NUM]; -} tvafe_pin_mux_t; - - -// *************************************************************************** -// *** IOCTL command definition ********************************************** -// *************************************************************************** - -#define TVIN_IOC_MAGIC 'T' - -//GENERAL -#define TVIN_IOC_OPEN _IOW(TVIN_IOC_MAGIC, 0x01, struct tvin_parm_s) -#define TVIN_IOC_START_DEC _IOW(TVIN_IOC_MAGIC, 0x02, struct tvin_parm_s) -#define TVIN_IOC_STOP_DEC _IO( TVIN_IOC_MAGIC, 0x03) -#define TVIN_IOC_CLOSE _IO( TVIN_IOC_MAGIC, 0x04) -#define TVIN_IOC_G_PARM _IOR(TVIN_IOC_MAGIC, 0x05, struct tvin_parm_s) -#define TVIN_IOC_S_PARM _IOW(TVIN_IOC_MAGIC, 0x06, struct tvin_parm_s) -#define TVIN_IOC_G_SIG_INFO _IOR(TVIN_IOC_MAGIC, 0x07, struct tvin_info_s) -#define TVIN_IOC_G_BUF_INFO _IOR(TVIN_IOC_MAGIC, 0x08, struct tvin_buf_info_s) -#define TVIN_IOC_START_GET_BUF _IO( TVIN_IOC_MAGIC, 0x09) -#define TVIN_IOC_GET_BUF _IOR(TVIN_IOC_MAGIC, 0x10, struct tvin_video_buf_s) -#define TVIN_IOC_PAUSE_DEC _IO(TVIN_IOC_MAGIC, 0x41) -#define TVIN_IOC_RESUME_DEC _IO(TVIN_IOC_MAGIC, 0x42) -#define TVIN_IOC_VF_REG _IO(TVIN_IOC_MAGIC, 0x43) -#define TVIN_IOC_VF_UNREG _IO(TVIN_IOC_MAGIC, 0x44) -#define TVIN_IOC_FREEZE_VF _IO(TVIN_IOC_MAGIC, 0x45) -#define TVIN_IOC_UNFREEZE_VF _IO(TVIN_IOC_MAGIC, 0x46) - -//HDMI -#define HDMI_IOC_HDCP_KSV _IOR(HDMI_IOC_MAGIC, 0x09, struct _hdcp_ksv) - - - -//TVAFE -#define TVIN_IOC_S_AFE_ADC_CAL _IOW(TVIN_IOC_MAGIC, 0x11, struct tvafe_adc_cal_s) -#define TVIN_IOC_G_AFE_ADC_CAL _IOR(TVIN_IOC_MAGIC, 0x12, struct tvafe_adc_cal_s) -#define TVIN_IOC_G_AFE_COMP_WSS _IOR(TVIN_IOC_MAGIC, 0x13, struct tvafe_comp_wss_s) -#define TVIN_IOC_S_AFE_VGA_EDID _IOW(TVIN_IOC_MAGIC, 0x14, struct tvafe_vga_edid_s) -#define TVIN_IOC_G_AFE_VGA_EDID _IOR(TVIN_IOC_MAGIC, 0x15, struct tvafe_vga_edid_s) -#define TVIN_IOC_S_AFE_VGA_PARM _IOW(TVIN_IOC_MAGIC, 0x16, struct tvafe_vga_parm_s) -#define TVIN_IOC_G_AFE_VGA_PARM _IOR(TVIN_IOC_MAGIC, 0x17, struct tvafe_vga_parm_s) -#define TVIN_IOC_S_AFE_VGA_AUTO _IO( TVIN_IOC_MAGIC, 0x18) -#define TVIN_IOC_G_AFE_CMD_STATUS _IOR(TVIN_IOC_MAGIC, 0x19, enum tvafe_cmd_status_e) -#define TVIN_IOC_G_AFE_CVBS_LOCK _IOR(TVIN_IOC_MAGIC, 0x1a, enum tvafe_cvbs_video_e) -#define TVIN_IOC_S_AFE_CVBS_STD _IOW(TVIN_IOC_MAGIC, 0x1b, enum tvin_sig_fmt_e) -#define TVIN_IOC_CALLMASTER_SET _IOW(TVIN_IOC_MAGIC, 0x1c, enum tvin_port_e) -#define TVIN_IOC_CALLMASTER_GET _IO( TVIN_IOC_MAGIC, 0x1d) -#define TVIN_IOC_S_AFE_ADC_COMP_CAL _IOW(TVIN_IOC_MAGIC, 0x1e, struct tvafe_adc_comp_cal_s) -#define TVIN_IOC_G_AFE_ADC_COMP_CAL _IOR(TVIN_IOC_MAGIC, 0x1f, struct tvafe_adc_comp_cal_s) -#define TVIN_IOC_LOAD_REG _IOW(TVIN_IOC_MAGIC, 0x20, struct am_regs_s) -#define TVIN_IOC_S_AFE_ADC_DIFF _IOW(TVIN_IOC_MAGIC, 0x21, struct tvafe_adc_cal_clamp_s) - -// *************************************************************************** -// *** add more ********************************************** -// *************************************************************************** - -typedef enum tvin_path_id_e { - TV_PATH_VDIN_AMVIDEO, - TV_PATH_VDIN_DEINTERLACE_AMVIDEO, - TV_PATH_VDIN_3D_AMVIDEO, - TV_PATH_VDIN_NEW3D_AMVIDEO, - TV_PATH_VDIN_NEW3D_WITHOUTPPMGR_AMVIDEO, - TV_PATH_VDIN_FREESCALE_AMVIDEO, - TV_PATH_DECODER_3D_AMVIDEO, - TV_PATH_DECODER_AMVIDEO, - TV_PATH_DECODER_NEW3D_AMVIDEO, - TV_PATH_DECODER_NEW3D_WITHOUTPPMGR_AMVIDEO, - TV_PATH_MAX, -} tvin_path_id_t; - -#define CAMERA_IOC_MAGIC 'C' -#define CAMERA_IOC_START _IOW(CAMERA_IOC_MAGIC, 0x01, struct camera_info_s) -#define CAMERA_IOC_STOP _IO(CAMERA_IOC_MAGIC, 0x02) -#define CAMERA_IOC_SET_PARA _IOW(CAMERA_IOC_MAGIC, 0x03, struct camera_info_s) -#define CAMERA_IOC_GET_PARA _IOR(CAMERA_IOC_MAGIC, 0x04, struct camera_info_s) - - -#define CC_HIST_GRAM_BUF_SIZE (64) -/*******************************extend define*******************************/ - -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_VGA, - SOURCE_MPEG, - SOURCE_DTV, - SOURCE_SVIDEO, - SOURCE_IPTV, - SOURCE_DUMMY, - SOURCE_MAX, -} tv_source_input_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_MAX, -} tv_source_input_type_t; - -typedef enum adc_cal_type_e { - CAL_YPBPR = 0, - CAL_VGA, - CAL_CVBS, -} adc_cal_type_t; - -typedef enum signal_range_e { - RANGE100 = 0, - RANGE75, -} signal_range_t; - -typedef struct adc_cal_s { - unsigned int rcr_max; - unsigned int rcr_min; - unsigned int g_y_max; - unsigned int g_y_min; - unsigned int bcb_max; - unsigned int bcb_min; - unsigned int cr_white; - unsigned int cb_white; - unsigned int cr_black; - unsigned int cb_black; -} adc_cal_t; - -typedef struct tvin_window_pos_s { - int x1; - int y1; - int x2; - int y2; -} tvin_window_pos_t; - - -typedef enum tv_path_type_e { - TV_PATH_TYPE_DEFAULT, - TV_PATH_TYPE_TVIN, - TV_PATH_TYPE_TVIN_PREVIEW, - TV_PATH_TYPE_MAX, -} tv_path_type_t; - -typedef enum tv_path_status_e { - TV_PATH_STATUS_NO_DEV = -2, - TV_PATH_STATUS_ERROR = -1, - TV_PATH_STATUS_INACTIVE = 0, - TV_PATH_STATUS_ACTIVE = 1, - TV_PATH_STATUS_MAX, -} tv_path_status_t; - -typedef enum tv_audio_channel_e { - TV_AUDIO_LINE_IN_0, - TV_AUDIO_LINE_IN_1, - TV_AUDIO_LINE_IN_2, - TV_AUDIO_LINE_IN_3, - TV_AUDIO_LINE_IN_4, - TV_AUDIO_LINE_IN_5, - TV_AUDIO_LINE_IN_6, - TV_AUDIO_LINE_IN_7, - TV_AUDIO_LINE_IN_MAX, -} tv_audio_channel_t; - -typedef enum tv_audio_in_source_type_e { - TV_AUDIO_IN_SOURCE_TYPE_LINEIN, - TV_AUDIO_IN_SOURCE_TYPE_ATV, - TV_AUDIO_IN_SOURCE_TYPE_HDMI, - TV_AUDIO_IN_SOURCE_TYPE_MAX, -} tv_audio_in_source_type_t; - -#define CC_RESOLUTION_1366X768_W (1366) -#define CC_RESOLUTION_1366X768_H (768) -#define CC_RESOLUTION_1920X1080_W (1920) -#define CC_RESOLUTION_1920X1080_H (1080) -#define CC_RESOLUTION_3840X2160_W (3840) -#define CC_RESOLUTION_3840X2160_H (2160) - -typedef enum tv_source_connect_detect_status_e { - CC_SOURCE_PLUG_OUT = 0, - CC_SOURCE_PLUG_IN = 1, -} tv_source_connect_detect_status_t; - -//HDMI rx cec -typedef struct tagHDMIRxRequestReplyItem { - CCondition WaitReplyCondition; - int WaitCmd; - int WaitLogicAddr; - int WaitTimeOut; - int WaitFlag; - int DataFlag; - struct _cec_msg msg; -} HDMIRxRequestReplyItem; - -typedef struct _hdcp_ksv { - int bksv0; - int bksv1; -} _hdcp_ksv; - - -typedef struct am_phase_s { - unsigned int length; // Length of total - unsigned int phase[TVIN_SIG_FMT_COMP_MAX - TVIN_SIG_FMT_VGA_THRESHOLD]; -} am_phase_t; - - -#define CC_REQUEST_LIST_SIZE (32) -#define CC_CEC_STREAM_SIZE (sizeof(struct _cec_msg)) -#define CC_SOURCE_DEV_REFRESH_CNT (E_LA_MAX) - -class CTvin { -public: - CTvin(); - ~CTvin(); - int OpenTvin(); - int init_vdin(); - int uninit_vdin ( void ); - int Tv_init_afe ( void ); - int Tv_uninit_afe ( void ); - int Tvin_AddPath ( tvin_path_id_t pathid ); - int Tvin_RemovePath ( tv_path_type_t pathtype ); - int Tvin_CheckPathActive ( tv_path_type_t path_type, int isCheckD2D3 ); - int setMpeg2Vdin(int enable); - //pre apis - int AFE_DeviceIOCtl ( int request, ... ); - void TvinApi_CloseAFEModule ( void ); - int TvinApi_SetVdinHVScale ( int vdinx, int hscale, int vscale ); - int TvinApi_SetCompPhase ( am_phase_t &am_phase ); - int TvinApi_SetStartDropFrameCn ( int count ); - int TvinApi_SetCompPhaseEnable ( int enable ); - tvin_trans_fmt TvinApi_Get3DDectMode(); - int TvinApi_GetHDMIAudioStatus ( void ); - int TvinApi_LoadPLLValues ( am_regs_t regs ); - int TvinApi_LoadCVD2Values ( am_regs_t regs ); - int TvinApi_GetFbSize ( unsigned int *fb_width, unsigned int *fb_height ); - int Tvin_StartDecoder ( tvin_info_t &info ); - int Tvin_StopDecoder(); - int get_hdmi_sampling_rate(); - int get_hdmi_ksv_info(int source_input, int data_buf[]); - int SwitchPort (tvin_port_t source_port ); - // - void Tvin_SetDepthOf2Dto3D ( int value ); - int set3D_FL_Frame(int value); - int setLatchFlag(int value); - // - int IsFileExist ( const char *file_name ); - char *DelSub ( char *str, char *sub ); - char *VDIN_CheckVideoPath ( const char *videopath ); - int VDIN_AddPath ( const char *videopath ); - 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(); - int VDIN_DeviceIOCtl ( int request, ... ); - int VDIN_GetDeviceFileHandle(); - int VDIN_OpenPort ( tvin_port_t port ); - int VDIN_ClosePort(); - int VDIN_StartDec ( const struct tvin_parm_s *vdinParam ); - int VDIN_StopDec(); - int VDIN_GetSignalInfo ( struct tvin_info_s *SignalInfo ); - int VDIN_SetVdinParam ( const struct tvin_parm_s *vdinParam ); - int VDIN_GetVdinParam ( const struct tvin_parm_s *vdinParam ); - int VDIN_OnoffVScaler ( int isOn ); - int VDIN_GetDisplayVFreq ( void ); - int VDIN_SetDisplayVFreq ( int freq, int display_resolution , bool isFbc); - - int VDIN_Set2D3DDepth ( int count ); - - int VDIN_Set2Dto3D ( int on_off ); - int VDIN_Set3DCmd ( int cmd ); - - int VDIN_Get_avg_luma(void); - int VDIN_GetHistgram ( int *hisgram ); - int VDIN_SetMVCViewMode ( int mode ); - int VDIN_GetMVCViewMode ( void ); - int VDIN_SetDIBuffMgrMode ( int mgr_mode ); - int VDIN_SetDICFG ( int cfg ); - int VDIN_SetDI3DDetc ( int enable ); - int VDIN_Get3DDetc ( void ); - int VDIN_GetVscalerStatus ( void ); - int VDIN_TurnOnBlackBarDetect ( int isEnable ); - int VDIN_LoadHdcpKey ( unsigned char *hdcpkey_buff ); - int VDIN_KeepLastFrame ( int enable ); - int VDIN_SetVideoFreeze ( int enable ); - int VDIN_SetDIBypasshd ( int enable ); - int VDIN_SetDIBypassAll ( int enable ); - int VDIN_SetDIBypass_Get_Buf_Threshold ( int enable ); - int VDIN_SetDIBypassProg ( int enable ); - int VDIN_SetDIBypassDynamic ( int flag ); - int VDIN_SetDIDet3DMode ( int value ); - int VDIN_SetDIBypass3D ( int enable ); - int VDIN_SetDIBypassPost ( int enable ); - int VDIN_SetDIProg_Proc_Config ( int value ); - int VDIN_SetDIInput2Pre ( int value ); - int VDIN_SetVdinFlag ( int flag ); - int VDIN_EnableRDMA ( int enable ); - int VDIN_GetHdmiHdcpKeyKsvInfo(struct _hdcp_ksv *msg); - int AFE_OpenModule ( void ); - void AFE_CloseModule ( void ); - int AFE_GetDeviceFileHandle(); - 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 ); - int AFE_GetADCCurrentTimingAdjust ( struct tvafe_vga_parm_s *timingadj ); - int AFE_VGAAutoAdjust ( struct tvafe_vga_parm_s *timingadj ); - int AFE_SetVGAAutoAjust ( void ); - int AFE_GetVGAAutoAdjustCMDStatus ( tvafe_cmd_status_t *Status ); - int AFE_GetAdcCal ( struct tvafe_adc_cal_s *adccalvalue ); - int AFE_SetAdcCal ( struct tvafe_adc_cal_s *adccalvalue ); - int AFE_GetAdcCompCal ( struct tvafe_adc_comp_cal_s *adccalvalue ); - int AFE_SetAdcCompCal ( struct tvafe_adc_comp_cal_s *adccalvalue ); - int AFE_GetYPbPrWSSinfo ( struct tvafe_comp_wss_s *wssinfo ); - unsigned int data_limit ( float data ); - void matrix_convert_yuv709_to_rgb ( unsigned int y, unsigned int u, unsigned int v, unsigned int *r, unsigned int *g, unsigned int *b ); - void re_order ( unsigned int *a, unsigned int *b ); - char *get_cap_addr ( enum adc_cal_type_e calType ); - inline unsigned char get_mem_data ( char *dp, unsigned int addr ); - int get_frame_average ( enum adc_cal_type_e calType, struct adc_cal_s *mem_data ); - struct adc_cal_s get_n_frame_average ( enum adc_cal_type_e calType ) ; - int AFE_GetMemData ( int typeSel, struct adc_cal_s *mem_data ); - int AFE_GetCVBSLockStatus ( enum tvafe_cvbs_video_e *cvbs_lock_status ); - static int CvbsFtmToColorStdEnum(tvin_sig_fmt_t fmt); - int VDIN_GetPortConnect ( int port ); - int VDIN_OpenHDMIPinMuxOn ( bool flag ); - int TVAFE_EnablePlugInDetect ( bool flag ); - int GetITContent(); - /*******************************************extend funs*********************/ - static tv_source_input_type_t Tvin_SourcePortToSourceInputType ( tvin_port_t source_port ); - static tv_source_input_type_t Tvin_SourceInputToSourceInputType ( tv_source_input_t source_input ); - static tvin_port_t Tvin_GetSourcePortBySourceType ( tv_source_input_type_t source_type ); - static tvin_port_t Tvin_GetSourcePortBySourceInput ( tv_source_input_t source_input ); - static unsigned int Tvin_TransPortStringToValue(const char *port_str); - static void Tvin_LoadSourceInputToPortMap(); - static int Tvin_GetSourcePortByCECPhysicalAddress(int physical_addr); - static tv_audio_channel_t Tvin_GetInputSourceAudioChannelIndex ( tv_source_input_t source_input ); - static tv_audio_in_source_type_t Tvin_GetAudioInSourceType ( tv_source_input_t source_input ); - static tv_source_input_t Tvin_PortToSourceInput ( tvin_port_t port ); - static int isVgaFmtInHdmi ( tvin_sig_fmt_t fmt ); - static int isSDFmtInHdmi ( tvin_sig_fmt_t fmt ); - static bool Tvin_is50HzFrameRateFmt ( tvin_sig_fmt_t fmt ); - static bool Tvin_IsDeinterlaceFmt ( tvin_sig_fmt_t fmt ); - static v4l2_std_id CvbsFtmToV4l2ColorStd(tvin_sig_fmt_t fmt); - - static CTvin *getInstance(); - -public: - class CTvinSigDetect: public CThread { - public: - static const int VDIN_NOSIG_DEFAULT_CHECK_TIMES = 1; - CTvinSigDetect (); - ~CTvinSigDetect(); - int startDetect(bool bPause = true); - int stopDetect(); - int pauseDetect(); - int resumeDetect(int later = 0); - int initSigState(); - void setVdinNoSigCheckKeepTimes(int times, bool isOnce);//times is time, ms - int requestAndWaitPauseDetect(); - //first pause detect? ok - tvin_info_t &getCurSigInfo() - { - return m_cur_sig_info; - } - class ISigDetectObserver { - public: - ISigDetectObserver() - {}; - virtual ~ISigDetectObserver() - {}; - virtual void onSigToStable() - {}; - virtual void onSigStableToUnstable() {}; - virtual void onSigStableToUnSupport() {}; - virtual void onSigStableToNoSig() {}; - virtual void onSigUnStableToUnSupport() {}; - virtual void onSigUnStableToNoSig() {}; - virtual void onSigNullToNoSig() {}; - virtual void onSigNoSigToUnstable() {}; - - virtual void onSigStillStable() {}; - virtual void onSigStillUnstable() {}; - virtual void onSigStillNosig() {}; - virtual void onSigStillNoSupport() {}; - virtual void onSigStillNull() {}; - virtual void onStableSigFmtChange() {}; - virtual void onStableTransFmtChange() {}; - - virtual void onSigDetectEnter() {}; - virtual void onSigDetectLoop() {}; - }; - void setObserver ( ISigDetectObserver *pOb ) - { - mpObserver = pOb; - }; - private: - bool threadLoop(); - int Tv_TvinSigDetect ( int &args ); - - //member - tvin_info_t m_cur_sig_info; - tvin_info_t m_pre_sig_info; - int mKeepNosigTime; - bool m_is_nosig_checktimes_once_valid; - mutable CMutex mLock; - CCondition mDetectPauseCondition; - CCondition mRequestPauseCondition; - volatile int m_sig_detect_status; - volatile bool m_request_pause_detect; - enum DetectState { - STATE_STOPED = 0, - STATE_RUNNING, - STATE_PAUSE - }; - int mDetectState; - int mResumeLaterTime; - ISigDetectObserver *mpObserver; - };// - -private: - static CTvin *mInstance; - int m_vdin_dev_fd; - int afe_dev_fd; - tvin_parm_t m_tvin_param; - tvin_parm_t gTvinVDINParam; - tvin_info_t gTvinVDINSignalInfo; - tvin_parm_t gTvinAFEParam; - tvin_info_t gTvinAFESignalInfo; - static int mSourceInputToPortMap[SOURCE_MAX]; - int gExistD2D3; - char gVideoPath[256]; - int m_is_decoder_start; - - enum tvin_path_id_e m_pathid; - char config_tv_path[64]; - char config_default_path[64]; -}; -#endif diff --git a/tvapi/libtv/tvsetting/CBlobDevice.cpp b/tvapi/libtv/tvsetting/CBlobDevice.cpp deleted file mode 100644 index 0a1ce49..0000000 --- a/tvapi/libtv/tvsetting/CBlobDevice.cpp +++ b/dev/null @@ -1,26 +0,0 @@ -#define LOG_TAG "CBlobDevice" - -#include <stdio.h> -#include <string.h> -#include <sys/stat.h> -#include <fcntl.h> -#include <pthread.h> -#include "CBlobDeviceE2prom.h" -#include "CBlobDevice.h" -#include "CTvLog.h" - -CBlobDevice::CBlobDevice() -{ - m_dev_path[0] = '\0'; -} - -CBlobDevice::~CBlobDevice() -{ -} - -int CBlobDevice::IsFileExist(const char *file_name) -{ - struct stat tmp_st; - return stat(file_name, &tmp_st); -} - diff --git a/tvapi/libtv/tvsetting/CBlobDevice.h b/tvapi/libtv/tvsetting/CBlobDevice.h deleted file mode 100644 index b8259a7..0000000 --- a/tvapi/libtv/tvsetting/CBlobDevice.h +++ b/dev/null @@ -1,50 +0,0 @@ -#ifndef BLOB_BASE_DEVICE_H -#define BLOB_BASE_DEVICE_H - -class CBlobDevice { - -public: - static const int CC_MAX_FILE_PATH = 256; - static const int CC_ERR_FILE_HANDLE = -1; - static const int CC_INIT_BYTE_VAL = 0xFF; - static const int CC_SSM_PROTECT_ON = 0; - static const int CC_SSM_PROTECT_OFF = 1; - - static const int CC_DEVICE_E2PROM = (0); - static const int CC_DEVICE_SPI = (1); - static const int CC_DEVICE_FILE = (2); - static const int CC_DEVICE_RAM = (3); - - CBlobDevice(); - virtual ~CBlobDevice(); - - virtual int WriteBytes(int offset, int size, unsigned char *buf) = 0; - virtual int ReadBytes(int offset, int size, unsigned char *buf) = 0; - virtual int EraseAllData() = 0; - virtual int InitCheck() = 0; - virtual int OpenDevice() = 0; - virtual int CloseDevice() = 0; - int WriteOneByte(int offset, unsigned char val) - { - return WriteBytes(offset, 1, &val); - } - int ReadOneByte(int offset, unsigned char *ptrVal) - { - return ReadBytes(offset, 1, ptrVal); - } - - int m_dev_type; //device type - int m_dev_total_size; //device total size(Byte) - - char m_dev_path[CC_MAX_FILE_PATH]; //device path - int m_dev_fd; - -protected: - unsigned char *mDataBuf; - -private: - int IsFileExist(const char *file_name); - -}; - -#endif // ANDROID_SSM_BASE_H diff --git a/tvapi/libtv/tvsetting/CBlobDeviceE2prom.cpp b/tvapi/libtv/tvsetting/CBlobDeviceE2prom.cpp deleted file mode 100644 index 656001f..0000000 --- a/tvapi/libtv/tvsetting/CBlobDeviceE2prom.cpp +++ b/dev/null @@ -1,52 +0,0 @@ -#define LOG_TAG "CBlobDeviceE2prom" - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <unistd.h> -#include <fcntl.h> -#include <errno.h> - -#include "CBlobDeviceE2prom.h" -#include "../tvconfig/tvconfig.h" -#include "../tvutils/tvutils.h" -#include "CTvLog.h" - -CBlobDeviceE2prom::CBlobDeviceE2prom() -{ -} - -CBlobDeviceE2prom::~CBlobDeviceE2prom() -{ -} - -int CBlobDeviceE2prom::WriteBytes(int offset __unused, int size __unused, unsigned char *buf __unused) -{ - return 0; -} - -int CBlobDeviceE2prom::ReadBytes(int offset __unused, int size __unused, unsigned char *buf __unused) -{ - return 0; -} - -int CBlobDeviceE2prom::EraseAllData() -{ - return 0; -} - -int CBlobDeviceE2prom::InitCheck() -{ - return 0; -} - -int CBlobDeviceE2prom::OpenDevice() -{ - return 0; -} - -int CBlobDeviceE2prom::CloseDevice() -{ - return 0; -} - diff --git a/tvapi/libtv/tvsetting/CBlobDeviceE2prom.h b/tvapi/libtv/tvsetting/CBlobDeviceE2prom.h deleted file mode 100644 index 159c8c1..0000000 --- a/tvapi/libtv/tvsetting/CBlobDeviceE2prom.h +++ b/dev/null @@ -1,76 +0,0 @@ -#ifndef BLOB_E2PROM_H -#define BLOB_E2PROM_H - -#include "CBlobDevice.h" - -#define I2C_RETRIES 0x0701 /* number of times a device address - should be polled when not - acknowledging */ -#define I2C_TIMEOUT 0x0702 /* set timeout in units of 10 ms */ - -/* NOTE: Slave address is 7 or 10 bits, but 10-bit addresses - * are NOT supported! (due to code brokenness) - */ -#define I2C_SLAVE 0x0703 /* Use this slave address */ -#define I2C_SLAVE_FORCE 0x0706 /* Use this slave address, even if it - is already in use by a driver! */ -#define I2C_TENBIT 0x0704 /* 0 for 7 bit addrs, != 0 for 10 bit */ -#define I2C_FUNCS 0x0705 /* Get the adapter functionality mask */ -#define I2C_RDWR 0x0707 /* Combined R/W transfer (one STOP only) */ -#define I2C_PEC 0x0708 /* != 0 to use PEC with SMBus */ -#define I2C_SMBUS 0x0720 /* SMBus transfer */ - -struct i2c_msg { - unsigned short addr; /* slave address */ - unsigned short flags; -#define I2C_M_TEN 0x0010 /* this is a ten bit chip address */ -#define I2C_M_WR 0x0000 /* write data, from master to slave */ -#define I2C_M_RD 0x0001 /* read data, from slave to master */ -#define I2C_M_NOSTART 0x4000 /* if I2C_FUNC_PROTOCOL_MANGLING */ -#define I2C_M_REV_DIR_ADDR 0x2000 /* if I2C_FUNC_PROTOCOL_MANGLING */ -#define I2C_M_IGNORE_NAK 0x1000 /* if I2C_FUNC_PROTOCOL_MANGLING */ -#define I2C_M_NO_RD_ACK 0x0800 /* if I2C_FUNC_PROTOCOL_MANGLING */ -#define I2C_M_RECV_LEN 0x0400 /* length will be first received byte */ - - unsigned short len; /* msg length */ - unsigned char *buf; /* pointer to msg data */ -}; - -struct i2c_rdwr_ioctl_data { - struct i2c_msg *msgs; - unsigned int nmsgs; -}; - -// 24C64 eeprom -#define E2P_MSG_BUF_SIZE (34) - -class CBlobDeviceE2prom: public CBlobDevice { - -public: - CBlobDeviceE2prom(); - virtual ~CBlobDeviceE2prom(); - - virtual int WriteBytes(int offset, int size, unsigned char *buf); - virtual int ReadBytes(int offset, int size, unsigned char *buf); - virtual int EraseAllData(); - virtual int InitCheck(); - virtual int OpenDevice(); - virtual int CloseDevice(); - -private: - -private: - /*int E2P_DEV_TOTAL_SIZE; - int E2P_DEV_RW_START_OFFSET; - int E2P_DEV_RW_END_OFFSET; - int E2P_DEV_W_PAGE_SIZE; - int E2P_DEV_R_PAGE_SIZE; - int E2P_DEV_SLAVE_ADDR; - int E2P_DEV_RW_TEST_OFFSET; - int device_use_buffer; - unsigned char *device_buf; - char gFilePathBuf[CC_MAX_FILE_PATH];*/ -}; - - -#endif diff --git a/tvapi/libtv/tvsetting/CBlobDeviceFile.cpp b/tvapi/libtv/tvsetting/CBlobDeviceFile.cpp deleted file mode 100644 index e86c3b0..0000000 --- a/tvapi/libtv/tvsetting/CBlobDeviceFile.cpp +++ b/dev/null @@ -1,78 +0,0 @@ -#define LOG_TAG "BLOB_FILE" - -#include <stdio.h> -#include <unistd.h> -#include <string.h> -#include <sys/stat.h> -#include <fcntl.h> -#include <errno.h> -#include "tvconfig/tvconfig.h" -#include "CBlobDeviceFile.h" -#include "CTvLog.h" - -CBlobDeviceFile::CBlobDeviceFile() -{ - m_dev_total_size = 4 * 1024; - m_dev_fd = -1; - mDataBuf = new unsigned char[m_dev_total_size]; - - const char *device_path = config_get_str(CFG_SECTION_SETTING, "device_path", "/param/default_data"); - const char *device_size = config_get_str(CFG_SECTION_SETTING, "device_size", "0x1000"); - strcpy(m_dev_path, device_path); -} - -CBlobDeviceFile::~CBlobDeviceFile() -{ - if (mDataBuf != NULL) { - delete mDataBuf; - mDataBuf = NULL; - } - CloseDevice(); -} - -int CBlobDeviceFile::WriteBytes(int offset, int size, unsigned char *buf) -{ - - lseek(m_dev_fd, offset, SEEK_SET); - write(m_dev_fd, buf, size); - //not need - //fsync(device_fd); - return 0; -} -int CBlobDeviceFile::ReadBytes(int offset, int size, unsigned char *buf) -{ - lseek(m_dev_fd, offset, SEEK_SET); - read(m_dev_fd, buf, size); - return 0; -} -int CBlobDeviceFile::EraseAllData() -{ - return 0; -} -int CBlobDeviceFile::InitCheck() -{ - return 0; -} - -int CBlobDeviceFile::OpenDevice() -{ - if (strlen(m_dev_path) <= 0) return -1; - - m_dev_fd = open(m_dev_path, O_RDWR | O_SYNC | O_CREAT, S_IRUSR | S_IWUSR); - - if (m_dev_fd < 0) { - LOGE("%s, Open device file \"%s\" error: %s.\n", "TV", m_dev_path, strerror(errno)); - return -1; - } - - return 0; -} - -int CBlobDeviceFile::CloseDevice() -{ - if (m_dev_fd >= 0) { - close(m_dev_fd); - m_dev_fd = -1; - } - return 0; -} diff --git a/tvapi/libtv/tvsetting/CBlobDeviceFile.h b/tvapi/libtv/tvsetting/CBlobDeviceFile.h deleted file mode 100644 index 28357d0..0000000 --- a/tvapi/libtv/tvsetting/CBlobDeviceFile.h +++ b/dev/null @@ -1,26 +0,0 @@ -#ifndef _BLOB_FILE_H_ -#define _BLOB_FILE_H_ - -#include "CBlobDevice.h" -class CBlobDeviceFile: public CBlobDevice { - -public: - CBlobDeviceFile(); - virtual ~CBlobDeviceFile(); - - virtual int WriteBytes(int offset, int size, unsigned char *buf); - virtual int ReadBytes(int offset, int size, unsigned char *buf); - virtual int EraseAllData(); - virtual int InitCheck(); - virtual int OpenDevice(); - virtual int CloseDevice(); - -private: - int ValidOperateCheck(); - int CreateNewFile(const char *file_name); - -private: - -}; - -#endif // ANDROID_SSM_FILE_H diff --git a/tvapi/libtv/tvsetting/CBlobDeviceRam.cpp b/tvapi/libtv/tvsetting/CBlobDeviceRam.cpp deleted file mode 100644 index c938be7..0000000 --- a/tvapi/libtv/tvsetting/CBlobDeviceRam.cpp +++ b/dev/null @@ -1,129 +0,0 @@ -#include <stdio.h> -#include <string.h> - -#include <android/log.h> - -#include "CTvSettingDeviceRam.h" - -#define LOG_TAG "ssmram" -#include "CTvLog.h" - -CTvSettingDeviceRam::CTvSettingDeviceRam() -{ - RAM_DEV_TOTAL_SIZE = 4 * 1024; - RAM_DEV_RW_START_OFFSET = 0; - RAM_DEV_RW_END_OFFSET = RAM_DEV_TOTAL_SIZE - 1; - RAM_DEV_W_PAGE_SIZE = 32; - RAM_DEV_R_PAGE_SIZE = 32; - RAM_DEV_SLAVE_ADDR = (0xA0 >> 1); - RAM_DEV_RW_TEST_OFFSET = -1; - device_use_buffer = 0; - device_buf = NULL; - gFilePathBuf[0] = '\0'; -} - -CTvSettingDeviceRam::~CTvSettingDeviceRam() -{ -} - -int CTvSettingDeviceRam::GetDeviceTotalSize() -{ - return 0; -} -int CTvSettingDeviceRam::InitCheck() -{ - int tmp_dev_total_size = 0; - - if (device_buf == NULL) { - tmp_dev_total_size = GetDeviceTotalSize(); - if (tmp_dev_total_size <= 0) { - LOGE("%s, Device file size must be more than 0.\n", "TV"); - return -1; - } - - device_buf = new unsigned char[tmp_dev_total_size]; - if (device_buf == NULL) { - return -1; - } - - memset((void *) device_buf, CC_INIT_BYTE_VAL, tmp_dev_total_size); - } - - return 0; -} - -int CTvSettingDeviceRam::OpenDevice() -{ - return 0; -} - -int CTvSettingDeviceRam::CloseDevice(int *device_fd) -{ - - - return 0; -} - -int CTvSettingDeviceRam::CheckDeviceWrAvaliable(int offset, int len) -{ - /*int tmp_dev_start_offset = 0; - int tmp_dev_end_offset = 0; - - GetDeviceRWStartOffset(&tmp_dev_start_offset); - if (tmp_dev_start_offset < 0) { - LOGE("%s, Device file r/w start offset must be greater than or euqal to 0.\n", "TV"); - return -1; - } - - GetDeviceRWEndOffset(&tmp_dev_end_offset); - if (tmp_dev_end_offset < 0) { - LOGE("%s, Device file r/w end offset must be more than 0.\n", "TV"); - return -1; - } - - if (len <= 0) { - LOGE("%s, The w/r length should be more than 0.\n", "TV"); - return -1; - } - - if ((len + tmp_dev_start_offset + offset) > tmp_dev_end_offset + 1) { - LOGE("%s, w/r would be overflow!!! len = %d, start offset = %d, offset = %d, end offset = %d.\n", "TV", len, tmp_dev_start_offset, offset, tmp_dev_end_offset); - return -1; - } - - if (ValidOperateCheck() < 0) { - return -1; - }*/ - - return 0; -} - -int CTvSettingDeviceRam::WriteSpecialBytes(int offset, int len, unsigned char data_buf[]) -{ - int tmp_dev_w_page_size = 0; - - //GetDeviceWritePageSize(&tmp_dev_w_page_size); - //if (len > tmp_dev_w_page_size) { - // LOGE("%s, The write length should be less than page size(%d).\n", "TV", tmp_dev_w_page_size); - // return -1; - // } - - if (CheckDeviceWrAvaliable(offset, len) < 0) { - return -1; - } - - memcpy((void *) (device_buf + offset), (void *) data_buf, len); - - return 0; -} - -int CTvSettingDeviceRam::ReadSpecialBytes(int offset, int len, unsigned char data_buf[]) -{ - if (CheckDeviceWrAvaliable(offset, len) < 0) { - return -1; - } - - memcpy((void *) data_buf, (void *) (device_buf + offset), len); - - return 0; -} diff --git a/tvapi/libtv/tvsetting/CBlobDeviceRam.h b/tvapi/libtv/tvsetting/CBlobDeviceRam.h deleted file mode 100644 index 49f98b0..0000000 --- a/tvapi/libtv/tvsetting/CBlobDeviceRam.h +++ b/dev/null @@ -1,37 +0,0 @@ -#ifndef TV_SETTING_RAM_H -#define TV_SETTING_RAM_H - -#include "CTvSettingBaseDevice.h" - -class CTvSettingDeviceRam: public CTvSettingBaseDevice { - -public: - CTvSettingDeviceRam(); - virtual ~CTvSettingDeviceRam(); - - virtual int InitCheck(); - virtual int OpenDevice(); - virtual int CloseDevice(int *device_fd); - virtual int GetDeviceTotalSize(); - - virtual int CheckDeviceWrAvaliable(int offset, int len); - virtual int WriteSpecialBytes(int offset, int len, unsigned char data_buf[]); - virtual int ReadSpecialBytes(int offset, int len, unsigned char data_buf[]); - -private: - int ValidOperateCheck(); - -private: - int RAM_DEV_TOTAL_SIZE; - int RAM_DEV_RW_START_OFFSET; - int RAM_DEV_RW_END_OFFSET; - int RAM_DEV_W_PAGE_SIZE; - int RAM_DEV_R_PAGE_SIZE; - int RAM_DEV_SLAVE_ADDR; - int RAM_DEV_RW_TEST_OFFSET; - int device_use_buffer; - unsigned char *device_buf; - char gFilePathBuf[CC_MAX_FILE_PATH]; -}; - -#endif // ANDROID_SSM_RAM_H diff --git a/tvapi/libtv/tvsetting/CTvSetting.cpp b/tvapi/libtv/tvsetting/CTvSetting.cpp deleted file mode 100644 index 59fc199..0000000 --- a/tvapi/libtv/tvsetting/CTvSetting.cpp +++ b/dev/null @@ -1,2448 +0,0 @@ -#define LOG_TAG "TvSetting" - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <unistd.h> -#include <fcntl.h> -#include <errno.h> -#include <sys/stat.h> -#include <sys/wait.h> -#include <cutils/properties.h> - -#include <netinet/ether.h> -#include <netinet/if_ether.h> - -#include <netutils/ifc.h> -#include <netutils/dhcp.h> - -#include "CTvSetting.h" - -#include "../tvconfig/tvconfig.h" -#include "../tvutils/tvutils.h" - -#include "../tv/CTvLog.h" -#define CC_DEF_CHARACTER_CHAR_VAL (0x8A) - -pthread_mutex_t ssm_r_w_op_mutex = PTHREAD_MUTEX_INITIALIZER; - -/************************ Start APIs For UI ************************/ - -CTvSettingDeviceFactory *mpSettingDeviceFactory = NULL; -CBlobDevice *mpCurDevice = NULL; - -bool CTvSettingLoad() -{ - mpSettingDeviceFactory = new CTvSettingDeviceFactory(); - mpCurDevice = mpSettingDeviceFactory->getSaveDeviceFromConfigFile(); - if (mpCurDevice == NULL) { - LOGD("%s, CTvSettingLoad = NULL", CFG_SECTION_TV); - return false; - } else { - mpCurDevice->OpenDevice(); - } - return true; -} - -bool CTvSettingunLoad() -{ - if (mpSettingDeviceFactory != NULL) { - delete mpSettingDeviceFactory; - mpSettingDeviceFactory = NULL; - } - return true; -} - -int CTvSettingdoSuspend() -{ - return mpCurDevice->CloseDevice(); -} - -int CTvSettingdoResume() -{ - return mpCurDevice->OpenDevice(); -} -template<typename T> -static int SSMWriteNTypes(int offset, int data_len, T *data_buf) -{ - pthread_mutex_lock(&ssm_r_w_op_mutex); - - if (data_buf == NULL) { - LOGE("%s, data_buf is NULL.\n", CFG_SECTION_TV); - - pthread_mutex_unlock(&ssm_r_w_op_mutex); - return -1; - } - - if (mpCurDevice == NULL) { - LOGE("%s, ssm_device is NULL.\n", CFG_SECTION_TV); - - pthread_mutex_unlock(&ssm_r_w_op_mutex); - return -1; - } - - if (mpCurDevice->WriteBytes(offset, data_len * sizeof(T), - (unsigned char *) data_buf) < 0) { - LOGE("%s, device WriteNBytes error.\n", CFG_SECTION_TV); - - pthread_mutex_unlock(&ssm_r_w_op_mutex); - return -1; - } - - pthread_mutex_unlock(&ssm_r_w_op_mutex); - return 0; -} - -template<typename T> -static int SSMReadNTypes(int offset, int data_len, T *data_buf) -{ - pthread_mutex_lock(&ssm_r_w_op_mutex); - - if (data_buf == NULL) { - LOGE("%s, data_buf is NULL.\n", CFG_SECTION_TV); - - pthread_mutex_unlock(&ssm_r_w_op_mutex); - return -1; - } - - if (mpCurDevice == NULL) { - LOGE("%s, ssm_device is NULL.\n", CFG_SECTION_TV); - - pthread_mutex_unlock(&ssm_r_w_op_mutex); - return -1; - } - - if (mpCurDevice->ReadBytes(offset, data_len * sizeof(T), - (unsigned char *) data_buf) < 0) { - LOGE("%s, device ReadNBytes error.\n", CFG_SECTION_TV); - pthread_mutex_unlock(&ssm_r_w_op_mutex); - return -1; - } - - pthread_mutex_unlock(&ssm_r_w_op_mutex); - return 0; -} -int SSMSaveFlash_One_N310_N311(int offset, int rw_val) -{ - unsigned char tmp_val = rw_val; - LOGD ( "~~~ SSMSaveFlash_One ~~~##offset %d##rw_val %d##" , offset, rw_val); - - return SSMWriteNTypes(offset, 1, &tmp_val); -} - -int SSMReadFlash_One_N310_N311(int offset) -{ - unsigned char tmp_val = 0; - - if (SSMReadNTypes(offset, 1, &tmp_val) < 0) { - return -1; - } - LOGD ( "~~~ SSMReadFlash_One ~~~##offset %d##rw_val %d##" , offset, tmp_val); - - return tmp_val; -} - -int SSMSaveFlash_N_N310_N311(int offset, int data_len, int *data_buf) -{ - int i = 0; - unsigned char *ptr = NULL; - - ptr = new unsigned char[data_len]; - - if (ptr != NULL) { - for (i = 0; i < data_len; i++) { - ptr[i] = data_buf[i]; - } - } else { - delete ptr; - ptr = NULL; - - return -1; - } - - if (SSMWriteNTypes(offset, data_len, ptr) < 0) { - delete ptr; - ptr = NULL; - - return -1; - } - - delete ptr; - ptr = NULL; - - return 0; -} - -int SSMReadFlash_N_N310_N311(int offset, int data_len, int *data_buf) -{ - int i = 0; - unsigned char *ptr = NULL; - - ptr = new unsigned char[data_len]; - - if (ptr != NULL) { - if (SSMReadNTypes(offset, data_len, ptr) < 0) { - delete ptr; - ptr = NULL; - - return -1; - } - } else { - delete ptr; - ptr = NULL; - - return -1; - } - - for (i = 0; i < data_len; i++) { - data_buf[i] = ptr[i]; - } - - delete ptr; - ptr = NULL; - - return 0; -} -int EEPWriteOneByte(int offset, unsigned char *data_buf) -{ - int fd = 0; - const char *device_path = config_get_str(CFG_SECTION_TV, "peripheral.eeprom.path", "/sys/devices/i2c-2/2-0050/eeprom"); - pthread_mutex_lock(&ssm_r_w_op_mutex); - - LOGD ( "~~~EEPWriteOneByte~~~##offset %d##rw_val %s##" , offset, data_buf); - - if (data_buf == NULL) { - LOGE("%s, data_buf is NULL.\n", CFG_SECTION_TV); - - pthread_mutex_unlock(&ssm_r_w_op_mutex); - return -1; - } - - fd = open(device_path, O_RDWR); - - if (fd < 0) { - LOGE("%s, ####i2c test device open failed####.\n", CFG_SECTION_TV); - - pthread_mutex_unlock(&ssm_r_w_op_mutex); - return -1; - } - - lseek(fd, offset, SEEK_SET); - - if (write(fd, data_buf, 1) < 0) { - LOGE("%s, device WriteOneBytes error.\n", CFG_SECTION_TV); - - pthread_mutex_unlock(&ssm_r_w_op_mutex); - return -1; - } - - close(fd); - - LOGE("%s, device WriteOneBytes OK.\n", CFG_SECTION_TV); - - pthread_mutex_unlock(&ssm_r_w_op_mutex); - return 0; -} - -int EEPReadOneByte(int offset , unsigned char *data_buf) -{ - int fd = 0; - //const char* device_type = config_get_str(CFG_SECTION_SETTING, "peripheral.eeprom.device", "disable"); - const char *device_path = config_get_str(CFG_SECTION_TV, "peripheral.eeprom.path", "/sys/devices/i2c-2/2-0050/eeprom"); - - pthread_mutex_lock(&ssm_r_w_op_mutex); - - if (data_buf == NULL) { - LOGE("%s, data_buf is NULL.\n", CFG_SECTION_TV); - - pthread_mutex_unlock(&ssm_r_w_op_mutex); - return -1; - } - - fd = open(device_path, O_RDWR); - - if (fd < 0) { - LOGE("%s, ssm_device is NULL.\n", CFG_SECTION_TV); - - pthread_mutex_unlock(&ssm_r_w_op_mutex); - return -1; - } - lseek(fd, offset, SEEK_SET); - - if (read(fd, data_buf, 1) < 0) { - LOGE("%s, device ReadOneBytes error.\n", CFG_SECTION_TV); - pthread_mutex_unlock(&ssm_r_w_op_mutex); - return -1; - } - - close(fd); - - LOGD ( "~~~EEPReadOneByte~~~##offset %d##rw_val %s##" , offset, data_buf); - - pthread_mutex_unlock(&ssm_r_w_op_mutex); - return 0; -} - -int EEPWriteNByte(int offset, int data_len, unsigned char *data_buf) -{ - int fd = 0; - const char *device_path = config_get_str(CFG_SECTION_TV, "peripheral.eeprom.path", "/sys/devices/i2c-2/2-0050/eeprom"); - pthread_mutex_lock(&ssm_r_w_op_mutex); - - LOGD ( "~~~EEPWriteNByte~~~##offset %d##data_len %d##" , offset, data_len); - - if (data_buf == NULL) { - LOGE("%s, data_buf is NULL.\n", CFG_SECTION_TV); - - pthread_mutex_unlock(&ssm_r_w_op_mutex); - return -1; - } - - fd = open(device_path, O_RDWR); - - if (fd < 0) { - LOGE("%s, ####i2c test device open failed####.\n", CFG_SECTION_TV); - - pthread_mutex_unlock(&ssm_r_w_op_mutex); - return -1; - } - - lseek(fd, offset, SEEK_SET); - - if (write(fd, data_buf, data_len) < 0) { - LOGE("%s, device WriteNBytes error.\n", CFG_SECTION_TV); - - pthread_mutex_unlock(&ssm_r_w_op_mutex); - return -1; - } - - close(fd); - - LOGE("%s, device WriteNBytes OK.\n", CFG_SECTION_TV); - - pthread_mutex_unlock(&ssm_r_w_op_mutex); - return 0; -} -int EEPReadNByte(int offset, int data_len, unsigned char *data_buf) -{ - int fd = 0; - const char *device_path = config_get_str(CFG_SECTION_TV, "peripheral.eeprom.path", "/sys/devices/i2c-2/2-0050/eeprom"); - pthread_mutex_lock(&ssm_r_w_op_mutex); - - if (data_buf == NULL) { - LOGE("%s, data_buf is NULL.\n", CFG_SECTION_TV); - - pthread_mutex_unlock(&ssm_r_w_op_mutex); - return -1; - } - - fd = open(device_path, O_RDWR); - - if (fd < 0) { - LOGE("%s, ssm_device is NULL.\n", CFG_SECTION_TV); - - pthread_mutex_unlock(&ssm_r_w_op_mutex); - return -1; - } - lseek(fd, offset, SEEK_SET); - - if (read(fd, data_buf, data_len) < 0) { - LOGE("%s, device ReadNBytes error.\n", CFG_SECTION_TV); - - pthread_mutex_unlock(&ssm_r_w_op_mutex); - return -1; - } - - close(fd); - - LOGD ( "~~~EEPReadNByte~~~##offset %d##data_len %d##" , offset, data_len); - - pthread_mutex_unlock(&ssm_r_w_op_mutex); - return 0; -} - - -int SSMSaveEEP_One_N310_N311(int offset, int rw_val) -{ - unsigned char tmp_val = rw_val; - const char *device_config = config_get_str(CFG_SECTION_TV, "peripheral.eeprom.device", "disable"); - - if (strcmp(device_config, "enable") != 0) { - LOGD ( "~~~ SSMSaveEEP_One ~~~##peripheral.eeprom.device error##"); - return -1; - } - LOGD ( "~~~SSMSaveEEP_One~~~##offset %d##rw_val %d##" , offset, rw_val); - - return EEPWriteOneByte(offset, &tmp_val); -} - -int SSMReadEEP_One_N310_N311(int offset) -{ - unsigned char tmp_val = 0; - const char *device_config = config_get_str(CFG_SECTION_TV, "peripheral.eeprom.device", "disable"); - - if (strcmp(device_config, "enable") != 0) { - LOGD ( "~~~ SSMReadEEP_One ~~~##peripheral.eeprom.device error##"); - return -1; - } - - if (EEPReadOneByte(offset, &tmp_val) < 0) { - return -1; - } - LOGD ( "~~~SSMReadEEP_One~~~##offset %d##rw_val %d##" , offset, tmp_val); - - return tmp_val; -} - -int SSMSaveEEP_N_N310_N311(int offset, int data_len, int *data_buf) -{ - int i = 0; - unsigned char *ptr = NULL; - const char *device_config = config_get_str(CFG_SECTION_TV, "peripheral.eeprom.device", "disable"); - - if (strcmp(device_config, "enable") != 0) { - LOGD ( "~~~ SSMSaveEEP_N ~~~##peripheral.eeprom.device error##"); - return -1; - } - - ptr = new unsigned char[data_len]; - - if (ptr != NULL) { - for (i = 0; i < data_len; i++) { - ptr[i] = data_buf[i]; - } - } else { - delete ptr; - ptr = NULL; - - return -1; - } - - if (EEPWriteNByte(offset, data_len, ptr) < 0) { - delete ptr; - ptr = NULL; - - return -1; - } - - delete ptr; - ptr = NULL; - - return 0; -} - -int SSMReadEEP_N_N310_N311(int offset, int data_len, int *data_buf) -{ - int i = 0; - unsigned char *ptr = NULL; - const char *device_config = config_get_str(CFG_SECTION_TV, "peripheral.eeprom.device", "disable"); - - if (strcmp(device_config, "enable") != 0) { - LOGD ( "~~~ SSMReadEEP_N ~~~##peripheral.eeprom.device error##"); - return -1; - } - ptr = new unsigned char[data_len]; - - if (ptr != NULL) { - if (EEPReadNByte(offset, data_len, ptr) < 0) { - delete ptr; - ptr = NULL; - - return -1; - } - } else { - delete ptr; - ptr = NULL; - - return -1; - } - - for (i = 0; i < data_len; i++) { - data_buf[i] = ptr[i]; - } - - delete ptr; - ptr = NULL; - - return 0; -} -/************************ Start APIs For UI ************************/ -int MiscSSMRestoreDefault() -{ - SSMSaveFactoryBurnMode(0); - SSMSavePowerOnOffChannel(1); - SSMSaveSystemLanguage(0); - SSMSaveAgingMode(0); - SSMSavePanelType(0); - SSMSavePowerOnMusicSwitch(0); - SSMSavePowerOnMusicVolume(20); - SSMSaveSystemSleepTimer(0xFFFFFFFF); - SSMSaveInputSourceParentalControl(0, 0); - SSMSaveParentalControlSwitch(0); - SSMSaveSerialCMDSwitchValue(0); - SSMSaveBlackoutEnable(0); - return 0; -} - -int MiscSSMFacRestoreDefault() -{ - SSMSaveSystemLanguage(0); - SSMSavePowerOnMusicSwitch(1); - SSMSavePowerOnMusicVolume(20); - SSMSaveSystemSleepTimer(0xFFFFFFFF); - SSMSaveInputSourceParentalControl(0, 0); - SSMSaveParentalControlSwitch(0); - SSMSaveSearchNavigateFlag(1); - SSMSaveInputNumLimit(2); - SSMSaveLocalDimingOnOffFlg(0); - - return 0; -} - -int ReservedSSMRestoreDefault() -{ - SSMSaveBurnWriteCharaterChar(CC_DEF_CHARACTER_CHAR_VAL); - - return 0; -} - -int SSMSaveBurnWriteCharaterChar(int rw_val) -{ - unsigned char tmp_val = rw_val; - - return SSMWriteNTypes(SSM_RSV_W_CHARACTER_CHAR_START, 1, &tmp_val); -} - -int SSMReadBurnWriteCharaterChar() -{ - unsigned char tmp_val = 0; - - if (SSMReadNTypes(SSM_RSV_W_CHARACTER_CHAR_START, 1, &tmp_val) < 0) { - return -1; - } - - return tmp_val; -} - -int SSMSaveFactoryBurnMode(int rw_val) -{ - unsigned char tmp_val = rw_val; - - return SSMWriteNTypes(SSM_RW_FBMF_START, 1, &tmp_val); -} - -int SSMReadFactoryBurnMode() -{ - unsigned char tmp_val = 0; - - if (SSMReadNTypes(SSM_RW_FBMF_START, 1, &tmp_val) < 0) { - return 0; - } - - if (tmp_val != 0) { - return 1; - } - - return 0; -} - -int SSMSavePowerOnOffChannel(int rw_val) -{ - unsigned char tmp_val = rw_val; - return SSMWriteNTypes(SSM_RW_POWER_CHANNEL_START, 1, &tmp_val); -} - -int SSMReadPowerOnOffChannel() -{ - unsigned char tmp_val = 0; - - if (SSMReadNTypes(SSM_RW_POWER_CHANNEL_START, 1, &tmp_val) < 0) { - return 0; - } - return tmp_val; -} - -int SSMSaveLastSelectSourceInput(int rw_val) -{ - unsigned char tmp_val = rw_val; - return SSMWriteNTypes(SSM_RW_LAST_SOURCE_INPUT_START, 1, &tmp_val); -} - -int SSMReadLastSelectSourceInput() -{ - unsigned char tmp_val = 0; - - if (SSMReadNTypes(SSM_RW_LAST_SOURCE_INPUT_START, 1, &tmp_val) < 0) { - return 0; - } - if (tmp_val == CBlobDevice::CC_INIT_BYTE_VAL) { - tmp_val = 0; - } - - return tmp_val; -} - -int SSMSaveSystemLanguage(int rw_val) -{ - unsigned char tmp_val = rw_val; - - return SSMWriteNTypes(SSM_RW_SYS_LANGUAGE_START, 1, &tmp_val); -} - -int SSMReadSystemLanguage() -{ - unsigned char tmp_val = 0; - - if (SSMReadNTypes(SSM_RW_SYS_LANGUAGE_START, 1, &tmp_val) < 0) { - return 0; - } - - if (tmp_val == CBlobDevice::CC_INIT_BYTE_VAL) { - tmp_val = 0; - } - - return tmp_val; -} - -int SSMSaveAgingMode(int rw_val) -{ - unsigned char tmp_val = rw_val; - - return SSMWriteNTypes(SSM_RW_AGING_MODE_START, 1, &tmp_val); -} - -int SSMReadAgingMode() -{ - unsigned char tmp_val = 0; - - if (SSMReadNTypes(SSM_RW_AGING_MODE_START, 1, &tmp_val) < 0) { - return 0; - } - - if (tmp_val == CBlobDevice::CC_INIT_BYTE_VAL) { - tmp_val = 0; - } - - return tmp_val; -} - -int SSMSavePanelType(int rw_val) -{ - unsigned char tmp_val = rw_val; - - return SSMWriteNTypes(SSM_RW_PANEL_TYPE_START, 1, &tmp_val); -} - -int SSMReadPanelType() -{ - unsigned char tmp_val = 0; - - if (SSMReadNTypes(SSM_RW_PANEL_TYPE_START, 1, &tmp_val) < 0) { - return 0; - } - - if (tmp_val == CBlobDevice::CC_INIT_BYTE_VAL) { - tmp_val = 0; - } - - return tmp_val; -} - -int SSMSavePowerOnMusicSwitch(int rw_val) -{ - unsigned char tmp_val = rw_val; - - return SSMWriteNTypes(SSM_RW_POWER_ON_MUSIC_SWITCH_START, 1, &tmp_val); -} - -int SSMReadPowerOnMusicSwitch() -{ - unsigned char tmp_val = 0; - - if (SSMReadNTypes(SSM_RW_POWER_ON_MUSIC_SWITCH_START, 1, &tmp_val) < 0) { - return 0; - } - - if (tmp_val == CBlobDevice::CC_INIT_BYTE_VAL) { - tmp_val = 0; - } - - return tmp_val; -} - -int SSMSavePowerOnMusicVolume(int rw_val) -{ - unsigned char tmp_val = rw_val; - - return SSMWriteNTypes(SSM_RW_POWER_ON_MUSIC_VOL_START, 1, &tmp_val); -} - -int SSMReadPowerOnMusicVolume() -{ - unsigned char tmp_val = 0; - - if (SSMReadNTypes(SSM_RW_POWER_ON_MUSIC_VOL_START, 1, &tmp_val) < 0) { - return 0; - } - - if (tmp_val == CBlobDevice::CC_INIT_BYTE_VAL) { - tmp_val = 0; - } - - return tmp_val; -} - -int SSMSaveSystemSleepTimer(int rw_val) -{ - return SSMWriteNTypes(SSM_RW_SYS_SLEEP_TIMER_START, 1, &rw_val); -} - -int SSMReadSystemSleepTimer() -{ - int tmp_val = 0; - - if (SSMReadNTypes(SSM_RW_SYS_SLEEP_TIMER_START, 1, &tmp_val) < 0) { - return 0; - } - - if (tmp_val < 0) { - tmp_val = 0; - } - - return tmp_val; -} - -int SSMSaveInputSourceParentalControl(int source_index, - unsigned char ctl_flag) -{ - int tmp_val = 0; - - if (source_index < 0 || source_index > 31) { - return -1; - } - - if (ctl_flag != 0 && ctl_flag != 1) { - return -1; - } - - if (SSMReadNTypes(SSM_RW_INPUT_SRC_PARENTAL_CTL_START, 4, - (unsigned char *) &tmp_val) < 0) { - return -1; - } - - tmp_val = (tmp_val & (~(1 << source_index))) | (ctl_flag << source_index); - - return SSMWriteNTypes(SSM_RW_INPUT_SRC_PARENTAL_CTL_START, 4, - (unsigned char *) &tmp_val); -} - -int SSMReadInputSourceParentalControl(int source_index) -{ - int tmp_val = 0; - - if (SSMReadParentalControlSwitch() == 0) { - return 0; - } - - if (SSMReadNTypes(SSM_RW_INPUT_SRC_PARENTAL_CTL_START, 4, - (unsigned char *) &tmp_val) < 0) { - return 0; - } - - if (tmp_val & (1 << source_index)) { - return 1; - } - - return 0; -} - -int SSMSaveParentalControlSwitch(int rw_val) -{ - unsigned char tmp_val = rw_val; - - return SSMWriteNTypes(SSM_RW_PARENTAL_CTL_SWITCH_START, 1, &tmp_val); -} - -int SSMReadParentalControlSwitch() -{ - unsigned char tmp_val = 0; - - if (SSMReadNTypes(SSM_RW_PARENTAL_CTL_SWITCH_START, 1, &tmp_val) < 0) { - return 0; - } - - if (tmp_val != 0) { - tmp_val = 1; - } - - return tmp_val; -} - -int SSMGetCustomerDataStart() -{ - return SSM_RW_CUSTOMER_DATA_START; -} - -int SSMGetCustomerDataLen() -{ - return SSM_RW_CUSTOMER_DATA_LEN; -} - -int SSMGetATVDataStart() -{ - return SSM_RW_ATV_START; -} - -int SSMGetATVDataLen() -{ - return SSM_RW_ATV_LEN; -} - -int SSMGetVPPDataStart() -{ - return SSM_RW_VPP_START; -} - -int SSMGetVPPDataLen() -{ - return SSM_RW_VPP_LEN; -} - -int SSMSaveSearchNavigateFlag(int rw_val) -{ - unsigned char tmp_val = rw_val; - - return SSMWriteNTypes(SSM_RW_SEARCH_NAVIGATE_FLAG_START, 1, &tmp_val); -} - -int SSMReadSearchNavigateFlag() -{ - unsigned char tmp_val = 0; - - if (SSMReadNTypes(SSM_RW_SEARCH_NAVIGATE_FLAG_START, 1, &tmp_val) < 0) { - return 0; - } - - return tmp_val; -} - -int SSMSaveInputNumLimit(int rw_val) -{ - unsigned char tmp_val = rw_val; - - return SSMWriteNTypes(SSM_RW_INPUT_NUMBER_LIMIT_START, 1, &tmp_val); -} - -int SSMReadInputNumLimit() -{ - unsigned char tmp_val = 0; - - if (SSMReadNTypes(SSM_RW_INPUT_NUMBER_LIMIT_START, 1, &tmp_val) < 0) { - return 0; - } - - return tmp_val; -} - -int SSMSaveLocalDimingOnOffFlg(int rw_val) -{ - unsigned char tmp_val = rw_val; - - return SSMWriteNTypes(SSM_RW_LOCAL_DIMING_START, 1, &tmp_val); -} - -int SSMReadLocalDimingOnOffFlg() -{ - unsigned char tmp_val = 0; - - if (SSMReadNTypes(SSM_RW_LOCAL_DIMING_START, 1, &tmp_val) < 0) { - return 0; - } - - return tmp_val; -} - -int SSMSaveVDac2DValue(unsigned short rw_val) -{ - return SSMWriteNTypes(SSM_RW_VDAC_2D_START, 1, &rw_val); -} - -int SSMReadVDac2DValue() -{ - unsigned short tmp_val = 0; - - if (SSMReadNTypes(SSM_RW_VDAC_2D_START, 1, &tmp_val) < 0) { - return 0; - } - - return tmp_val; -} - -int SSMSaveVDac3DValue(unsigned short rw_val) -{ - return SSMWriteNTypes(SSM_RW_VDAC_3D_START, 1, &rw_val); -} - -int SSMReadVDac3DValue() -{ - unsigned short tmp_val = 0; - - if (SSMReadNTypes(SSM_RW_VDAC_3D_START, 1, &tmp_val) < 0) { - return 0; - } - - return tmp_val; -} - -int SSMSaveChromaStatus(int mode) -{ - int fd = -1, ret = -1; - char value[20] = ""; - - sprintf(value, "%d", mode); - - fd = open("/sys/class/tvafe/tvafe0/cvd_reg8a", O_RDWR); - - if (fd < 0) { - LOGE("open /sys/class/tvafe/tvafe0/cvd_reg8a ERROR(%s)!!\n", - strerror(errno)); - return -1; - } - - ret = write(fd, value, strlen(value)); - - close(fd); - - return ret; -} - -int SSMSaveNonStandardValue(unsigned short rw_val) -{ - int i = 0, tmp_ret = 0; - unsigned char data[] = { 0, 0 }; - - { - data[0] = (unsigned char) rw_val; - rw_val >>= 8; - data[1] = (unsigned char) rw_val; - } - - LOGD("%s, save NonStandard_value = %d", CFG_SECTION_TV, rw_val); - - return SSMWriteNTypes(SSM_RW_NON_STANDARD_START, 2, data); -} - -int SSMReadNonStandardValue(void) -{ - int i = 0, value = 0; - int data[] = { 0, 0 }; - - if (SSMReadNTypes(SSM_RW_NON_STANDARD_START, 2, data) < 0) { - LOGE("%s, read NonStandard_value error.", CFG_SECTION_TV); - return 0; - } - - { - value += data[1]; - value <<= 8; - value += data[0]; - } - - LOGD("%s, read NonStandard_value = %d.", CFG_SECTION_TV, value); - - return value; -} - -int SSMSaveAdbSwitchValue(int rw_val) -{ - unsigned char tmp_val = rw_val; - - return SSMWriteNTypes(SSM_RW_ADB_SWITCH_START, 1, &tmp_val); -} - -int SSMReadAdbSwitchValue(void) -{ - unsigned char switch_val = 0; - - if (SSMReadNTypes(SSM_RW_ADB_SWITCH_START, 1, &switch_val) < 0) { - LOGD("%s, read switch value error", CFG_SECTION_TV); - return -1; - } - - LOGD("%s, read switch value = %d", CFG_SECTION_TV, switch_val); - - return switch_val; -} - -int SSMSaveSerialCMDSwitchValue(int rw_val) -{ - unsigned char tmp_val = rw_val; - - return SSMWriteNTypes(SSM_RW_SERIAL_CMD_SWITCH_START, 1, &tmp_val); -} - -int SSMReadSerialCMDSwitchValue(void) -{ - unsigned char switch_val = 0; - - if (SSMReadNTypes(SSM_RW_SERIAL_CMD_SWITCH_START, 1, &switch_val) < 0) { - LOGD("%s, read switch value error", CFG_SECTION_TV); - return -1; - } - - LOGD("%s, read switch value = %d", CFG_SECTION_TV, switch_val); - - return switch_val; -} - -int SSMSaveNoiseGateThresholdValue(int rw_val) -{ - unsigned char tmp_val = rw_val; - - return SSMWriteNTypes(SSM_RW_NOISE_GATE_THRESHOLD_START, 1, &tmp_val); -} - -int SSMReadNoiseGateThresholdValue(void) -{ - unsigned char tmp_val = 0; - - if (SSMReadNTypes(SSM_RW_NOISE_GATE_THRESHOLD_START, 1, &tmp_val) < 0) { - LOGD("%s, read NoiseGateThreshold error", CFG_SECTION_TV); - return -1; - } - - LOGD("%s, read NoiseGateThreshold = %d", CFG_SECTION_TV, tmp_val); - - return tmp_val; -} - -int SSMSaveGraphyBacklight(int rw_val) -{ - unsigned char tmp_val = rw_val; - - if (rw_val < 0 || rw_val > 100) { - return -1; - } - - return SSMWriteNTypes(SSM_RW_UI_GRHPHY_BACKLIGHT_START, 1, &tmp_val); -} - -int SSMReadGraphyBacklight(void) -{ - unsigned char value = 0; - - if (SSMReadNTypes(SSM_RW_UI_GRHPHY_BACKLIGHT_START, 1, &value) < 0) { - LOGD("%s, read graphybacklight error.\n", CFG_SECTION_TV); - return -1; - } - - if (/*value < 0 || */value > 100) { - LOGD("%s, range of graphybacklight (%d) is not between 0-100.\n", - CFG_SECTION_TV, value); - return -1; - } - - return value; -} - -int SSMSaveFastSuspendFlag(int rw_val) -{ - unsigned char tmp_val = rw_val; - - return SSMWriteNTypes(SSM_RW_FASTSUSPEND_FLAG_START, 1, &tmp_val); -} - -int SSMReadFastSuspendFlag(void) -{ - unsigned char value = 0; - - if (SSMReadNTypes(SSM_RW_FASTSUSPEND_FLAG_START, 1, &value) < 0) { - LOGD("%s, read FastSuspendFlag error.\n", CFG_SECTION_TV); - return -1; - } - - return value; -} - -int SSMSaveCABufferSizeValue(unsigned short rw_val) -{ - int i = 0, tmp_ret = 0; - unsigned char data[] = { 0, 0 }; - - { - data[0] = (unsigned char) rw_val; - rw_val >>= 8; - data[1] = (unsigned char) rw_val; - } - - return SSMWriteNTypes(SSM_RW_CA_BUFFER_SIZE_START, 2, data); -} - -int SSMReadCABufferSizeValue(void) -{ - int i = 0, value = 0; - unsigned char data[] = { 0, 0 }; - - if (SSMReadNTypes(SSM_RW_CA_BUFFER_SIZE_START, 2, data) < 0) { - LOGE("%s, read ca_buffer_size error", CFG_SECTION_TV); - return 0; - } - - { - value += data[1]; - value <<= 8; - value += data[0]; - } - - return value; -} - -int SSMSaveStandbyMode(int rw_val) -{ - unsigned char tmp_val = rw_val; - - return SSMWriteNTypes(SSM_RW_STANDBY_MODE_FLAG_START, 1, &tmp_val); -} - -int SSMReadStandbyMode() -{ - unsigned char tmp_val = 0; - - if (SSMReadNTypes(SSM_RW_STANDBY_MODE_FLAG_START, 1, &tmp_val) < 0) { - return 0; - } - - return tmp_val; -} - -int SSMSaveHDMIEQMode(int rw_val) -{ - unsigned char tmp_val = rw_val; - - return SSMWriteNTypes(SSM_RW_HDMIEQ_MODE_START, 1, &tmp_val); -} - -int SSMReadHDMIEQMode() -{ - unsigned char tmp_val = 0; - - if (SSMReadNTypes(SSM_RW_HDMIEQ_MODE_START, 1, &tmp_val) < 0) { - return 0; - } - - return tmp_val; -} - -int SSMSaveLogoOnOffFlag(int rw_val) -{ - unsigned char tmp_val = rw_val; - - return SSMWriteNTypes(SSM_RW_LOGO_ON_OFF_FLAG_START, 1, &tmp_val); -} - -int SSMReadLogoOnOffFlag() -{ - unsigned char tmp_val = 0; - - if (SSMReadNTypes(SSM_RW_LOGO_ON_OFF_FLAG_START, 1, &tmp_val) < 0) { - return 0; - } - - return tmp_val; -} - -int SSMSaveHDMIInternalMode(unsigned int rw_val) -{ - int i = 0, tmp_ret = 0; - unsigned char data[] = { 0, 0, 0, 0 }; - - for (i = 3; i >= 0; i--) { - data[i] = (unsigned char) rw_val; - rw_val >>= 8; - } - - return SSMWriteNTypes(SSM_RW_HDMIINTERNAL_MODE_START, 4, data); -} - -int SSMReadHDMIInternalMode() -{ - int i = 0, value = 0; - int data[] = { 0, 0, 0, 0 }; - - if (SSMReadNTypes(SSM_RW_HDMIINTERNAL_MODE_START, 4, data) < 0) { - return 0; - } - - for (i = 0; i < 4; i++) { - value <<= 8; - value += data[i]; - } - - return value; -} - -int SSMSaveParentalControlPassWord(unsigned char *password, int size) -{ - return SSMWriteNTypes(SSM_RW_PARENTAL_CTL_PASSWORD_START, size, password); -} - -int SSMReadParentalControlPassWord(unsigned short *password) -{ - if (SSMReadNTypes(SSM_RW_PARENTAL_CTL_PASSWORD_START, - SSM_RW_PARENTAL_CTL_PASSWORD_LEN, (unsigned char *) password) - < 0) { - return -1; - } - return 0; -} - -int SSMSaveDisable3D(int rw_val) -{ - unsigned char tmp_val = rw_val; - - return SSMWriteNTypes(SSM_RW_DISABLE_3D_START, 1, &tmp_val); -} - -int SSMReadDisable3D() -{ - unsigned char tmp_val = 0; - - if (SSMReadNTypes(SSM_RW_DISABLE_3D_START, 1, &tmp_val) < 0) { - return 0; - } - - if (tmp_val == CBlobDevice::CC_INIT_BYTE_VAL) { - tmp_val = 0; - } - - return tmp_val; -} - -int SSMSaveGlobalOgoEnable(int rw_val) -{ - unsigned char tmp_val = rw_val; - - return SSMWriteNTypes(SSM_RW_GLOBAL_OGO_ENABLE_START, 1, &tmp_val); -} - -int SSMReadGlobalOgoEnable() -{ - unsigned char tmp_val = 0; - - if (SSMReadNTypes(SSM_RW_GLOBAL_OGO_ENABLE_START, 1, &tmp_val) < 0) { - return 0; - } - - if (tmp_val == CBlobDevice::CC_INIT_BYTE_VAL) { - tmp_val = 0; - } - - return tmp_val; -} - -int SSMDeviceMarkCheck() -{ - int i = 0, failed_count = 0; - int mark_offset[3] = { 0, 0, 0 }; - unsigned char mark_values[3] = { 0, 0, 0 }; - unsigned char tmp_ch = 0; - - //read temp one byte - SSMReadNTypes(0, 1, &tmp_ch); - - mark_offset[0] = SSM_MARK_01_START; - mark_offset[1] = SSM_MARK_02_START; - mark_offset[2] = SSM_MARK_03_START; - - mark_values[0] = SSM_MARK_01_VALUE; - mark_values[1] = SSM_MARK_02_VALUE; - mark_values[2] = SSM_MARK_03_VALUE; - - if (SSMReadBurnWriteCharaterChar() != CC_DEF_CHARACTER_CHAR_VAL) { - SSMSaveBurnWriteCharaterChar(CC_DEF_CHARACTER_CHAR_VAL); - } - - failed_count = 0; - for (i = 0; i < 3; i++) { - tmp_ch = 0; - if (SSMReadNTypes(mark_offset[i], 1, &tmp_ch) < 0) { - LOGE("%s, SSMDeviceMarkCheck Read Mark failed!!!\n", CFG_SECTION_TV); - break; - } - - if (tmp_ch != mark_values[i]) { - failed_count += 1; - LOGE( - "%s, SSMDeviceMarkCheck Mark[%d]'s offset = %d, Mark[%d]'s Value = %d, read value = %d.\n", - CFG_SECTION_TV, i, mark_offset[i], i, mark_values[i], tmp_ch); - } - } - - if (failed_count >= 3) { - return -1; - } - - return 0; -} - -int SSMRestoreDeviceMarkValues() -{ - int i; - int mark_offset[3] = { - (int) SSM_MARK_01_START, // - (int) SSM_MARK_02_START, // - (int) SSM_MARK_03_START, // - }; - - unsigned char mark_values[3] = { - // - (unsigned char) SSM_MARK_01_VALUE, (unsigned char) SSM_MARK_02_VALUE, - (unsigned char) SSM_MARK_03_VALUE, // - }; - - for (i = 0; i < 3; i++) { - if (SSMWriteNTypes(mark_offset[i], 1, &(mark_values[i])) < 0) { - LOGD("SSMRestoreDeviceMarkValues Write Mark failed.\n"); - break; - } - } - - if (i < 3) { - return -1; - } - - return 0; -} - -static int SSMGetPreCopyingEnableCfg() -{ - const char *prop_value; - - prop_value = config_get_str(CFG_SECTION_TV, "ssm.precopying.en", "null"); - if (strcmp(prop_value, "null") == 0 || strcmp(prop_value, "0") == 0 - || strcmp(prop_value, "disable") == 0) { - return 0; - } - - return 1; -} - -static int SSMGetPreCopyingDevicePathCfg(char dev_path[]) -{ - const char *prop_value; - - if (dev_path == NULL) { - return -1; - } - - prop_value = config_get_str(CFG_SECTION_TV, "ssm.precopying.devpath", "null"); - if (strcmp(prop_value, "null") == 0) { - return 1; - } - - strcpy(dev_path, prop_value); - - return 0; -} - -static unsigned char gTempDataBuf[4096] = { 0 }; -int SSMHandlePreCopying() -{ - int device_fd = -1; - int i = 0, tmp_size = 0; - unsigned char tmp_ch = 0; - char tmpPreCopyingDevicePath[256] = { '\0' }; - - if (SSMGetPreCopyingEnableCfg() == 0) { - LOGD("%s, Pre copying is disable now.\n", CFG_SECTION_TV); - return 0; - } - - //read temp one byte - SSMReadNTypes(0, 1, &tmp_ch); - - SSMGetPreCopyingDevicePathCfg(tmpPreCopyingDevicePath); - - device_fd = open(tmpPreCopyingDevicePath, O_RDONLY); - if (device_fd < 0) { - LOGE("%s, Open device file \"%s\" error: %s.\n", CFG_SECTION_TV, - tmpPreCopyingDevicePath, strerror(errno)); - return -1; - } - - tmp_size = lseek(device_fd, 0, SEEK_END); - if (tmp_size == 4096) { - lseek(device_fd, 0, SEEK_SET); - read(device_fd, gTempDataBuf, tmp_size); - - SSMWriteNTypes(0, tmp_size, gTempDataBuf); - } - - close(device_fd); - - remove(tmpPreCopyingDevicePath); - - return 0; -} - -int SSMSaveDTVType(int rw_val) -{ - unsigned char tmp_val = rw_val; - - return SSMWriteNTypes(SSM_RW_DTV_TYPE_START, 1, &tmp_val); -} - -int SSMReadDTVType(int *rw_val) -{ - int tmp_ret = 0; - unsigned char tmp_val = 0; - - tmp_ret = SSMReadNTypes(SSM_RW_DTV_TYPE_START, 1, &tmp_val); - *rw_val = tmp_val; - - return tmp_ret; -} - -#ifndef NELEM -# define NELEM(x) ((int) (sizeof(x) / sizeof((x)[0]))) -#endif - -/************************ End APIs For UI ************************/ - -// other api -int GetSSMCfgBufferData(const char *key_str, int *buf_item_count, int radix, - unsigned char data_buf[]) -{ - int cfg_item_count = 0; - char *token = NULL; - const char *strDelimit = ","; - const char *config_value; - char data_str[CC_CFG_VALUE_STR_MAX_LEN] = { 0 }; - - config_value = config_get_str(CFG_SECTION_TV, key_str, "null"); - if (strcasecmp(config_value, "null") == 0) { - LOGE("%s, can't get config \"%s\"!!!\n", CFG_SECTION_TV, key_str); - return -1; - } - - cfg_item_count = 0; - - memset((void *)data_str, 0, sizeof(data_str)); - strncpy(data_str, config_value, sizeof(data_str) - 1); - - char *pSave; - token = strtok_r(data_str, strDelimit, &pSave); - while (token != NULL) { - if (cfg_item_count < *buf_item_count) { - data_buf[cfg_item_count] = strtol(token, NULL, radix); - - token = strtok_r(NULL, strDelimit, &pSave); - cfg_item_count += 1; - } else { - LOGE("%s, we get data count more than desire count (%d)!!!\n", - CFG_SECTION_TV, *buf_item_count); - return -1; - } - } - - *buf_item_count = cfg_item_count; - - return 0; -} - -int SSMSaveSourceInput(unsigned char rw_val) -{ - return SSMWriteNTypes(TVIN_DATA_POS_SOURCE_INPUT_START, 1, &rw_val); -} - -int SSMReadSourceInput() -{ - unsigned char tmp_val = 0; - - if (SSMReadNTypes(TVIN_DATA_POS_SOURCE_INPUT_START, 1, &tmp_val) < 0) { - return 0; - } - if (tmp_val == CBlobDevice::CC_INIT_BYTE_VAL) { - tmp_val = 0; - } - - return tmp_val; -} - -int SSMSaveCVBSStd(unsigned char rw_val) -{ - return SSMWriteNTypes(TVIN_DATA_CVBS_STD_START, 1, &rw_val); -} - -int SSMReadCVBSStd(unsigned char *rw_val) -{ - return SSMReadNTypes(TVIN_DATA_CVBS_STD_START, 1, rw_val); -} - -int SSMSave3DMode(unsigned char rw_val) -{ - return SSMWriteNTypes(TVIN_DATA_POS_3D_MODE_START, 1, &rw_val); -} - -int SSMRead3DMode(unsigned char *rw_val) -{ - return SSMReadNTypes(TVIN_DATA_POS_3D_MODE_START, 1, rw_val); -} - -int SSMSave3DLRSwitch(unsigned char rw_val) -{ - return SSMWriteNTypes(TVIN_DATA_POS_3D_LRSWITCH_START, 1, &rw_val); -} - -int SSMRead3DLRSwitch(unsigned char *rw_val) -{ - return SSMReadNTypes(TVIN_DATA_POS_3D_LRSWITCH_START, 1, rw_val); -} - -int SSMSave3DDepth(unsigned char rw_val) -{ - return SSMWriteNTypes(TVIN_DATA_POS_3D_DEPTH_START, 1, &rw_val); -} - -int SSMRead3DDepth(unsigned char *rw_val) -{ - return SSMReadNTypes(TVIN_DATA_POS_3D_DEPTH_START, 1, rw_val); -} - -int SSMSave3DTO2D(unsigned char rw_val) -{ - return SSMWriteNTypes(TVIN_DATA_POS_3D_TO2D_START, 1, &rw_val); -} - -int SSMRead3DTO2D(unsigned char *rw_val) -{ - return SSMReadNTypes(TVIN_DATA_POS_3D_TO2D_START, 1, rw_val); -} - -int SSMSaveBrightness(int offset, int rw_val) -{ - unsigned char tmp_val = rw_val; - - return SSMWriteNTypes(VPP_DATA_POS_BRIGHTNESS_START + offset, 1, &tmp_val); -} - -int SSMReadBrightness(int offset, int *rw_val) -{ - int tmp_ret = 0; - unsigned char tmp_val = 0; - - tmp_ret = SSMReadNTypes(VPP_DATA_POS_BRIGHTNESS_START + offset, 1, - &tmp_val); - *rw_val = tmp_val; - - return tmp_ret; -} - -int SSMSaveContrast(int offset, int rw_val) -{ - unsigned char tmp_val = rw_val; - - return SSMWriteNTypes(VPP_DATA_POS_CONTRAST_START + offset, 1, &tmp_val); -} - -int SSMReadContrast(int offset, int *rw_val) -{ - int tmp_ret = 0; - unsigned char tmp_val = 0; - - tmp_ret = SSMReadNTypes(VPP_DATA_POS_CONTRAST_START + offset, 1, &tmp_val); - *rw_val = tmp_val; - - return tmp_ret; -} - -int SSMSaveSaturation(int offset, int rw_val) -{ - unsigned char tmp_val = rw_val; - - return SSMWriteNTypes(VPP_DATA_POS_SATURATION_START + offset, 1, &tmp_val); -} - -int SSMReadSaturation(int offset, int *rw_val) -{ - int tmp_ret = 0; - unsigned char tmp_val = 0; - - tmp_ret = SSMReadNTypes(VPP_DATA_POS_SATURATION_START + offset, 1, - &tmp_val); - *rw_val = tmp_val; - - return tmp_ret; -} - -int SSMSaveHue(int offset, int rw_val) -{ - unsigned char tmp_val = rw_val; - - return SSMWriteNTypes(VPP_DATA_POS_HUE_START + offset, 1, &tmp_val); -} - -int SSMReadHue(int offset, int *rw_val) -{ - int tmp_ret = 0; - unsigned char tmp_val = 0; - - tmp_ret = SSMReadNTypes(VPP_DATA_POS_HUE_START + offset, 1, &tmp_val); - *rw_val = tmp_val; - - return tmp_ret; -} - -int SSMSaveSharpness(int offset, int rw_val) -{ - unsigned char tmp_val = rw_val; - - return SSMWriteNTypes(VPP_DATA_POS_SHARPNESS_START + offset, 1, &tmp_val); -} - -int SSMReadSharpness(int offset, int *rw_val) -{ - int tmp_ret = 0; - unsigned char tmp_val = 0; - - tmp_ret = SSMReadNTypes(VPP_DATA_POS_SHARPNESS_START + offset, 1, &tmp_val); - *rw_val = tmp_val; - - return tmp_ret; -} - -int SSMSaveSceneMode(int rw_val) -{ - unsigned char tmp_val = rw_val; - - return SSMWriteNTypes(VPP_DATA_POS_SCENE_MODE_START, 1, &tmp_val); -} - -int SSMReadSceneMode(int *rw_val) -{ - int tmp_ret = 0; - unsigned char tmp_val = 0; - - tmp_ret = SSMReadNTypes(VPP_DATA_POS_SCENE_MODE_START, 1, &tmp_val); - *rw_val = tmp_val; - - return tmp_ret; -} - -int SSMSavePictureMode(int offset, int rw_val) -{ - unsigned char tmp_val = rw_val; - - return SSMWriteNTypes(VPP_DATA_POS_PICTURE_MODE_START + offset, 1, &tmp_val); -} - -int SSMReadPictureMode(int offset, int *rw_val) -{ - int tmp_ret = 0; - unsigned char tmp_val = 0; - - tmp_ret = SSMReadNTypes(VPP_DATA_POS_PICTURE_MODE_START + offset, 1, - &tmp_val); - *rw_val = tmp_val; - - return tmp_ret; -} - -int SSMSaveColorTemperature(int offset, int rw_val) -{ - unsigned char tmp_val = rw_val; - - return SSMWriteNTypes(VPP_DATA_POS_COLOR_TEMP_START + offset, 1, &tmp_val); -} - -int SSMReadColorTemperature(int offset, int *rw_val) -{ - int tmp_ret = 0; - unsigned char tmp_val = 0; - - tmp_ret = SSMReadNTypes(VPP_DATA_POS_COLOR_TEMP_START + offset, 1, - &tmp_val); - *rw_val = tmp_val; - - return tmp_ret; -} - -int SSMSaveNoiseReduction(int offset, int rw_val) -{ - unsigned char tmp_val = rw_val; - - return SSMWriteNTypes(VPP_DATA_POS_NOISE_REDUCTION_START + offset, 1, - &tmp_val); -} - -int SSMReadNoiseReduction(int offset, int *rw_val) -{ - int tmp_ret = 0; - unsigned char tmp_val = 0; - - tmp_ret = SSMReadNTypes(VPP_DATA_POS_NOISE_REDUCTION_START + offset, 1, - &tmp_val); - *rw_val = tmp_val; - - return tmp_ret; -} - -int SSMSaveDisplayMode(int offset, int rw_val) -{ - unsigned char tmp_val = rw_val; - - return SSMWriteNTypes(VPP_DATA_POS_DISPLAY_MODE_START + offset, 1, &tmp_val); -} - -int SSMReadDisplayMode(int offset, int *rw_val) -{ - int tmp_ret = 0; - unsigned char tmp_val = 0; - - tmp_ret = SSMReadNTypes(VPP_DATA_POS_DISPLAY_MODE_START + offset, 1, - &tmp_val); - *rw_val = tmp_val; - - return tmp_ret; -} - -int SSMSaveBackLightVal(int offset, int rw_val) -{ - unsigned char tmp_val = rw_val; - - return SSMWriteNTypes(VPP_DATA_POS_BACKLIGHT_START + offset, 1, &tmp_val); -} - -int SSMReadBackLightVal(int offset, int *rw_val) -{ - int tmp_ret = 0; - unsigned char tmp_val = 0; - - tmp_ret = SSMReadNTypes(VPP_DATA_POS_BACKLIGHT_START + offset, 1, &tmp_val); - *rw_val = tmp_val; - - return tmp_ret; -} - -int SSMSaveFBCN360BackLightVal(int rw_val) -{ - unsigned char tmp_val = rw_val; - - return SSMWriteNTypes(VPP_DATA_POS_FBC_BACKLIGHT_START , 1, &tmp_val); -} - -int SSMReadFBCN360BackLightVal(int *rw_val) -{ - int tmp_ret = 0; - unsigned char tmp_val = 0; - - tmp_ret = SSMReadNTypes(VPP_DATA_POS_FBC_BACKLIGHT_START, 1, &tmp_val); - *rw_val = tmp_val; - - return tmp_ret; -} - -int SSMSaveFBCN360ColorTempVal(int rw_val) -{ - unsigned char tmp_val = rw_val; - - return SSMWriteNTypes(VPP_DATA_POS_FBC_COLORTEMP_START , 1, &tmp_val); -} - -int SSMReadFBCN360ColorTempVal(int *rw_val) -{ - int tmp_ret = 0; - unsigned char tmp_val = 0; - - tmp_ret = SSMReadNTypes(VPP_DATA_POS_FBC_COLORTEMP_START, 1, &tmp_val); - *rw_val = tmp_val; - - return tmp_ret; -} - - -int SSMSaveFBCELECmodeVal(int rw_val) -{ - unsigned char tmp_val = rw_val; - return SSMWriteNTypes(VPP_DATA_POS_FBC_ELECMODE_START , 1, &tmp_val); -} - -int SSMReadFBCELECmodeVal(int *rw_val) -{ - int tmp_ret = 0; - unsigned char tmp_val = 0; - - tmp_ret = SSMReadNTypes(VPP_DATA_POS_FBC_ELECMODE_START, 1, &tmp_val); - *rw_val = tmp_val; - - return tmp_ret; -} - - -int SSMSaveColorDemoMode(unsigned char rw_val) -{ - return SSMWriteNTypes(VPP_DATA_POS_COLOR_DEMO_MODE_START, 1, &rw_val); -} - -int SSMReadColorDemoMode(unsigned char *rw_val) -{ - return SSMReadNTypes(VPP_DATA_POS_COLOR_DEMO_MODE_START, 1, rw_val); -} - -int SSMSaveColorBaseMode(unsigned char rw_val) -{ - return SSMWriteNTypes(VPP_DATA_POS_COLOR_BASE_MODE_START, 1, &rw_val); -} - -int SSMReadColorBaseMode(unsigned char *rw_val) -{ - return SSMReadNTypes(VPP_DATA_POS_COLOR_BASE_MODE_START, 1, rw_val); -} - -int SSMSaveRGBGainRStart(int offset, unsigned int rw_val) -{ - return SSMWriteNTypes(VPP_DATA_POS_RGB_GAIN_R_START + offset, 1, &rw_val); -} - -int SSMReadRGBGainRStart(int offset, unsigned int *rw_val) -{ - return SSMReadNTypes(VPP_DATA_POS_RGB_GAIN_R_START + offset, 1, rw_val); -} - -int SSMSaveRGBGainGStart(int offset, unsigned int rw_val) -{ - return SSMWriteNTypes(VPP_DATA_POS_RGB_GAIN_G_START + offset, 1, &rw_val); -} - -int SSMReadRGBGainGStart(int offset, unsigned int *rw_val) -{ - return SSMReadNTypes(VPP_DATA_POS_RGB_GAIN_G_START + offset, 1, rw_val); -} - -int SSMSaveRGBGainBStart(int offset, unsigned int rw_val) -{ - return SSMWriteNTypes(VPP_DATA_POS_RGB_GAIN_B_START + offset, 1, &rw_val); -} - -int SSMReadRGBGainBStart(int offset, unsigned int *rw_val) -{ - return SSMReadNTypes(VPP_DATA_POS_RGB_GAIN_B_START + offset, 1, rw_val); -} - -int SSMSaveRGBPostOffsetRStart(int offset, int rw_val) -{ - return SSMWriteNTypes(VPP_DATA_POS_RGB_POST_OFFSET_R_START + offset, 1, - &rw_val); -} - -int SSMReadRGBPostOffsetRStart(int offset, int *rw_val) -{ - return SSMReadNTypes(VPP_DATA_POS_RGB_POST_OFFSET_R_START + offset, 1, - rw_val); -} - -int SSMSaveRGBPostOffsetGStart(int offset, int rw_val) -{ - return SSMWriteNTypes(VPP_DATA_POS_RGB_POST_OFFSET_G_START + offset, 1, - &rw_val); -} - -int SSMReadRGBPostOffsetGStart(int offset, int *rw_val) -{ - return SSMReadNTypes(VPP_DATA_POS_RGB_POST_OFFSET_G_START + offset, 1, - rw_val); -} - -int SSMSaveRGBPostOffsetBStart(int offset, int rw_val) -{ - return SSMWriteNTypes(VPP_DATA_POS_RGB_POST_OFFSET_B_START + offset, 1, - &rw_val); -} - -int SSMReadRGBPostOffsetBStart(int offset, int *rw_val) -{ - return SSMReadNTypes(VPP_DATA_POS_RGB_POST_OFFSET_B_START + offset, 1, - rw_val); -} - -int SSMSaveRGBValueStart(int offset, int8_t rw_val) -{ - return SSMWriteNTypes(VPP_DATA_RGB_START + offset, 1, &rw_val); -} - -int SSMReadRGBValueStart(int offset, int8_t *rw_val) -{ - return SSMReadNTypes(VPP_DATA_RGB_START + offset, 1, &rw_val); -} - -int SSMSaveDBCStart(unsigned char rw_val) -{ - return SSMWriteNTypes(VPP_DATA_POS_DBC_START, 1, &rw_val); -} - -int SSMReadDBCStart(unsigned char *rw_val) -{ - return SSMReadNTypes(VPP_DATA_POS_DBC_START, 1, rw_val); -} - -int SSMSaveColorSpaceStart(unsigned char rw_val) -{ - return SSMWriteNTypes(VPP_DATA_COLOR_SPACE_START, 1, &rw_val); -} - -int SSMReadColorSpaceStart(unsigned char *rw_val) -{ - return SSMReadNTypes(VPP_DATA_COLOR_SPACE_START, 1, rw_val); -} - -int SSMSaveDnlpStart(unsigned char rw_val) -{ - return SSMWriteNTypes(VPP_DATA_POS_DNLP_START, 1, &rw_val); -} - -int SSMReadDnlpStart(unsigned char *rw_val) -{ - return SSMReadNTypes(VPP_DATA_POS_DNLP_START, 1, rw_val); -} - -int SSMSavePanoramaStart(int offset, unsigned char rw_val) -{ - return SSMWriteNTypes(VPP_DATA_POS_PANORAMA_START + offset, 1, &rw_val); -} - -int SSMReadPanoramaStart(int offset, unsigned char *rw_val) -{ - return SSMReadNTypes(VPP_DATA_POS_PANORAMA_START + offset, 1, rw_val); -} - -int SSMSaveTestPattern(unsigned char rw_val) -{ - return SSMWriteNTypes(VPP_DATA_POS_TEST_PATTERN_START, 1, &rw_val); -} - -int SSMReadTestPattern(unsigned char *rw_val) -{ - return SSMReadNTypes(VPP_DATA_POS_TEST_PATTERN_START, 1, rw_val); -} - -int SSMSaveAPL(unsigned char rw_val) -{ - return SSMWriteNTypes(VPP_DATA_APL_START, VPP_DATA_APL_SIZE, &rw_val); -} - -int SSMReadAPL(unsigned char *rw_val) -{ - return SSMReadNTypes(VPP_DATA_APL_START, VPP_DATA_APL_SIZE, rw_val); -} - -int SSMSaveAPL2(unsigned char rw_val) -{ - return SSMWriteNTypes(VPP_DATA_APL2_START, VPP_DATA_APL2_SIZE, &rw_val); -} - -int SSMReadAPL2(unsigned char *rw_val) -{ - return SSMReadNTypes(VPP_DATA_APL2_START, VPP_DATA_APL2_SIZE, rw_val); -} - -int SSMSaveBD(unsigned char rw_val) -{ - return SSMWriteNTypes(VPP_DATA_BD_START, VPP_DATA_BD_SIZE, &rw_val); -} - -int SSMReadBD(unsigned char *rw_val) -{ - return SSMReadNTypes(VPP_DATA_BD_START, VPP_DATA_BD_SIZE, rw_val); -} - -int SSMSaveBP(unsigned char rw_val) -{ - return SSMWriteNTypes(VPP_DATA_BP_START, VPP_DATA_BP_SIZE, &rw_val); -} - -int SSMReadBP(unsigned char *rw_val) -{ - return SSMReadNTypes(VPP_DATA_BP_START, VPP_DATA_BP_SIZE, rw_val); -} - -int SSMSaveDDRSSC(unsigned char rw_val) -{ - return SSMWriteNTypes(VPP_DATA_POS_DDR_SSC_START, 1, &rw_val); -} - -int SSMReadDDRSSC(unsigned char *rw_val) -{ - return SSMReadNTypes(VPP_DATA_POS_DDR_SSC_START, 1, rw_val); -} - -int SSMSaveLVDSSSC(unsigned char *rw_val) -{ - return SSMWriteNTypes(VPP_DATA_POS_LVDS_SSC_START, 2, rw_val); -} - -int SSMReadLVDSSSC(unsigned char *rw_val) -{ - return SSMReadNTypes(VPP_DATA_POS_LVDS_SSC_START, 2, rw_val); -} - -int SSMSaveDreamPanel(unsigned char rw_val) -{ - return SSMWriteNTypes(VPP_DATA_POS_DREAM_PANEL_START, 1, &rw_val); -} - -int SSMReadDreamPanel(unsigned char *rw_val) -{ - return SSMReadNTypes(VPP_DATA_POS_DREAM_PANEL_START, 1, rw_val); -} - -int SSMSaveUserNatureLightSwitch(unsigned char rw_val) -{ - return SSMWriteNTypes(VPP_DATA_USER_NATURE_SWITCH_START, 1, &rw_val); -} - -int SSMReadUserNatureLightSwitch(unsigned char *rw_val) -{ - return SSMReadNTypes(VPP_DATA_USER_NATURE_SWITCH_START, 1, rw_val); -} - -int SSMSaveDBCBacklightEnable(unsigned char rw_val) -{ - return SSMWriteNTypes(VPP_DATA_DBC_BACKLIGHT_START, 1, &rw_val); -} - -int SSMReadDBCBacklightEnable(unsigned char *rw_val) -{ - return SSMReadNTypes(VPP_DATA_DBC_BACKLIGHT_START, 1, rw_val); -} - -int SSMSaveDBCBacklightStd(unsigned char rw_val) -{ - return SSMWriteNTypes(VPP_DATA_DBC_STANDARD_START, 1, &rw_val); -} - -int SSMReadDBCBacklightStd(unsigned char *rw_val) -{ - return SSMReadNTypes(VPP_DATA_DBC_STANDARD_START, 1, rw_val); -} - -int SSMSaveDBCEnable(unsigned char rw_val) -{ - return SSMWriteNTypes(VPP_DATA_DBC_ENABLE_START, 1, &rw_val); -} - -int SSMReadDBCEnable(unsigned char *rw_val) -{ - return SSMReadNTypes(VPP_DATA_DBC_ENABLE_START, 1, rw_val); -} - -int SSMSaveGammaValue(int rw_val) -{ - unsigned char tmp_val = rw_val; - - return SSMWriteNTypes(VPP_DATA_GAMMA_VALUE_START, 1, &tmp_val); -} - -int SSMReadGammaValue(int *rw_val) -{ - int tmp_ret = 0; - unsigned char tmp_val = 0; - - tmp_ret = SSMReadNTypes(VPP_DATA_GAMMA_VALUE_START, 1, &tmp_val); - *rw_val = tmp_val; - - return tmp_ret; -} - -int SSMSaveBackLightReverse(unsigned char rw_val) -{ - return SSMWriteNTypes(VPP_DATA_POS_BACKLIGHT_REVERSE_START, 1, &rw_val); -} - -int SSMReadBackLightReverse(unsigned char *rw_val) -{ - return SSMReadNTypes(VPP_DATA_POS_BACKLIGHT_REVERSE_START, 1, rw_val); -} - -int SSMSaveAudioMasterVolume(int8_t rw_val) -{ - return SSMWriteNTypes(SSM_AUD_MASTR_VOLUME_VAL, 1, &rw_val); -} - -int SSMReadAudioMasterVolume(int8_t *rw_val) -{ - return SSMReadNTypes(SSM_AUD_MASTR_VOLUME_VAL, 1, rw_val); -} - -int SSMSaveAudioBalanceVal(int8_t rw_val) -{ - return SSMWriteNTypes(SSM_AUD_BALANCE_VAL, 1, &rw_val); -} - -int SSMReadAudioBalanceVal(int8_t *rw_val) -{ - return SSMReadNTypes(SSM_AUD_BALANCE_VAL, 1, rw_val); -} - -int SSMSaveAudioSupperBassVolume(int8_t rw_val) -{ - return SSMWriteNTypes(SSM_AUD_SUPPERBASS_VOLUME_VAL, 1, &rw_val); -} - -int SSMReadAudioSupperBassVolume(int8_t *rw_val) -{ - return SSMReadNTypes(SSM_AUD_SUPPERBASS_VOLUME_VAL, 1, rw_val); -} - -int SSMSaveAudioSupperBassSwitch(int8_t rw_val) -{ - return SSMWriteNTypes(SSM_AUD_SUPPERBASS_SWITCH, 1, &rw_val); -} - -int SSMReadAudioSupperBassSwitch(int8_t *rw_val) -{ - return SSMReadNTypes(SSM_AUD_SUPPERBASS_SWITCH, 1, rw_val); -} - -int SSMSaveAudioSRSSurroundSwitch(int8_t rw_val) -{ - return SSMWriteNTypes(SSM_AUD_SRS_SURROUND_SWITCH, 1, &rw_val); -} - -int SSMReadAudioSRSSurroundSwitch(int8_t *rw_val) -{ - return SSMReadNTypes(SSM_AUD_SRS_SURROUND_SWITCH, 1, rw_val); -} - -int SSMSaveAudioSRSDialogClaritySwitch(int8_t rw_val) -{ - return SSMWriteNTypes(SSM_AUD_SRS_DIALOG_CLARITY_SWITCH, 1, &rw_val); -} - -int SSMSaveAudioDbxTvValue(int son_value, int vol_value, int sur_value) -{ - int8_t rw_val = son_value; - SSMWriteNTypes(SSM_AUD_DBX_TV_SON, 1, &rw_val); - rw_val = vol_value; - SSMWriteNTypes(SSM_AUD_DBX_TV_VAL, 1, &rw_val); - rw_val = sur_value; - SSMWriteNTypes(SSM_AUD_DBX_TV_SUR, 1, &rw_val); - return 0; -} - -int SSMReadAudioDbxTvValue(int *son_value, int *vol_value, int *sur_value) -{ - unsigned char rw_val; - SSMReadNTypes(SSM_AUD_DBX_TV_SON, 1, &rw_val); - *son_value = rw_val; - SSMReadNTypes(SSM_AUD_DBX_TV_VAL, 1, &rw_val); - *vol_value = rw_val; - SSMReadNTypes(SSM_AUD_DBX_TV_SUR, 1, &rw_val); - *sur_value = rw_val; - return 0; -} - -int SSMReadAudioSRSDialogClaritySwitch(int8_t *rw_val) -{ - return SSMReadNTypes(SSM_AUD_SRS_DIALOG_CLARITY_SWITCH, 1, rw_val); -} - -int SSMSaveAudioSRSTruBassSwitch(int8_t rw_val) -{ - return SSMWriteNTypes(SSM_AUD_SRS_TRUEBASS_SWITCH, 1, &rw_val); -} - -int SSMReadAudioSRSTruBassSwitch(int8_t *rw_val) -{ - return SSMReadNTypes(SSM_AUD_SRS_TRUEBASS_SWITCH, 1, rw_val); -} - -int SSMSaveAudioBassVolume(int8_t rw_val) -{ - return SSMWriteNTypes(SSM_AUD_BASS_VOLUME_VAL, 1, &rw_val); -} - -int SSMReadAudioBassVolume(int8_t *rw_val) -{ - return SSMReadNTypes(SSM_AUD_BASS_VOLUME_VAL, 1, rw_val); -} - -int SSMSaveAudioTrebleVolume(int8_t rw_val) -{ - return SSMWriteNTypes(SSM_AUD_TREBLE_VOLUME_VAL, 1, &rw_val); -} - -int SSMReadAudioTrebleVolume(int8_t *rw_val) -{ - return SSMReadNTypes(SSM_AUD_TREBLE_VOLUME_VAL, 1, rw_val); -} - -int SSMSaveAudioSoundModeVal(int8_t rw_val) -{ - return SSMWriteNTypes(SSM_AUD_SOUND_MODE_VAL, 1, &rw_val); -} - -int SSMReadAudioSoundModeVal(int8_t *rw_val) -{ - return SSMReadNTypes(SSM_AUD_SOUND_MODE_VAL, 1, rw_val); -} - -int SSMSaveAudioWallEffectSwitch(int8_t rw_val) -{ - return SSMWriteNTypes(SSM_AUD_WALL_EFFCT_SWITCH, 1, &rw_val); -} - -int SSMReadAudioWallEffectSwitch(int8_t *rw_val) -{ - return SSMReadNTypes(SSM_AUD_WALL_EFFCT_SWITCH, 1, rw_val); -} - -int SSMSaveAudioSPDIFSwitchVal(int8_t rw_val) -{ - return SSMWriteNTypes(SSM_AUD_SPDIF_SWITCH, 1, &rw_val); -} - -int SSMReadAudioSPDIFSwitchVal(int8_t *rw_val) -{ - return SSMReadNTypes(SSM_AUD_SPDIF_SWITCH, 1, rw_val); -} - -int SSMSaveAudioSPDIFModeVal(int8_t rw_val) -{ - return SSMWriteNTypes(SSM_AUD_SPDIF_MODE_VAL, 1, &rw_val); -} - -int SSMReadAudioSPDIFModeVal(int8_t *rw_val) -{ - return SSMReadNTypes(SSM_AUD_SPDIF_MODE_VAL, 1, rw_val); -} - -int SSMSaveAudioEQModeVal(int8_t rw_val) -{ - return SSMWriteNTypes(SSM_AUD_EQ_MODE_VAL, 1, &rw_val); -} - -int SSMReadAudioEQModeVal(int8_t *rw_val) -{ - return SSMReadNTypes(SSM_AUD_EQ_MODE_VAL, 1, rw_val); -} - -int SSMSaveAudioEQGain(int offset, int size, int8_t tmp_buf[]) -{ - return SSMWriteNTypes(SSM_AUD_EQ_GAIN + offset, size, tmp_buf); -} - -int SSMReadAudioEQGain(int offset __unused, int size, int8_t tmp_buf[]) -{ - return SSMReadNTypes(SSM_AUD_EQ_GAIN, size, tmp_buf); -} - -int SSMSaveAudioAVOutMuteVal(int8_t rw_val) -{ - return SSMWriteNTypes(SSM_AUD_AVOUT_MUTE, 1, &rw_val); -} - -int SSMReadAudioAVOutMuteVal(int8_t *rw_val) -{ - return SSMReadNTypes(SSM_AUD_AVOUT_MUTE, 1, rw_val); -} - -int SSMSaveAudioSPIDFMuteVal(int8_t rw_val) -{ - return SSMWriteNTypes(SSM_AUD_SPIDF_MUTE, 1, &rw_val); -} - -int SSMReadAudioSPIDFMuteVal(int8_t *rw_val) -{ - return SSMReadNTypes(SSM_AUD_SPIDF_MUTE, 1, rw_val); -} -int SSMSaveBlackoutEnable(int8_t enable) -{ - return SSMWriteNTypes(SSM_RW_BLACKOUT_ENABLE_START, 1, &enable); -} - -int SSMReadBlackoutEnable(int8_t *enable) -{ - return SSMReadNTypes(SSM_RW_BLACKOUT_ENABLE_START, 1, enable); -} -int SSMSaveFBCN310BackLightVal(int rw_val) -{ - unsigned char tmp_val = rw_val; - - return SSMWriteNTypes(VPP_DATA_POS_FBC_N310_BACKLIGHT_START , 1, &tmp_val); -} - -int SSMReadFBCN310BackLightVal(int *rw_val) -{ - int tmp_ret = 0; - unsigned char tmp_val = 0; - - tmp_ret = SSMReadNTypes(VPP_DATA_POS_FBC_N310_BACKLIGHT_START, 1, &tmp_val); - *rw_val = tmp_val; - - return tmp_ret; -} - -int SSMSaveFBCN310ColorTempVal(int rw_val) -{ - unsigned char tmp_val = rw_val; - - return SSMWriteNTypes(VPP_DATA_POS_FBC_N310_COLORTEMP_START , 1, &tmp_val); -} - -int SSMReadFBCN310ColorTempVal(int *rw_val) -{ - int tmp_ret = 0; - unsigned char tmp_val = 0; - - tmp_ret = SSMReadNTypes(VPP_DATA_POS_FBC_N310_COLORTEMP_START, 1, &tmp_val); - *rw_val = tmp_val; - - return tmp_ret; -} - -int SSMSaveFBCN310LightsensorVal(int rw_val) -{ - unsigned char tmp_val = rw_val; - - return SSMWriteNTypes(VPP_DATA_POS_FBC_N310_LIGHTSENSOR_START , 1, &tmp_val); -} - -int SSMReadFBCN310LightsensorVal(int *rw_val) -{ - int tmp_ret = 0; - unsigned char tmp_val = 0; - - tmp_ret = SSMReadNTypes(VPP_DATA_POS_FBC_N310_LIGHTSENSOR_START, 1, &tmp_val); - *rw_val = tmp_val; - - return tmp_ret; -} - -int SSMSaveFBCN310Dream_PanelVal(int rw_val) -{ - unsigned char tmp_val = rw_val; - - return SSMWriteNTypes(VPP_DATA_POS_FBC_N310_DREAMPANEL_START , 1, &tmp_val); -} - -int SSMReadFBCN310Dream_PanelVal(int *rw_val) -{ - int tmp_ret = 0; - unsigned char tmp_val = 0; - - tmp_ret = SSMReadNTypes(VPP_DATA_POS_FBC_N310_DREAMPANEL_START, 1, &tmp_val); - *rw_val = tmp_val; - - return tmp_ret; -} - -int SSMSaveFBCN310MULT_PQVal(int rw_val) -{ - unsigned char tmp_val = rw_val; - - return SSMWriteNTypes(VPP_DATA_POS_FBC_N310_MULTI_PQ_START , 1, &tmp_val); -} - -int SSMReadFBCN310MULT_PQVal(int *rw_val) -{ - int tmp_ret = 0; - unsigned char tmp_val = 0; - - tmp_ret = SSMReadNTypes(VPP_DATA_POS_FBC_N310_MULTI_PQ_START, 1, &tmp_val); - *rw_val = tmp_val; - - return tmp_ret; -} - -int SSMSaveFBCN310MEMCVal(int rw_val) -{ - unsigned char tmp_val = rw_val; - - return SSMWriteNTypes(VPP_DATA_POS_FBC_N310_MEMC_START , 1, &tmp_val); -} - -int SSMReadFBCN310MEMCVal(int *rw_val) -{ - int tmp_ret = 0; - unsigned char tmp_val = 0; - - tmp_ret = SSMReadNTypes(VPP_DATA_POS_FBC_N310_MEMC_START, 1, &tmp_val); - *rw_val = tmp_val; - - return tmp_ret; -} - -int SSMSaveN311_VbyOne_Spread_Spectrum_Val(int rw_val) -{ - unsigned char tmp_val = rw_val; - - return SSMWriteNTypes(VPP_DATA_POS_N311_VBYONE_SPREAD_SPECTRUM_START , 1, &tmp_val); -} - -int SSMReadN311_VbyOne_Spread_Spectrum_Val(int *rw_val) -{ - int tmp_ret = 0; - unsigned char tmp_val = 0; - - tmp_ret = SSMReadNTypes(VPP_DATA_POS_N311_VBYONE_SPREAD_SPECTRUM_START, 1, &tmp_val); - *rw_val = tmp_val; - - return tmp_ret; -} -int SSMSaveN311_Bluetooth_Vol(int rw_val) -{ - unsigned char tmp_val = rw_val; - - return SSMWriteNTypes(VPP_DATA_POS_N311_BLUETOOTH_VAL_START , 1, &tmp_val); -} - -int SSMReadN311_Bluetooth_Vol(void) -{ - int tmp_ret = 0; - unsigned char tmp_val = 0; - - tmp_ret = SSMReadNTypes(VPP_DATA_POS_N311_BLUETOOTH_VAL_START, 1, &tmp_val); - - if (tmp_ret < 0) { - return 0; - } - - return tmp_val; -} -int SSMSave_DRC_ONOFF_Val(int rw_val) -{ - unsigned char tmp_val = rw_val; - - return SSMWriteNTypes(SSM_AUD_DRC_ONOFF , 1, &tmp_val); - -} -int SSMRead_DRC_ONOFF_Val(void) -{ - unsigned char tmp_val = 0; - int tmp_ret = 0; - - tmp_ret = SSMReadNTypes(SSM_AUD_DRC_ONOFF, 1, &tmp_val); - - if (tmp_ret < 0) { - return 0; - } - - return tmp_val; - -} - -int SSMSave_PANEL_ID_Val(int rw_val) -{ - unsigned char tmp_val = rw_val; - return SSMWriteNTypes(SSM_RW_PANEL_ID_START , 1, &tmp_val); -} -int SSMRead_PANEL_ID_Val(void) -{ - unsigned char tmp_val = 0; - int tmp_ret = 0; - tmp_ret = SSMReadNTypes(SSM_RW_PANEL_ID_START, 1, &tmp_val); - if (tmp_ret < 0) { - return 0; - } - return tmp_val; -} diff --git a/tvapi/libtv/tvsetting/CTvSetting.h b/tvapi/libtv/tvsetting/CTvSetting.h deleted file mode 100644 index b657426..0000000 --- a/tvapi/libtv/tvsetting/CTvSetting.h +++ b/dev/null @@ -1,277 +0,0 @@ -#ifndef __TV_SETTING_H__ -#define __TV_SETTING_H__ - -#include <pthread.h> -#include <stdint.h> - -#include "CTvSettingCfg.h" -#include "CTvSettingDeviceFactory.h" -#include "TvKeyData.h" -#include "../tv/CTvLog.h" - -using namespace android; - -#ifdef __cplusplus -extern "C" { -#endif - -bool CTvSettingLoad(); -bool CTvSettingunLoad(); - -int CTvSettingdoSuspend(); -int CTvSettingdoResume(); -int MiscSSMRestoreDefault(); -int MiscSSMFacRestoreDefault(); -int ReservedSSMRestoreDefault(); - -int SSMSaveEEP_One_N310_N311(int offset, int rw_val) ; -int SSMReadEEP_One_N310_N311(int offset); -int SSMSaveEEP_N_N310_N311(int offset, int data_len, int *data_buf); -int SSMReadEEP_N_N310_N311(int offset, int data_len, int *data_buf); -//int EEPWriteNByte(int offset, int data_len, unsigned char * data_buf); -//int EEPReadNByte(int offset, int data_len, unsigned char * data_buf); -int SSMSaveFlash_One_N310_N311(int offset, int rw_val); -int SSMReadFlash_One_N310_N311(int offset); -int SSMSaveFlash_N_N310_N311(int offset, int data_len, int *data_buf); -int SSMReadFlash_N_N310_N311(int offset, int data_len, int *data_buf); - -int SSMSaveBurnWriteCharaterChar(int rw_val); -int SSMReadBurnWriteCharaterChar(); -int SSMSaveFactoryBurnMode(int rw_val); -int SSMReadFactoryBurnMode(); -int SSMSavePowerOnOffChannel(int rw_val); -int SSMReadPowerOnOffChannel(); -int SSMSaveLastSelectSourceInput(int rw_val); -int SSMReadLastSelectSourceInput(); -int SSMSaveSystemLanguage(int rw_val); -int SSMReadSystemLanguage(); -int SSMSaveAgingMode(int rw_val); -int SSMReadAgingMode(); -int SSMSavePanelType(int rw_val); -int SSMReadPanelType(); -int SSMSavePowerOnMusicSwitch(int rw_val); -int SSMReadPowerOnMusicSwitch(); -int SSMSavePowerOnMusicVolume(int rw_val); -int SSMReadPowerOnMusicVolume(); -int SSMSaveSystemSleepTimer(int rw_val); -int SSMReadSystemSleepTimer(); -int SSMSaveInputSourceParentalControl(int source_index, unsigned char ctl_flag); -int SSMReadInputSourceParentalControl(int source_index); -int SSMSaveParentalControlSwitch(int rw_val); -int SSMReadParentalControlSwitch(); -int SSMGetCustomerDataStart(); -int SSMGetCustomerDataLen(); -int SSMGetATVDataStart(); -int SSMGetATVDataLen(); -int SSMGetVPPDataStart(); -int SSMGetVPPDataLen(); -int SSMSaveSearchNavigateFlag(int rw_val); -int SSMReadSearchNavigateFlag(); -int SSMSaveInputNumLimit(int rw_val); -int SSMReadInputNumLimit(); -int SSMSaveLocalDimingOnOffFlg(int rw_val); -int SSMReadLocalDimingOnOffFlg(); -int SSMSaveVDac2DValue(unsigned short rw_val); -int SSMReadVDac2DValue(); -int SSMSaveVDac3DValue(unsigned short rw_val); -int SSMReadVDac3DValue(); -int SSMSaveChromaStatus(int mode); -int SSMSaveNonStandardValue(unsigned short rw_val); -int SSMReadNonStandardValue(void); -int SSMSaveAdbSwitchValue(int rw_val); -int SSMReadAdbSwitchValue(void); -int SSMSaveSerialCMDSwitchValue(int rw_val); -int SSMReadSerialCMDSwitchValue(void); -int SSMSaveNoiseGateThresholdValue(int rw_val); -int SSMReadNoiseGateThresholdValue(void); -int SSMSaveGraphyBacklight(int rw_val); -int SSMReadGraphyBacklight(void); -int SSMSaveFastSuspendFlag(int rw_val); -int SSMReadFastSuspendFlag(void); -int SSMSaveCABufferSizeValue(unsigned short rw_val); -int SSMReadCABufferSizeValue(void); -int SSMSaveStandbyMode(int rw_val); -int SSMReadStandbyMode(); -int SSMSaveHDMIEQMode(int rw_val); -int SSMReadHDMIEQMode(); -int SSMSaveLogoOnOffFlag(int rw_val); -int SSMReadLogoOnOffFlag(); -int SSMSaveHDMIInternalMode(unsigned int rw_val); -int SSMReadHDMIInternalMode(); -int SSMSaveParentalControlPassWord(unsigned char *password, int size); -int SSMReadParentalControlPassWord(unsigned short *password); -int SSMSaveDisable3D(int rw_val); -int SSMReadDisable3D(); -int SSMSaveGlobalOgoEnable(int rw_val); -int SSMReadGlobalOgoEnable(); -int SSMDeviceMarkCheck(); -int SSMRestoreDeviceMarkValues(); -int SSMHandlePreCopying(); -int SSMSaveDTVType(int rw_val); -int SSMReadDTVType(int *rw_val); - -int GetSSMCfgBufferData(const char *key_str, int *buf_item_count, int radix, unsigned char data_buf[]); - -int SSMSaveSourceInput(unsigned char rw_val); -int SSMReadSourceInput(); -int SSMSaveCVBSStd(unsigned char rw_val); -int SSMReadCVBSStd(unsigned char *rw_val); -int SSMSave3DMode(unsigned char rw_val); -int SSMRead3DMode(unsigned char *rw_val); -int SSMSave3DLRSwitch(unsigned char rw_val); -int SSMRead3DLRSwitch(unsigned char *rw_val); -int SSMSave3DDepth(unsigned char rw_val); -int SSMRead3DDepth(unsigned char *rw_val); -int SSMSave3DTO2D(unsigned char rw_val); -int SSMRead3DTO2D(unsigned char *rw_val); -int SSMSaveBrightness(int offset, int rw_val); -int SSMReadBrightness(int offset, int *rw_val); -int SSMSaveContrast(int offset, int rw_val); -int SSMReadContrast(int offset, int *rw_val); -int SSMSaveSaturation(int offset, int rw_val); -int SSMReadSaturation(int offset, int *rw_val); -int SSMSaveHue(int offset, int rw_val); -int SSMReadHue(int offset, int *rw_val); -int SSMSaveSharpness(int offset, int rw_val); -int SSMReadSharpness(int offset, int *rw_val); -int SSMSaveSceneMode(int rw_val); -int SSMReadSceneMode(int *rw_val); -int SSMSavePictureMode(int offset, int rw_val); -int SSMReadPictureMode(int offset, int *rw_val); -int SSMSaveColorTemperature(int offset, int rw_val); -int SSMReadColorTemperature(int offset, int *rw_val); -int SSMSaveNoiseReduction(int offset, int rw_val); -int SSMReadNoiseReduction(int offset, int *rw_val); -int SSMSaveDisplayMode(int offset, int rw_val); -int SSMReadDisplayMode(int offset, int *rw_val); -int SSMSaveBackLightVal(int offset, int rw_val); -int SSMReadBackLightVal(int offset, int *rw_val); - -int SSMReadFBCN360BackLightVal(int *rw_val); -int SSMSaveFBCN360BackLightVal(int rw_val); -int SSMSaveFBCELECmodeVal(int rw_val); -int SSMReadFBCELECmodeVal(int *rw_val); -int SSMSaveFBCN360ColorTempVal(int rw_val); -int SSMReadFBCN360ColorTempVal(int *rw_val); - - - -int SSMSaveColorDemoMode(unsigned char rw_val); -int SSMReadColorDemoMode(unsigned char *rw_val); -int SSMSaveColorBaseMode(unsigned char rw_val); -int SSMReadColorBaseMode(unsigned char *rw_val); -int SSMSaveRGBGainRStart(int offset, unsigned int rw_val); -int SSMReadRGBGainRStart(int offset, unsigned int *rw_val); -int SSMSaveRGBGainGStart(int offset, unsigned int rw_val); -int SSMReadRGBGainGStart(int offset, unsigned int *rw_val); -int SSMSaveRGBGainBStart(int offset, unsigned int rw_val); -int SSMReadRGBGainBStart(int offset, unsigned int *rw_val); -int SSMSaveRGBPostOffsetRStart(int offset, int rw_val); -int SSMReadRGBPostOffsetRStart(int offset, int *rw_val); -int SSMSaveRGBPostOffsetGStart(int offset, int rw_val); -int SSMReadRGBPostOffsetGStart(int offset, int *rw_val); -int SSMSaveRGBPostOffsetBStart(int offset, int rw_val); -int SSMReadRGBPostOffsetBStart(int offset, int *rw_val); -int SSMSaveRGBValueStart(int offset, int8_t rw_val); -int SSMReadRGBValueStart(int offset, int8_t *rw_val); -int SSMSaveDBCStart(unsigned char rw_val); -int SSMReadDBCStart(unsigned char *rw_val); -int SSMSaveColorSpaceStart(unsigned char rw_val); -int SSMReadColorSpaceStart(unsigned char *rw_val); -int SSMSaveDnlpStart(unsigned char rw_val); -int SSMReadDnlpStart(unsigned char *rw_val); -int SSMSavePanoramaStart(int offset, unsigned char rw_val); -int SSMReadPanoramaStart(int offset, unsigned char *rw_val); -int SSMSaveTestPattern(unsigned char rw_val); -int SSMReadTestPattern(unsigned char *rw_val); -int SSMSaveAPL(unsigned char rw_val); -int SSMReadAPL(unsigned char *rw_val); -int SSMSaveAPL2(unsigned char rw_val); -int SSMReadAPL2(unsigned char *rw_val); -int SSMSaveBD(unsigned char rw_val); -int SSMReadBD(unsigned char *rw_val); -int SSMSaveBP(unsigned char rw_val); -int SSMReadBP(unsigned char *rw_val); -int SSMSaveDDRSSC(unsigned char rw_val); -int SSMReadDDRSSC(unsigned char *rw_val); -int SSMSaveLVDSSSC(unsigned char *rw_val); -int SSMReadLVDSSSC(unsigned char *rw_val); -int SSMSaveDreamPanel(unsigned char rw_val); -int SSMReadDreamPanel(unsigned char *rw_val); -int SSMSaveUserNatureLightSwitch(unsigned char rw_val); -int SSMReadUserNatureLightSwitch(unsigned char *rw_val); -int SSMSaveDBCBacklightEnable(unsigned char rw_val); -int SSMReadDBCBacklightEnable(unsigned char *rw_val); -int SSMSaveDBCBacklightStd(unsigned char rw_val); -int SSMReadDBCBacklightStd(unsigned char *rw_val); -int SSMSaveDBCEnable(unsigned char rw_val); -int SSMReadDBCEnable(unsigned char *rw_val); -int SSMSaveGammaValue(int rw_val); -int SSMReadGammaValue(int *rw_val); -int SSMSaveBackLightReverse(unsigned char rw_val); -int SSMReadBackLightReverse(unsigned char *rw_val); - -int SSMSaveAudioMasterVolume(int8_t rw_val); -int SSMReadAudioMasterVolume(int8_t *rw_val); -int SSMSaveAudioBalanceVal(int8_t rw_val); -int SSMReadAudioBalanceVal(int8_t *rw_val); -int SSMSaveAudioSupperBassVolume(int8_t rw_val); -int SSMReadAudioSupperBassVolume(int8_t *rw_val); -int SSMSaveAudioSupperBassSwitch(int8_t rw_val); -int SSMReadAudioSupperBassSwitch(int8_t *rw_val); -int SSMSaveAudioSRSSurroundSwitch(int8_t rw_val); -int SSMReadAudioSRSSurroundSwitch(int8_t *rw_val); -int SSMSaveAudioSRSDialogClaritySwitch(int8_t rw_val); -int SSMReadAudioSRSDialogClaritySwitch(int8_t *rw_val); -int SSMSaveAudioSRSTruBassSwitch(int8_t rw_val); -int SSMReadAudioSRSTruBassSwitch(int8_t *rw_val); -int SSMSaveAudioBassVolume(int8_t rw_val); -int SSMReadAudioBassVolume(int8_t *rw_val); -int SSMSaveAudioTrebleVolume(int8_t rw_val); -int SSMReadAudioTrebleVolume(int8_t *rw_val); -int SSMSaveAudioSoundModeVal(int8_t rw_val); -int SSMReadAudioSoundModeVal(int8_t *rw_val); -int SSMSaveAudioWallEffectSwitch(int8_t rw_val); -int SSMReadAudioWallEffectSwitch(int8_t *rw_val); -int SSMSaveAudioSPDIFSwitchVal(int8_t rw_val); -int SSMReadAudioSPDIFSwitchVal(int8_t *rw_val); -int SSMSaveAudioSPDIFModeVal(int8_t rw_val); -int SSMReadAudioSPDIFModeVal(int8_t *rw_val); -int SSMSaveAudioEQModeVal(int8_t rw_val); -int SSMReadAudioEQModeVal(int8_t *rw_val); -int SSMSaveAudioEQGain(int offset, int size, int8_t tmp_buf[]); -int SSMReadAudioEQGain(int offset, int size, int8_t tmp_buf[]); -int SSMSaveAudioDbxTvValue(int son_value, int vol_value, int sur_value); -int SSMReadAudioDbxTvValue(int *son_value, int *vol_value, int *sur_value); -int SSMSaveAudioAVOutMuteVal(int8_t rw_val); -int SSMReadAudioAVOutMuteVal(int8_t *rw_val); -int SSMSaveAudioSPIDFMuteVal(int8_t rw_val); -int SSMReadAudioSPIDFMuteVal(int8_t *rw_val); - -int SSMSaveBlackoutEnable(int8_t enable); -int SSMReadBlackoutEnable(int8_t *enable); -int SSMSaveFBCN310BackLightVal(int rw_val); -int SSMReadFBCN310BackLightVal(int *rw_val); -int SSMSaveFBCN310ColorTempVal(int rw_val); -int SSMReadFBCN310ColorTempVal(int *rw_val); -int SSMSaveFBCN310LightsensorVal(int rw_val); -int SSMReadFBCN310LightsensorVal(int *rw_val); -int SSMSaveFBCN310Dream_PanelVal(int rw_val); -int SSMReadFBCN310Dream_PanelVal(int *rw_val); -int SSMSaveFBCN310MULT_PQVal(int rw_val); -int SSMReadFBCN310MULT_PQVal(int *rw_val); -int SSMSaveFBCN310MEMCVal(int rw_val); -int SSMReadFBCN310MEMCVal(int *rw_val) ; -int SSMSaveN311_VbyOne_Spread_Spectrum_Val(int rw_val); -int SSMReadN311_VbyOne_Spread_Spectrum_Val(int *rw_val); -int SSMSaveN311_Bluetooth_Vol(int rw_val); -int SSMReadN311_Bluetooth_Vol(void) ; -int SSMSave_DRC_ONOFF_Val(int rw_val); -int SSMRead_DRC_ONOFF_Val(void); -int SSMSave_PANEL_ID_Val(int rw_val); -int SSMRead_PANEL_ID_Val(void); -#ifdef __cplusplus -} -#endif - -#endif //__TV_SSM_API_H__ diff --git a/tvapi/libtv/tvsetting/CTvSettingCfg.h b/tvapi/libtv/tvsetting/CTvSettingCfg.h deleted file mode 100644 index 09ee7b9..0000000 --- a/tvapi/libtv/tvsetting/CTvSettingCfg.h +++ b/dev/null @@ -1,411 +0,0 @@ -#ifndef __TV_SETTING_CFG__H__ -#define __TV_SETTING_CFG__H__ -#include "../tvin/CTvin.h" - -//Sections -static const int SSM_RES0_START = 0; -static const int SSM_RES0_LEN = 32; -static const int SSM_CR_START = SSM_RES0_START + SSM_RES0_LEN; -static const int SSM_CR_LEN = 1536; -static const int SSM_RW_START = SSM_CR_START + SSM_CR_LEN; -static const int SSM_RW_LEN = 2048; -static const int SSM_RES1_START = SSM_RW_START + SSM_RW_LEN; -static const int SSM_RES1_LEN = 64; - -// reserved0 section -static const int SSM_RSV_W_CHARACTER_CHAR_START = SSM_RES0_START + 0x0A; -static const int SSM_RSV_W_CHARACTER_CHAR_LEN = 1; - -//Read & write section -static const int SSM_MARK_01_START = SSM_RW_START + 0; -static const int SSM_MARK_01_LEN = 1; - -static const int SSM_RW_AUDIO_START = SSM_MARK_01_START + SSM_MARK_01_LEN; -static const int SSM_RW_AUDIO_LEN = 192; - -static const int SSM_RW_VPP_START = SSM_RW_AUDIO_START + SSM_RW_AUDIO_LEN; -static const int SSM_RW_VPP_LEN = 230; - -static const int SSM_RW_VDIN_START = SSM_RW_VPP_START + SSM_RW_VPP_LEN; -static const int SSM_RW_VDIN_LEN = 826; - -static const int SSM_RW_ATV_START = SSM_RW_VDIN_START + SSM_RW_VDIN_LEN; -static const int SSM_RW_ATV_LEN = 0; - -static const int SSM_RW_MISC_START = SSM_RW_ATV_START + SSM_RW_ATV_LEN; -static const int SSM_RW_MISC_LEN = 86; - -static const int SSM_RW_CUSTOMER_DATA_START = SSM_RW_MISC_START + SSM_RW_MISC_LEN; -static const int SSM_RW_CUSTOMER_DATA_LEN = 100; - -static const int SSM_MARK_02_START = SSM_RW_CUSTOMER_DATA_START + SSM_RW_CUSTOMER_DATA_LEN; -static const int SSM_MARK_02_LEN = 1; - -static const int SSM_RW_TEST_START = SSM_MARK_02_START + SSM_MARK_02_LEN; -static const int SSM_RW_TEST_LEN = 3; - -static const int SSM_MARK_03_START = SSM_RW_TEST_START + SSM_RW_TEST_LEN; -static const int SSM_MARK_03_LEN = 1; - -//Mark r/w values -static const int SSM_MARK_01_VALUE = 0xDD; -static const int SSM_MARK_02_VALUE = 0x88; -static const int SSM_MARK_03_VALUE = 0xCC; - - -//Read & write section(1824 Bytes) -static const int SSM_RW_AUDIO_END = (SSM_RW_AUDIO_START + SSM_RW_AUDIO_LEN); -static const int SSM_RW_VPP_END = (SSM_RW_VPP_START + SSM_RW_VPP_LEN); -static const int SSM_RW_VDIN_END = (SSM_RW_VDIN_START + SSM_RW_VDIN_LEN); -static const int SSM_RW_ATV_END = (SSM_RW_ATV_START + SSM_RW_ATV_LEN); -static const int SSM_RW_MISC_END = (SSM_RW_MISC_START + SSM_RW_MISC_LEN); - -static const int SSM_CR_END = (SSM_CR_START + SSM_CR_LEN); - -//Read & write misc section -static const int SSM_RW_FBMF_START = (SSM_RW_MISC_START); //Factory Burn Mode Flag -static const int SSM_RW_FBMF_LEN = (1); -static const int SSM_RW_DEF_HDCP_START = (SSM_RW_FBMF_START + SSM_RW_FBMF_LEN); //using default hdcp key flag -static const int SSM_RW_DEF_HDCP_LEN = (1); -static const int SSM_RW_POWER_CHANNEL_START = (SSM_RW_DEF_HDCP_START + SSM_RW_DEF_HDCP_LEN); //Power on/off channel type -static const int SSM_RW_POWER_CHANNEL_LEN = (1); -static const int SSM_RW_LAST_SOURCE_INPUT_START = (SSM_RW_POWER_CHANNEL_START + SSM_RW_POWER_CHANNEL_LEN); //Last tv select input source type -static const int SSM_RW_LAST_SOURCE_INPUT_LEN = (1); -static const int SSM_RW_SYS_LANGUAGE_START = (SSM_RW_LAST_SOURCE_INPUT_START + SSM_RW_LAST_SOURCE_INPUT_LEN); //system language -static const int SSM_RW_SYS_LANGUAGE_LEN = (1); -static const int SSM_RW_AGING_MODE_START = (SSM_RW_SYS_LANGUAGE_START + SSM_RW_SYS_LANGUAGE_LEN); //aging mode -static const int SSM_RW_AGING_MODE_LEN = (1); -static const int SSM_RW_PANEL_TYPE_START = (SSM_RW_AGING_MODE_START + SSM_RW_AGING_MODE_LEN); //panel type -static const int SSM_RW_PANEL_TYPE_LEN = (1); -static const int SSM_RW_POWER_ON_MUSIC_SWITCH_START = (SSM_RW_PANEL_TYPE_START + SSM_RW_PANEL_TYPE_LEN); //power on music switch -static const int SSM_RW_POWER_ON_MUSIC_SWITCH_LEN = (1); -static const int SSM_RW_POWER_ON_MUSIC_VOL_START = (SSM_RW_POWER_ON_MUSIC_SWITCH_START + SSM_RW_POWER_ON_MUSIC_SWITCH_LEN); //power on music volume -static const int SSM_RW_POWER_ON_MUSIC_VOL_LEN = (1); -static const int SSM_RW_SYS_SLEEP_TIMER_START = (SSM_RW_POWER_ON_MUSIC_VOL_START + SSM_RW_POWER_ON_MUSIC_VOL_LEN); //system sleep timer -static const int SSM_RW_SYS_SLEEP_TIMER_LEN = (4); -static const int SSM_RW_INPUT_SRC_PARENTAL_CTL_START = (SSM_RW_SYS_SLEEP_TIMER_START + SSM_RW_SYS_SLEEP_TIMER_LEN); //tv input source parental control -static const int SSM_RW_INPUT_SRC_PARENTAL_CTL_LEN = (4); -static const int SSM_RW_PARENTAL_CTL_SWITCH_START = (SSM_RW_INPUT_SRC_PARENTAL_CTL_START + SSM_RW_INPUT_SRC_PARENTAL_CTL_LEN); //parental control switch -static const int SSM_RW_PARENTAL_CTL_SWITCH_LEN = (1); -static const int SSM_RW_PARENTAL_CTL_PASSWORD_START = (SSM_RW_PARENTAL_CTL_SWITCH_START + SSM_RW_PARENTAL_CTL_SWITCH_LEN); //parental control pass word -static const int SSM_RW_PARENTAL_CTL_PASSWORD_LEN = (16); -static const int SSM_RW_SEARCH_NAVIGATE_FLAG_START = (SSM_RW_PARENTAL_CTL_PASSWORD_START + SSM_RW_PARENTAL_CTL_PASSWORD_LEN); -static const int SSM_RW_SEARCH_NAVIGATE_FLAG_LEN = (1); -static const int SSM_RW_INPUT_NUMBER_LIMIT_START = (SSM_RW_SEARCH_NAVIGATE_FLAG_START + SSM_RW_SEARCH_NAVIGATE_FLAG_LEN); -static const int SSM_RW_INPUT_NUMBER_LIMIT_LEN = (1); -static const int SSM_RW_SERIAL_ONOFF_FLAG_START = (SSM_RW_INPUT_NUMBER_LIMIT_START + SSM_RW_INPUT_NUMBER_LIMIT_LEN); -static const int SSM_RW_SERIAL_ONOFF_FLAG_LEN = (1); -static const int SSM_RW_STANDBY_MODE_FLAG_START = (SSM_RW_SERIAL_ONOFF_FLAG_START + SSM_RW_SERIAL_ONOFF_FLAG_LEN); -static const int SSM_RW_STANDBY_MODE_FLAG_LEN = (1); -static const int SSM_RW_HDMIEQ_MODE_START = (SSM_RW_STANDBY_MODE_FLAG_START + SSM_RW_STANDBY_MODE_FLAG_LEN); -static const int SSM_RW_HDMIEQ_MODE_LEN = (1); -static const int SSM_RW_LOGO_ON_OFF_FLAG_START = (SSM_RW_HDMIEQ_MODE_START + SSM_RW_HDMIEQ_MODE_LEN); -static const int SSM_RW_LOGO_ON_OFF_FLAG_LEN = (1); -static const int SSM_RW_HDMIINTERNAL_MODE_START = (SSM_RW_LOGO_ON_OFF_FLAG_START + SSM_RW_LOGO_ON_OFF_FLAG_LEN); -static const int SSM_RW_HDMIINTERNAL_MODE_LEN = (4); -static const int SSM_RW_DISABLE_3D_START = (SSM_RW_HDMIINTERNAL_MODE_START + SSM_RW_HDMIINTERNAL_MODE_LEN); -static const int SSM_RW_DISABLE_3D_LEN = (1); -static const int SSM_RW_GLOBAL_OGO_ENABLE_START = (SSM_RW_DISABLE_3D_START + SSM_RW_DISABLE_3D_LEN); -static const int SSM_RW_GLOBAL_OGO_ENABLE_LEN = (1); -static const int SSM_RW_LOCAL_DIMING_START = (SSM_RW_GLOBAL_OGO_ENABLE_START + SSM_RW_GLOBAL_OGO_ENABLE_LEN); -static const int SSM_RW_LOCAL_DIMING_LEN = (1); -static const int SSM_RW_VDAC_2D_START = (SSM_RW_LOCAL_DIMING_START + SSM_RW_LOCAL_DIMING_LEN); -static const int SSM_RW_VDAC_2D_LEN = (2); -static const int SSM_RW_VDAC_3D_START = (SSM_RW_VDAC_2D_START + SSM_RW_VDAC_2D_LEN); -static const int SSM_RW_VDAC_3D_LEN = (2); - -static const int SSM_RW_NON_STANDARD_START = (SSM_RW_VDAC_3D_START + SSM_RW_VDAC_3D_LEN); -static const int SSM_RW_NON_STANDARD_LEN = (2); -static const int SSM_RW_ADB_SWITCH_START = (SSM_RW_NON_STANDARD_START + SSM_RW_NON_STANDARD_LEN); -static const int SSM_RW_ADB_SWITCH_LEN = (1); -static const int SSM_RW_SERIAL_CMD_SWITCH_START = (SSM_RW_ADB_SWITCH_START + SSM_RW_ADB_SWITCH_LEN); -static const int SSM_RW_SERIAL_CMD_SWITCH_LEN = (1); - -static const int SSM_RW_CA_BUFFER_SIZE_START = (SSM_RW_SERIAL_CMD_SWITCH_START + SSM_RW_SERIAL_CMD_SWITCH_LEN); -static const int SSM_RW_CA_BUFFER_SIZE_LEN = (2); - -static const int SSM_RW_NOISE_GATE_THRESHOLD_START = (SSM_RW_CA_BUFFER_SIZE_START + SSM_RW_CA_BUFFER_SIZE_LEN); -static const int SSM_RW_NOISE_GATE_THRESHOLD_LEN = (1); - -static const int SSM_RW_DTV_TYPE_START = (SSM_RW_NOISE_GATE_THRESHOLD_START + SSM_RW_NOISE_GATE_THRESHOLD_LEN); -static const int SSM_RW_DTV_TYPE_LEN = (1); - -static const int SSM_RW_UI_GRHPHY_BACKLIGHT_START = (SSM_RW_DTV_TYPE_START + SSM_RW_DTV_TYPE_LEN); -static const int SSM_RW_UI_GRHPHY_BACKLIGHT_LEN = (1); - -static const int SSM_RW_FASTSUSPEND_FLAG_START = (SSM_RW_UI_GRHPHY_BACKLIGHT_START + SSM_RW_UI_GRHPHY_BACKLIGHT_LEN); -static const int SSM_RW_FASTSUSPEND_FLAG_LEN = (1); - -static const int SSM_RW_BLACKOUT_ENABLE_START = (SSM_RW_FASTSUSPEND_FLAG_START + SSM_RW_FASTSUSPEND_FLAG_LEN); -static const int SSM_RW_BLACKOUT_ENABLE__LEN = (1); - -static const int SSM_RW_PANEL_ID_START = (SSM_RW_BLACKOUT_ENABLE_START + SSM_RW_BLACKOUT_ENABLE__LEN); -static const int SSM_RW_PANEL_ID_LEN = (1); -//Audio data section -static const int SSM_AUD_MASTR_VOLUME_VAL = (SSM_RW_AUDIO_START + 0); -static const int SSM_AUD_BALANCE_VAL = (SSM_AUD_MASTR_VOLUME_VAL + 1); -static const int SSM_AUD_SUPPERBASS_VOLUME_VAL = (SSM_AUD_BALANCE_VAL + 1); -static const int SSM_AUD_SUPPERBASS_SWITCH = (SSM_AUD_SUPPERBASS_VOLUME_VAL + 1); -static const int SSM_AUD_SRS_SURROUND_SWITCH = (SSM_AUD_SUPPERBASS_SWITCH + 1); -static const int SSM_AUD_SRS_DIALOG_CLARITY_SWITCH = (SSM_AUD_SRS_SURROUND_SWITCH + 1); -static const int SSM_AUD_SRS_TRUEBASS_SWITCH = (SSM_AUD_SRS_DIALOG_CLARITY_SWITCH + 1); -static const int SSM_AUD_BASS_VOLUME_VAL = (SSM_AUD_SRS_TRUEBASS_SWITCH + 1); -static const int SSM_AUD_TREBLE_VOLUME_VAL = (SSM_AUD_BASS_VOLUME_VAL + 1); -static const int SSM_AUD_SOUND_MODE_VAL = (SSM_AUD_TREBLE_VOLUME_VAL + 1); -static const int SSM_AUD_WALL_EFFCT_SWITCH = (SSM_AUD_SOUND_MODE_VAL + 1); -static const int SSM_AUD_SPDIF_SWITCH = (SSM_AUD_WALL_EFFCT_SWITCH + 1); -static const int SSM_AUD_SPDIF_MODE_VAL = (SSM_AUD_SPDIF_SWITCH + 1); -static const int SSM_AUD_EQ_MODE_VAL = (SSM_RW_AUDIO_START + 32); -static const int SSM_AUD_EQ_GAIN = (SSM_AUD_EQ_MODE_VAL + 1); -static const int SSM_AUD_NOLINE_POINTS = (SSM_AUD_EQ_GAIN + 16); -static const int SSM_AUD_DBX_TV_SON = (SSM_AUD_NOLINE_POINTS + 2); -static const int SSM_AUD_DBX_TV_VAL = (SSM_AUD_NOLINE_POINTS + 2 + 1); -static const int SSM_AUD_DBX_TV_SUR = (SSM_AUD_NOLINE_POINTS + 2 + 2); -static const int SSM_AUD_DBX_TV_SIZE = 3; -static const int SSM_AUD_AVOUT_MUTE = (SSM_AUD_DBX_TV_SUR + 2); -static const int SSM_AUD_SPIDF_MUTE = (SSM_AUD_AVOUT_MUTE + 1); -static const int SSM_AUD_DRC_ONOFF = (SSM_AUD_SPIDF_MUTE + 1); - -//VPP Data (115 bytes) -//ColorDemoMode 1byte -static const int VPP_DATA_POS_COLOR_DEMO_MODE_START = (SSM_RW_VPP_START + 0); -static const int VPP_DATA_POS_COLOR_DEMO_MODE_SIZE = (1); -static const int VPP_DATA_POS_COLOR_DEMO_MODE_END = (VPP_DATA_POS_COLOR_DEMO_MODE_START + VPP_DATA_POS_COLOR_DEMO_MODE_SIZE); -//ColorBaseMode 1byte -static const int VPP_DATA_POS_COLOR_BASE_MODE_START = (VPP_DATA_POS_COLOR_DEMO_MODE_END + 0); -static const int VPP_DATA_POS_COLOR_BASE_MODE_SIZE = (1); -static const int VPP_DATA_POS_COLOR_BASE_MODE_END = (VPP_DATA_POS_COLOR_BASE_MODE_START + VPP_DATA_POS_COLOR_BASE_MODE_SIZE); -//TestPattern 1byte -static const int VPP_DATA_POS_TEST_PATTERN_START = (VPP_DATA_POS_COLOR_BASE_MODE_END + 0); -static const int VPP_DATA_POS_TEST_PATTERN_SIZE = (1); -static const int VPP_DATA_POS_TEST_PATTERN_END = (VPP_DATA_POS_TEST_PATTERN_START + VPP_DATA_POS_TEST_PATTERN_SIZE); -//DDR SSC 1byte -static const int VPP_DATA_POS_DDR_SSC_START = (VPP_DATA_POS_TEST_PATTERN_END + 0); -static const int VPP_DATA_POS_DDR_SSC_SIZE = (1); -static const int VPP_DATA_POS_DDR_SSC_END = (VPP_DATA_POS_DDR_SSC_START + VPP_DATA_POS_DDR_SSC_SIZE); -//LVDS SSC 1byte -static const int VPP_DATA_POS_LVDS_SSC_START = (VPP_DATA_POS_DDR_SSC_END + 0); -static const int VPP_DATA_POS_LVDS_SSC_SIZE = (2); -static const int VPP_DATA_POS_LVDS_SSC_END = (VPP_DATA_POS_LVDS_SSC_START + VPP_DATA_POS_LVDS_SSC_SIZE); -//dream panel 1byte -static const int VPP_DATA_POS_DREAM_PANEL_START = (VPP_DATA_POS_LVDS_SSC_END + 0); -static const int VPP_DATA_POS_DREAM_PANEL_SIZE = (1); -static const int VPP_DATA_POS_DREAM_PANEL_END = (VPP_DATA_POS_DREAM_PANEL_START + VPP_DATA_POS_DREAM_PANEL_SIZE); -//Backlight reverse 1byte -static const int VPP_DATA_POS_BACKLIGHT_REVERSE_START = (VPP_DATA_POS_DREAM_PANEL_END + 0); -static const int VPP_DATA_POS_BACKLIGHT_REVERSE_SIZE = (1); -static const int VPP_DATA_POS_BACKLIGHT_REVERSE_END = (VPP_DATA_POS_BACKLIGHT_REVERSE_START + VPP_DATA_POS_BACKLIGHT_REVERSE_SIZE); -//Brightness 1*7=7byte -static const int VPP_DATA_POS_BRIGHTNESS_START = (VPP_DATA_POS_BACKLIGHT_REVERSE_END + 0); -static const int VPP_DATA_POS_BRIGHTNESS_SIZE = (1 * (SOURCE_TYPE_MAX)); -static const int VPP_DATA_POS_BRIGHTNESS_END = (VPP_DATA_POS_BRIGHTNESS_START + VPP_DATA_POS_BRIGHTNESS_SIZE); -//Contrast 1*7=7byte -static const int VPP_DATA_POS_CONTRAST_START = (VPP_DATA_POS_BRIGHTNESS_END + 0); -static const int VPP_DATA_POS_CONTRAST_SIZE = (1 * (SOURCE_TYPE_MAX)); -static const int VPP_DATA_POS_CONTRAST_END = (VPP_DATA_POS_CONTRAST_START + VPP_DATA_POS_CONTRAST_SIZE); -//Saturation 1*7=7byte -static const int VPP_DATA_POS_SATURATION_START = (VPP_DATA_POS_CONTRAST_END + 0); -static const int VPP_DATA_POS_SATURATION_SIZE = (1 * (SOURCE_TYPE_MAX)); -static const int VPP_DATA_POS_SATURATION_END = (VPP_DATA_POS_SATURATION_START + VPP_DATA_POS_SATURATION_SIZE); -//Hue 1*7=7byte -static const int VPP_DATA_POS_HUE_START = (VPP_DATA_POS_SATURATION_END + 0); -static const int VPP_DATA_POS_HUE_SIZE = (1 * (SOURCE_TYPE_MAX)); -static const int VPP_DATA_POS_HUE_END = (VPP_DATA_POS_HUE_START + VPP_DATA_POS_HUE_SIZE); -//Sharpness 1*7=7byte -static const int VPP_DATA_POS_SHARPNESS_START = (VPP_DATA_POS_HUE_END + 0); -static const int VPP_DATA_POS_SHARPNESS_SIZE = (1 * (SOURCE_TYPE_MAX)); -static const int VPP_DATA_POS_SHARPNESS_END = (VPP_DATA_POS_SHARPNESS_START + VPP_DATA_POS_SHARPNESS_SIZE); -//ColorTemperature 1*7=7byte -static const int VPP_DATA_POS_COLOR_TEMP_START = (VPP_DATA_POS_SHARPNESS_END + 0); -static const int VPP_DATA_POS_COLOR_TEMP_SIZE = (1 * (SOURCE_TYPE_MAX)); -static const int VPP_DATA_POS_COLOR_TEMP_END = (VPP_DATA_POS_COLOR_TEMP_START + VPP_DATA_POS_COLOR_TEMP_SIZE); -//NoiseReduction 1*7=7byte -static const int VPP_DATA_POS_NOISE_REDUCTION_START = (VPP_DATA_POS_COLOR_TEMP_END + 0); -static const int VPP_DATA_POS_NOISE_REDUCTION_SIZE = (1 * (SOURCE_TYPE_MAX)); -static const int VPP_DATA_POS_NOISE_REDUCTION_END = (VPP_DATA_POS_NOISE_REDUCTION_START + VPP_DATA_POS_NOISE_REDUCTION_SIZE); -//SceneMode 1byte -static const int VPP_DATA_POS_SCENE_MODE_START = (VPP_DATA_POS_NOISE_REDUCTION_END + 0); -static const int VPP_DATA_POS_SCENE_MODE_SIZE = (1); -static const int VPP_DATA_POS_SCENE_MODE_END = (VPP_DATA_POS_SCENE_MODE_START + VPP_DATA_POS_SCENE_MODE_SIZE); -//PictureMode 1*7=7byte -static const int VPP_DATA_POS_PICTURE_MODE_START = (VPP_DATA_POS_SCENE_MODE_END + 0); -static const int VPP_DATA_POS_PICTURE_MODE_SIZE = (1 * (SOURCE_TYPE_MAX)); -static const int VPP_DATA_POS_PICTURE_MODE_END = (VPP_DATA_POS_PICTURE_MODE_START + VPP_DATA_POS_PICTURE_MODE_SIZE); -//DisplayMode 1*7=7byte -static const int VPP_DATA_POS_DISPLAY_MODE_START = (VPP_DATA_POS_PICTURE_MODE_END + 0); -static const int VPP_DATA_POS_DISPLAY_MODE_SIZE = (1 * (SOURCE_TYPE_MAX)); -static const int VPP_DATA_POS_DISPLAY_MODE_END = (VPP_DATA_POS_DISPLAY_MODE_START + VPP_DATA_POS_DISPLAY_MODE_SIZE); -//Backlight 1*7=7byte -static const int VPP_DATA_POS_BACKLIGHT_START = (VPP_DATA_POS_DISPLAY_MODE_END + 0); -static const int VPP_DATA_POS_BACKLIGHT_SIZE = (1 * (SOURCE_TYPE_MAX)); -static const int VPP_DATA_POS_BACKLIGHT_END = (VPP_DATA_POS_BACKLIGHT_START + VPP_DATA_POS_BACKLIGHT_SIZE); -//RGB_Gain_R 4byte -static const int VPP_DATA_POS_RGB_GAIN_R_START = (VPP_DATA_POS_BACKLIGHT_END + 0); -static const int VPP_DATA_POS_RGB_GAIN_R_SIZE = (sizeof(int)); -static const int VPP_DATA_POS_RGB_GAIN_R_END = (VPP_DATA_POS_RGB_GAIN_R_START + VPP_DATA_POS_RGB_GAIN_R_SIZE); -//RGB_Gain_G 4byte -static const int VPP_DATA_POS_RGB_GAIN_G_START = (VPP_DATA_POS_RGB_GAIN_R_END + 0); -static const int VPP_DATA_POS_RGB_GAIN_G_SIZE = (sizeof(int)); -static const int VPP_DATA_POS_RGB_GAIN_G_END = (VPP_DATA_POS_RGB_GAIN_G_START + VPP_DATA_POS_RGB_GAIN_G_SIZE); -//RGB_Gain_B 4byte -static const int VPP_DATA_POS_RGB_GAIN_B_START = (VPP_DATA_POS_RGB_GAIN_G_END + 0); -static const int VPP_DATA_POS_RGB_GAIN_B_SIZE = (sizeof(int)); -static const int VPP_DATA_POS_RGB_GAIN_B_END = (VPP_DATA_POS_RGB_GAIN_B_START + VPP_DATA_POS_RGB_GAIN_B_SIZE); -//RGB_Post_Offset_R 4byte -static const int VPP_DATA_POS_RGB_POST_OFFSET_R_START = (VPP_DATA_POS_RGB_GAIN_B_END + 0); -static const int VPP_DATA_POS_RGB_POST_OFFSET_R_SIZE = (sizeof(int)); -static const int VPP_DATA_POS_RGB_POST_OFFSET_R_END = (VPP_DATA_POS_RGB_POST_OFFSET_R_START + VPP_DATA_POS_RGB_POST_OFFSET_R_SIZE); -//RGB_Post_Offset_G 4byte -static const int VPP_DATA_POS_RGB_POST_OFFSET_G_START = (VPP_DATA_POS_RGB_POST_OFFSET_R_END + 0); -static const int VPP_DATA_POS_RGB_POST_OFFSET_G_SIZE = (sizeof(int)); -static const int VPP_DATA_POS_RGB_POST_OFFSET_G_END = (VPP_DATA_POS_RGB_POST_OFFSET_G_START + VPP_DATA_POS_RGB_POST_OFFSET_G_SIZE); -//RGB_Post_Offset_B 4byte -static const int VPP_DATA_POS_RGB_POST_OFFSET_B_START = (VPP_DATA_POS_RGB_POST_OFFSET_G_END + 0); -static const int VPP_DATA_POS_RGB_POST_OFFSET_B_SIZE = (sizeof(int)); -static const int VPP_DATA_POS_RGB_POST_OFFSET_B_END = (VPP_DATA_POS_RGB_POST_OFFSET_B_START + VPP_DATA_POS_RGB_POST_OFFSET_B_SIZE); -//dbc_Enable 1byte -static const int VPP_DATA_POS_DBC_START = (VPP_DATA_POS_RGB_POST_OFFSET_B_END + 0); -static const int VPP_DATA_POS_DBC_SIZE = (1); -static const int VPP_DATA_POS_DBC_END = (VPP_DATA_POS_DBC_START + VPP_DATA_POS_DBC_SIZE); -//project id 1byte -static const int VPP_DATA_PROJECT_ID_START = (VPP_DATA_POS_DBC_END + 0); -static const int VPP_DATA_PROJECT_ID_SIZE = (1); -static const int VPP_DATA_PROJECT_ID_END = (VPP_DATA_PROJECT_ID_START + VPP_DATA_PROJECT_ID_SIZE); -//dnlp 1byte -static const int VPP_DATA_POS_DNLP_START = (VPP_DATA_PROJECT_ID_END + 0); -static const int VPP_DATA_POS_DNLP_SIZE = (1); -static const int VPP_DATA_POS_DNLP_END = (VPP_DATA_POS_DNLP_START + VPP_DATA_POS_DNLP_SIZE); -//panorama 1*7 = 7byte -static const int VPP_DATA_POS_PANORAMA_START = (VPP_DATA_POS_DNLP_END + 0); -static const int VPP_DATA_POS_PANORAMA_SIZE = (1 * (SOURCE_TYPE_MAX)); -static const int VPP_DATA_POS_PANORAMA_END = (VPP_DATA_POS_PANORAMA_START + VPP_DATA_POS_PANORAMA_SIZE); -//APL 1 byte -static const int VPP_DATA_APL_START = (VPP_DATA_POS_PANORAMA_END + 0); -static const int VPP_DATA_APL_SIZE = (1); -static const int VPP_DATA_APL_END = (VPP_DATA_APL_START + VPP_DATA_APL_SIZE); -//APL2 1 byte -static const int VPP_DATA_APL2_START = (VPP_DATA_APL_END + 0); -static const int VPP_DATA_APL2_SIZE = (1); -static const int VPP_DATA_APL2_END = (VPP_DATA_APL2_START + VPP_DATA_APL2_SIZE); -//BD 1 byte -static const int VPP_DATA_BD_START = (VPP_DATA_APL2_END + 0); -static const int VPP_DATA_BD_SIZE = (1); -static const int VPP_DATA_BD_END = (VPP_DATA_BD_START + VPP_DATA_BD_SIZE); -//BP 1 byte -static const int VPP_DATA_BP_START = (VPP_DATA_BD_END + 0); -static const int VPP_DATA_BP_SIZE = (1); -static const int VPP_DATA_BP_END = (VPP_DATA_BP_START + VPP_DATA_BP_SIZE); - -//Factory RGB 3*6 = 18byte -static const int VPP_DATA_RGB_START = (VPP_DATA_BP_END + 0); -static const int VPP_DATA_RGB_SIZE = (18); -static const int VPP_DATA_RGB_END = (VPP_DATA_RGB_START + VPP_DATA_RGB_SIZE); - -//COLOR_SPACE 1 byte -static const int VPP_DATA_COLOR_SPACE_START = (VPP_DATA_RGB_END + 0); -static const int VPP_DATA_COLOR_SPACE_SIZE = (1); -static const int VPP_DATA_COLOR_SPACE_END = (VPP_DATA_COLOR_SPACE_START + VPP_DATA_COLOR_SPACE_SIZE); - -static const int VPP_DATA_USER_NATURE_SWITCH_START = (VPP_DATA_COLOR_SPACE_END + 0); -static const int VPP_DATA_USER_NATURE_SWITCH_SIZE = (1); -static const int VPP_DATA_USER_NATURE_SWITCH_END = (VPP_DATA_USER_NATURE_SWITCH_START + VPP_DATA_USER_NATURE_SWITCH_SIZE); - -//gamma value 1 byte -static const int VPP_DATA_GAMMA_VALUE_START = (VPP_DATA_USER_NATURE_SWITCH_END + 0); -static const int VPP_DATA_GAMMA_VALUE_SIZE = (1); -static const int VPP_DATA_GAMMA_VALUE_END = (VPP_DATA_GAMMA_VALUE_START + VPP_DATA_GAMMA_VALUE_SIZE); - -//dbc backlight enable 1byte -static const int VPP_DATA_DBC_BACKLIGHT_START = (VPP_DATA_GAMMA_VALUE_END + 0); -static const int VPP_DATA_DBC_BACKLIGHT_SIZE = (1); -static const int VPP_DATA_DBC_BACKLIGHT_END = (VPP_DATA_DBC_BACKLIGHT_START + VPP_DATA_DBC_BACKLIGHT_SIZE); -//dbc backlight standard 1byte -static const int VPP_DATA_DBC_STANDARD_START = (VPP_DATA_DBC_BACKLIGHT_END + 0); -static const int VPP_DATA_DBC_STANDARD_SIZE = (1); -static const int VPP_DATA_DBC_STANDARD_END = (VPP_DATA_DBC_STANDARD_START + VPP_DATA_DBC_STANDARD_SIZE); -//dbc backlight enable 1byte -static const int VPP_DATA_DBC_ENABLE_START = (VPP_DATA_DBC_STANDARD_END + 0); -static const int VPP_DATA_DBC_ENABLE_SIZE = (1); -static const int VPP_DATA_DBC_ENABLE_END = (VPP_DATA_DBC_ENABLE_START + VPP_DATA_DBC_ENABLE_SIZE); - -//fbc Backlight 1 byte -static const int VPP_DATA_POS_FBC_BACKLIGHT_START = (VPP_DATA_DBC_ENABLE_END + 0); -static const int VPP_DATA_POS_FBC_BACKLIGHT_SIZE = (1); -static const int VPP_DATA_POS_FBC_BACKLIGHT_END = (VPP_DATA_POS_FBC_BACKLIGHT_START + VPP_DATA_POS_FBC_BACKLIGHT_SIZE); -//fbc Elecmode 1 byte -static const int VPP_DATA_POS_FBC_ELECMODE_START = (VPP_DATA_POS_FBC_BACKLIGHT_END + 0); -static const int VPP_DATA_POS_FBC_ELECMODE_SIZE = (1); -static const int VPP_DATA_POS_FBC_ELECMODE_END = (VPP_DATA_POS_FBC_ELECMODE_START + VPP_DATA_POS_FBC_ELECMODE_SIZE); -//fbc colortemp 1 byte -static const int VPP_DATA_POS_FBC_COLORTEMP_START = (VPP_DATA_POS_FBC_ELECMODE_END + 0); -static const int VPP_DATA_POS_FBC_COLORTEMP_SIZE = (1); -static const int VPP_DATA_POS_FBC_COLORTEMP_END = (VPP_DATA_POS_FBC_COLORTEMP_START + VPP_DATA_POS_FBC_COLORTEMP_SIZE); - -static const int VPP_DATA_POS_FBC_N310_BACKLIGHT_START = (VPP_DATA_POS_FBC_COLORTEMP_END + 0); -static const int VPP_DATA_POS_FBC_N310_BACKLIGHT_SIZE = (1); -static const int VPP_DATA_POS_FBC_N310_BACKLIGHT_END = (VPP_DATA_POS_FBC_N310_BACKLIGHT_START + VPP_DATA_POS_FBC_N310_BACKLIGHT_SIZE); -//fbc colortemp 1 byte N310 -static const int VPP_DATA_POS_FBC_N310_COLORTEMP_START = (VPP_DATA_POS_FBC_N310_BACKLIGHT_END + 0); -static const int VPP_DATA_POS_FBC_N310_COLORTEMP_SIZE = (1); -static const int VPP_DATA_POS_FBC_N310_COLORTEMP_END = (VPP_DATA_POS_FBC_N310_COLORTEMP_START + VPP_DATA_POS_FBC_N310_COLORTEMP_SIZE); -//fbc lightsensor 1 byte N310 -static const int VPP_DATA_POS_FBC_N310_LIGHTSENSOR_START = (VPP_DATA_POS_FBC_N310_COLORTEMP_END + 0); -static const int VPP_DATA_POS_FBC_N310_LIGHTSENSOR_SIZE = (1); -static const int VPP_DATA_POS_FBC_N310_LIGHTSENSOR_END = (VPP_DATA_POS_FBC_N310_LIGHTSENSOR_START + VPP_DATA_POS_FBC_N310_LIGHTSENSOR_SIZE); -//fbc MEMC 1 byte N310 -static const int VPP_DATA_POS_FBC_N310_MEMC_START = (VPP_DATA_POS_FBC_N310_LIGHTSENSOR_END + 0); -static const int VPP_DATA_POS_FBC_N310_MEMC_SIZE = (1); -static const int VPP_DATA_POS_FBC_N310_MEMC_END = (VPP_DATA_POS_FBC_N310_MEMC_START + VPP_DATA_POS_FBC_N310_MEMC_SIZE); -//fbc DREAMPANEL 1 byte N310 -static const int VPP_DATA_POS_FBC_N310_DREAMPANEL_START = (VPP_DATA_POS_FBC_N310_MEMC_END + 0); -static const int VPP_DATA_POS_FBC_N310_DREAMPANEL_SIZE = (1); -static const int VPP_DATA_POS_FBC_N310_DREAMPANEL_END = (VPP_DATA_POS_FBC_N310_DREAMPANEL_START + VPP_DATA_POS_FBC_N310_DREAMPANEL_SIZE); -//fbc Multi_pq 1 byte N310 -static const int VPP_DATA_POS_FBC_N310_MULTI_PQ_START = (VPP_DATA_POS_FBC_N310_DREAMPANEL_END + 0); -static const int VPP_DATA_POS_FBC_N310_MULTI_PQ_SIZE = (1); -static const int VPP_DATA_POS_FBC_N310_MULTI_PQ_END = (VPP_DATA_POS_FBC_N310_MULTI_PQ_START + VPP_DATA_POS_FBC_N310_MULTI_PQ_SIZE); -//fbc Multi_pq 1 byte N310 -static const int VPP_DATA_POS_N311_VBYONE_SPREAD_SPECTRUM_START = (VPP_DATA_POS_FBC_N310_MULTI_PQ_END + 0); -static const int VPP_DATA_POS_N311_VBYONE_SPREAD_SPECTRUM_SIZE = (1); -static const int VPP_DATA_POS_N311_VBYONE_SPREAD_SPECTRUM_END = (VPP_DATA_POS_N311_VBYONE_SPREAD_SPECTRUM_START + VPP_DATA_POS_N311_VBYONE_SPREAD_SPECTRUM_SIZE); -//bluetooth volume 1 byte N311 -static const int VPP_DATA_POS_N311_BLUETOOTH_VAL_START = (VPP_DATA_POS_N311_VBYONE_SPREAD_SPECTRUM_END + 0); -static const int VPP_DATA_POS_N311_BLUETOOTH_VAL_SIZE = (1); -static const int VPP_DATA_POS_N311_BLUETOOTH_VAL_END = (VPP_DATA_POS_N311_BLUETOOTH_VAL_START + VPP_DATA_POS_N311_BLUETOOTH_VAL_SIZE); - -//Tvin data section (581 bytes) -//SourceInput 1byte -static const int TVIN_DATA_POS_SOURCE_INPUT_START = (SSM_RW_VDIN_START + 0); -static const int TVIN_DATA_POS_SOURCE_INPUT_SIZE = (1); -static const int TVIN_DATA_POS_SOURCE_INPUT_END = (TVIN_DATA_POS_SOURCE_INPUT_START + TVIN_DATA_POS_SOURCE_INPUT_SIZE); -//CVBS Std 1byte -static const int TVIN_DATA_CVBS_STD_START = (TVIN_DATA_POS_SOURCE_INPUT_END + 0); -static const int TVIN_DATA_CVBS_STD_SIZE = (1); -static const int TVIN_DATA_CVBS_STD_END = (TVIN_DATA_CVBS_STD_START + TVIN_DATA_CVBS_STD_SIZE); -//3DMode 1byte -static const int TVIN_DATA_POS_3D_MODE_START = (TVIN_DATA_CVBS_STD_END + 0); -static const int TVIN_DATA_POS_3D_MODE_SIZE = (1); -static const int TVIN_DATA_POS_3D_MODE_END = (TVIN_DATA_POS_3D_MODE_START + TVIN_DATA_POS_3D_MODE_SIZE); -//3DLRSwitch 1byte -static const int TVIN_DATA_POS_3D_LRSWITCH_START = (TVIN_DATA_POS_3D_MODE_END + 0); -static const int TVIN_DATA_POS_3D_LRSWITCH_SIZE = (1); -static const int TVIN_DATA_POS_3D_LRSWITCH_END = (TVIN_DATA_POS_3D_LRSWITCH_START + TVIN_DATA_POS_3D_LRSWITCH_SIZE); -//3DDepth 1byte -static const int TVIN_DATA_POS_3D_DEPTH_START = (TVIN_DATA_POS_3D_LRSWITCH_END + 0); -static const int TVIN_DATA_POS_3D_DEPTH_SIZE = (1); -static const int TVIN_DATA_POS_3D_DEPTH_END = (TVIN_DATA_POS_3D_DEPTH_START + TVIN_DATA_POS_3D_DEPTH_SIZE); -//3DTo2D 1byte -static const int TVIN_DATA_POS_3D_TO2D_START = (TVIN_DATA_POS_3D_DEPTH_END + 0); -static const int TVIN_DATA_POS_3D_TO2D_SIZE = (1); -static const int TVIN_DATA_POS_3D_TO2D_END = (TVIN_DATA_POS_3D_TO2D_START + TVIN_DATA_POS_3D_TO2D_SIZE); -//3DTo2DNEW 1byte -static const int TVIN_DATA_POS_3D_TO2DNEW_START = (TVIN_DATA_POS_3D_TO2D_END + 0); -static const int TVIN_DATA_POS_3D_TO2DNEW_SIZE = (1); -static const int TVIN_DATA_POS_3D_TO2DNEW_END = (TVIN_DATA_POS_3D_TO2DNEW_START + TVIN_DATA_POS_3D_TO2DNEW_SIZE); - -static const int CHKSUM_PROJECT_ID_OFFSET = (SSM_RES0_START + 0); -static const int CHKSUM_MAC_ADDRESS_OFFSET = (SSM_RES0_START + 2); -static const int CHKSUM_HDCP_KEY_OFFSET = (SSM_RES0_START + 4); -static const int CHKSUM_BARCODE_OFFSET = (SSM_RES0_START + 6); - -#endif diff --git a/tvapi/libtv/tvsetting/CTvSettingDeviceFactory.cpp b/tvapi/libtv/tvsetting/CTvSettingDeviceFactory.cpp deleted file mode 100644 index d24cc2d..0000000 --- a/tvapi/libtv/tvsetting/CTvSettingDeviceFactory.cpp +++ b/dev/null @@ -1,187 +0,0 @@ -#include "CTvSettingDeviceFactory.h" -#include "CBlobDeviceE2prom.h" -#include "CBlobDeviceFile.h" - -#include "../tvconfig/tvconfig.h" - -#include "CTvLog.h" -#include "CTvSettingCfg.h" - -#define CC_PRINT_DATA_INFO (0) - - -CTvSettingDeviceFactory::CTvSettingDeviceFactory() -{ - mpCurDevice = NULL; -} - -CTvSettingDeviceFactory::~CTvSettingDeviceFactory() -{ - - if (mpCurDevice != NULL) { - delete mpCurDevice; - mpCurDevice = NULL; - } - -} - -/*int CTvSettingDeviceFactory::SSMPrintAllDataInfo() { -#if CC_PRINT_DATA_INFO == 1 - static int gPrintInfoFlag = 0; - - if (gPrintInfoFlag == 1) { - return 0; - } - - gPrintInfoFlag = 1; - - SSMPrintDataInfo("Section reserved0", SSM_RESERVED0_START, SSM_RESERVED0_LEN); - SSMPrintDataInfo("Section HDCP key", SSM_RO_HDCP_KEY_START, SSM_RO_HDCP_KEY_LEN); - SSMPrintDataInfo("Section MAC address", SSM_RO_MAC_START, SSM_RO_MAC_LEN); - SSMPrintDataInfo("Section VGA EDID", SSM_RO_VGA_EDID_START, SSM_RO_VGA_EDID_LEN); - SSMPrintDataInfo("Section HDMI EDID", SSM_RO_HDMI_EDID_START, SSM_RO_HDMI_EDID_LEN); - - SSMPrintDataInfo("Section Mark 01", SSM_MARK_01_START, SSM_MARK_01_LEN); - - SSMPrintDataInfo("Section Audio", SSM_RW_AUDIO_START, SSM_RW_AUDIO_LEN); - SSMPrintDataInfo("Section Audio Master Volume", SSM_AUD_MASTR_VOLUME_VAL, 1); - SSMPrintDataInfo("Section Audio Balance Value", SSM_AUD_BALANCE_VAL, 1); - SSMPrintDataInfo("Section Audio SupperBass Volume", SSM_AUD_SUPPERBASS_VOLUME_VAL, 1); - SSMPrintDataInfo("Section Audio SupperBass Switch", SSM_AUD_SUPPERBASS_SWITCH, 1); - SSMPrintDataInfo("Section Audio SRS Surround Switch", SSM_AUD_SRS_SURROUND_SWITCH, 1); - SSMPrintDataInfo("Section Audio SRS Dialog Clarity Switch", SSM_AUD_SRS_DIALOG_CLARITY_SWITCH, 1); - SSMPrintDataInfo("Section Audio SRS Trubass switch", SSM_AUD_SRS_TRUEBASS_SWITCH, 1); - SSMPrintDataInfo("Section Audio Bass Volume", SSM_AUD_BASS_VOLUME_VAL, 1); - SSMPrintDataInfo("Section Audio Treble Volume", SSM_AUD_TREBLE_VOLUME_VAL, 1); - SSMPrintDataInfo("Section Audio Sound Mode Value", SSM_AUD_SOUND_MODE_VAL, 1); - SSMPrintDataInfo("Section Audio Wall effect switch", SSM_AUD_WALL_EFFCT_SWITCH, 1); - SSMPrintDataInfo("Section Audio spdif switch", SSM_AUD_SPDIF_SWITCH, 1); - SSMPrintDataInfo("Section Audio spdif mode", SSM_AUD_SPDIF_MODE_VAL, 1); - SSMPrintDataInfo("Section Audio Tv Master Volume", SSM_AUD_TV_MASTR_VOLUME_VAL, 1); - SSMPrintDataInfo("Section Audio Sound enhance", SSM_AUD_SOUND_ENHANCE_SWITCH, 1); - SSMPrintDataInfo("Section Audio EQ mode", SSM_AUD_EQ_MODE_VAL, 32); - SSMPrintDataInfo("Section Audio EQ gain", SSM_AUD_EQ_GAIN, 1); - SSMPrintDataInfo("Section Audio No Line points", SSM_AUD_NOLINE_POINTS, 16); - - SSMPrintDataInfo("Section VPP", SSM_RW_VPP_START, SSM_RW_VPP_LEN); - SSMPrintDataInfo("Section VPP color Demo mode", VPP_DATA_POS_COLOR_DEMO_MODE_START, VPP_DATA_POS_COLOR_DEMO_MODE_SIZE); - SSMPrintDataInfo("Section VPP color Base mode", VPP_DATA_POS_COLOR_BASE_MODE_START, VPP_DATA_POS_COLOR_BASE_MODE_SIZE); - SSMPrintDataInfo("Section VPP test pattern", VPP_DATA_POS_TEST_PATTERN_START, VPP_DATA_POS_TEST_PATTERN_SIZE); - SSMPrintDataInfo("Section VPP DDR SSC", VPP_DATA_POS_DDR_SSC_START, VPP_DATA_POS_DDR_SSC_SIZE); - SSMPrintDataInfo("Section VPP LVDS SSC", VPP_DATA_POS_LVDS_SSC_START, VPP_DATA_POS_LVDS_SSC_SIZE); - SSMPrintDataInfo("Section VPP Dream panel", VPP_DATA_POS_DREAM_PANEL_START, VPP_DATA_POS_DREAM_PANEL_SIZE); - SSMPrintDataInfo("Section VPP BackLight Reverse", VPP_DATA_POS_BACKLIGHT_REVERSE_START, VPP_DATA_POS_BACKLIGHT_REVERSE_SIZE); - SSMPrintDataInfo("Section VPP Brightness", VPP_DATA_POS_BRIGHTNESS_START, VPP_DATA_POS_BRIGHTNESS_SIZE); - SSMPrintDataInfo("Section VPP Contrast", VPP_DATA_POS_CONTRAST_START, VPP_DATA_POS_CONTRAST_SIZE); - SSMPrintDataInfo("Section VPP Saturation", VPP_DATA_POS_SATURATION_START, VPP_DATA_POS_SATURATION_SIZE); - SSMPrintDataInfo("Section VPP Hue", VPP_DATA_POS_HUE_START, VPP_DATA_POS_HUE_SIZE); - SSMPrintDataInfo("Section VPP Sharpness", VPP_DATA_POS_SHARPNESS_START, VPP_DATA_POS_SHARPNESS_SIZE); - SSMPrintDataInfo("Section VPP color temp", VPP_DATA_POS_COLOR_TEMP_START, VPP_DATA_POS_COLOR_TEMP_SIZE); - SSMPrintDataInfo("Section VPP Noise Reduction", VPP_DATA_POS_NOISE_REDUCTION_START, VPP_DATA_POS_NOISE_REDUCTION_SIZE); - SSMPrintDataInfo("Section VPP Picture Mode", VPP_DATA_POS_PICTURE_MODE_START, VPP_DATA_POS_PICTURE_MODE_SIZE); - SSMPrintDataInfo("Section VPP Display Mode", VPP_DATA_POS_DISPLAY_MODE_START, VPP_DATA_POS_DISPLAY_MODE_SIZE); - SSMPrintDataInfo("Section VPP BackLight", VPP_DATA_POS_BACKLIGHT_START, VPP_DATA_POS_BACKLIGHT_SIZE); - SSMPrintDataInfo("Section VPP RGB R Gain", VPP_DATA_POS_RGB_GAIN_R_START, VPP_DATA_POS_RGB_GAIN_R_SIZE); - SSMPrintDataInfo("Section VPP RGB G Gain", VPP_DATA_POS_RGB_GAIN_G_START, VPP_DATA_POS_RGB_GAIN_G_SIZE); - SSMPrintDataInfo("Section VPP RGB B Gain", VPP_DATA_POS_RGB_GAIN_B_START, VPP_DATA_POS_RGB_GAIN_B_SIZE); - SSMPrintDataInfo("Section VPP RGB R Offset", VPP_DATA_POS_RGB_POST_OFFSET_R_START, VPP_DATA_POS_RGB_POST_OFFSET_R_SIZE); - SSMPrintDataInfo("Section VPP RGB G Offset", VPP_DATA_POS_RGB_POST_OFFSET_G_START, VPP_DATA_POS_RGB_POST_OFFSET_G_SIZE); - SSMPrintDataInfo("Section VPP RGB B Offset", VPP_DATA_POS_RGB_POST_OFFSET_B_START, VPP_DATA_POS_RGB_POST_OFFSET_B_SIZE); - SSMPrintDataInfo("Section VPP DBC", VPP_DATA_POS_DBC_START, VPP_DATA_POS_DBC_SIZE); - SSMPrintDataInfo("Section VPP Project ID", VPP_DATA_PROJECT_ID_START, VPP_DATA_PROJECT_ID_SIZE); - SSMPrintDataInfo("Section VPP DNLP", VPP_DATA_POS_DNLP_START, VPP_DATA_POS_DNLP_SIZE); - SSMPrintDataInfo("Section VPP Panorama", VPP_DATA_POS_PANORAMA_START, VPP_DATA_POS_PANORAMA_SIZE); - SSMPrintDataInfo("Section VPP APL", VPP_DATA_APL_START, VPP_DATA_APL_SIZE); - SSMPrintDataInfo("Section VPP APL2", VPP_DATA_APL2_START, VPP_DATA_APL2_SIZE); - SSMPrintDataInfo("Section VPP BD", VPP_DATA_BD_START, VPP_DATA_BD_SIZE); - SSMPrintDataInfo("Section VPP BP", VPP_DATA_BP_START, VPP_DATA_BP_SIZE); - SSMPrintDataInfo("Section VPP RGB", VPP_DATA_RGB_START, VPP_DATA_RGB_SIZE); - SSMPrintDataInfo("Section VPP color Space", VPP_DATA_COLOR_SPACE_START, VPP_DATA_COLOR_SPACE_SIZE); - SSMPrintDataInfo("Section VPP User Nature Switch", VPP_DATA_USER_NATURE_SWITCH_START, VPP_DATA_USER_NATURE_SWITCH_SIZE); - SSMPrintDataInfo("Section VPP Gamma value", VPP_DATA_GAMMA_VALUE_START, VPP_DATA_GAMMA_VALUE_SIZE); - - SSMPrintDataInfo("Section VDIN", SSM_RW_VDIN_START, SSM_RW_VDIN_LEN); - SSMPrintDataInfo("Section VDIN source input", TVIN_DATA_POS_SOURCE_INPUT_START, TVIN_DATA_POS_SOURCE_INPUT_SIZE); - SSMPrintDataInfo("Section VDIN CVBS Std", TVIN_DATA_CVBS_STD_START, TVIN_DATA_CVBS_STD_SIZE); - SSMPrintDataInfo("Section VDIN 3D mode", TVIN_DATA_POS_3D_MODE_START, TVIN_DATA_POS_3D_MODE_SIZE); - SSMPrintDataInfo("Section VDIN 3D LR Switch", TVIN_DATA_POS_3D_LRSWITCH_START, TVIN_DATA_POS_3D_LRSWITCH_SIZE); - SSMPrintDataInfo("Section VDIN 3D Depth", TVIN_DATA_POS_3D_DEPTH_START, TVIN_DATA_POS_3D_DEPTH_SIZE); - SSMPrintDataInfo("Section VDIN 3D To 2D", TVIN_DATA_POS_3D_TO2D_START, TVIN_DATA_POS_3D_TO2D_SIZE); - SSMPrintDataInfo("Section VDIN 3D To 2D New", TVIN_DATA_POS_3D_TO2DNEW_START, TVIN_DATA_POS_3D_TO2DNEW_SIZE); - SSMPrintDataInfo("Section VDIN VGA Adjust", TVIN_DATA_POS_VGA_ADJ_VALUE_START, TVIN_DATA_POS_VGA_ADJ_VALUE_SIZE); - SSMPrintDataInfo("Section VDIN ADC Calibration flag", TVIN_DATA_POS_ADC_CAL_FLAG_VALUE_START, TVIN_DATA_POS_ADC_CAL_FLAG_VALUE_SIZE); - SSMPrintDataInfo("Section VDIN ADC Calibration data", TVIN_DATA_POS_ADC_CAL_VALUE_START, TVIN_DATA_POS_ADC_CAL_VALUE_SIZE); - SSMPrintDataInfo("Section VDIN YPbPr ADC Calibration data", TVIN_DATA_YPbPr_ADC_CAL_VALUE_START, TVIN_DATA_YPbPr_ADC_CAL_VALUE_SIZE); - - SSMPrintDataInfo("Section ATV", SSM_RW_ATV_START, SSM_RW_ATV_LEN); - SSMPrintDataInfo("Section ATV Channel Info Data", CC_ATV_SSM_CHAN_INFO_START, CC_ATV_SSM_CHAN_INFO_LEN); - SSMPrintDataInfo("Section ATV Current Channel", CC_ATV_SSM_CURRENT_CHAN_START, CC_ATV_SSM_CURRENT_CHAN_LEN); - SSMPrintDataInfo("Section ATV Channel Total", CC_ATV_SSM_CHAN_TOTAL_START, CC_ATV_SSM_CHAN_TOTAL_LEN); - SSMPrintDataInfo("Section ATV Desc En", CC_ATV_SSM_DESC_EN_START, CC_ATV_SSM_DESC_EN_LEN); - - SSMPrintDataInfo("Section MISC", SSM_RW_MISC_START, SSM_RW_MISC_LEN); - SSMPrintDataInfo("Section MISC FBMF", SSM_RW_FBMF_START, SSM_RW_FBMF_LEN); - SSMPrintDataInfo("Section MISC Def HDCP", SSM_RW_DEF_HDCP_START, SSM_RW_DEF_HDCP_LEN); - SSMPrintDataInfo("Section MISC power channel", SSM_RW_POWER_CHANNEL_START, SSM_RW_POWER_CHANNEL_LEN); - SSMPrintDataInfo("Section MISC last select input src", SSM_RW_LAST_SOURCE_INPUT_START, SSM_RW_LAST_SOURCE_INPUT_LEN); - SSMPrintDataInfo("Section MISC sys language", SSM_RW_SYS_LANGUAGE_START, SSM_RW_SYS_LANGUAGE_LEN); - SSMPrintDataInfo("Section MISC aging mode", SSM_RW_AGING_MODE_START, SSM_RW_AGING_MODE_LEN); - SSMPrintDataInfo("Section MISC panel type", SSM_RW_PANEL_TYPE_START, SSM_RW_PANEL_TYPE_LEN); - SSMPrintDataInfo("Section MISC power on music switch", SSM_RW_POWER_ON_MUSIC_SWITCH_START, SSM_RW_POWER_ON_MUSIC_SWITCH_LEN); - SSMPrintDataInfo("Section MISC power on music vol", SSM_RW_POWER_ON_MUSIC_VOL_START, SSM_RW_POWER_ON_MUSIC_VOL_LEN); - SSMPrintDataInfo("Section MISC system sleep timer", SSM_RW_SYS_SLEEP_TIMER_START, SSM_RW_SYS_SLEEP_TIMER_LEN); - SSMPrintDataInfo("Section MISC input src parental", SSM_RW_INPUT_SRC_PARENTAL_CTL_START, SSM_RW_INPUT_SRC_PARENTAL_CTL_LEN); - SSMPrintDataInfo("Section MISC parental contrl switch", SSM_RW_PARENTAL_CTL_SWITCH_START, SSM_RW_PARENTAL_CTL_SWITCH_LEN); - SSMPrintDataInfo("Section MISC parental contrl passwd", SSM_RW_PARENTAL_CTL_PASSWORD_START, SSM_RW_PARENTAL_CTL_PASSWORD_LEN); - SSMPrintDataInfo("Section MISC serach navigate flag", SSM_RW_SEARCH_NAVIGATE_FLAG_START, SSM_RW_SEARCH_NAVIGATE_FLAG_LEN); - SSMPrintDataInfo("Section MISC input number limit", SSM_RW_INPUT_NUMBER_LIMIT_START, SSM_RW_INPUT_NUMBER_LIMIT_LEN); - SSMPrintDataInfo("Section MISC serial onoff flag", SSM_RW_SERIAL_ONOFF_FLAG_START, SSM_RW_SERIAL_ONOFF_FLAG_LEN); - SSMPrintDataInfo("Section MISC standby mode flag", SSM_RW_STANDBY_MODE_FLAG_START, SSM_RW_STANDBY_MODE_FLAG_LEN); - SSMPrintDataInfo("Section MISC HDMIEQ mode", SSM_RW_HDMIEQ_MODE_START, SSM_RW_HDMIEQ_MODE_LEN); - SSMPrintDataInfo("Section MISC LOGO on/off", SSM_RW_LOGO_ON_OFF_FLAG_START, SSM_RW_LOGO_ON_OFF_FLAG_LEN); - SSMPrintDataInfo("Section MISC Disable 3D", SSM_RW_DISABLE_3D_START, SSM_RW_DISABLE_3D_LEN); - SSMPrintDataInfo("Section MISC Global OGO enable", SSM_RW_GLOBAL_OGO_ENABLE_START, SSM_RW_GLOBAL_OGO_ENABLE_LEN); - SSMPrintDataInfo("Section MISC Local Diming", SSM_RW_LOCAL_DIMING_START, SSM_RW_LOCAL_DIMING_LEN); - SSMPrintDataInfo("Section MISC VDAC 2D", SSM_RW_VDAC_2D_START, SSM_RW_VDAC_2D_LEN); - SSMPrintDataInfo("Section MISC VDAC 3D", SSM_RW_VDAC_3D_START, SSM_RW_VDAC_3D_LEN); - SSMPrintDataInfo("Section MISC Non Standard", SSM_RW_NON_STANDARD_START, SSM_RW_NON_STANDARD_LEN); - SSMPrintDataInfo("Section MISC adb switch", SSM_RW_ADB_SWITCH_START, SSM_RW_ADB_SWITCH_LEN); - SSMPrintDataInfo("Section MISC serial cmd switch", SSM_RW_SERIAL_CMD_SWITCH_START, SSM_RW_SERIAL_CMD_SWITCH_LEN); - SSMPrintDataInfo("Section MISC ca buffer size", SSM_RW_CA_BUFFER_SIZE_START, SSM_RW_CA_BUFFER_SIZE_LEN); - SSMPrintDataInfo("Section MISC noise gate threshold", SSM_RW_NOISE_GATE_THRESHOLD_START, SSM_RW_NOISE_GATE_THRESHOLD_LEN); - SSMPrintDataInfo("Section MISC DTV Type", SSM_RW_DTV_TYPE_START, SSM_RW_DTV_TYPE_LEN); - SSMPrintDataInfo("Section MISC UI graphy backlight", SSM_RW_UI_GRHPHY_BACKLIGHT_START, SSM_RW_UI_GRHPHY_BACKLIGHT_LEN); - SSMPrintDataInfo("Section MISC fast suspend flag", SSM_RW_FASTSUSPEND_FLAG_START, SSM_RW_FASTSUSPEND_FLAG_LEN); - - SSMPrintDataInfo("Section Customer", SSM_RW_CUSTOMER_DATA_START, SSM_RW_CUSTOMER_DATA_LEN); - - SSMPrintDataInfo("Section Mark 02", SSM_MARK_02_START, SSM_MARK_02_LEN); - - SSMPrintDataInfo("Section RW Test", SSM_RW_TEST_START, SSM_RW_TEST_LEN); - - SSMPrintDataInfo("Section Mark 03", SSM_MARK_03_START, SSM_MARK_03_LEN); - - SSMPrintDataInfo("Section Barcode(device id)", SSM_RSV_BAR_CODE_START, SSM_RSV_BAR_CODE_LEN); -#endif - - return 0; -}*/ - -CBlobDevice *CTvSettingDeviceFactory::getSaveDeviceFromConfigFile() -{ - const char *device_type = config_get_str(CFG_SECTION_SETTING, "store.device.type", "file"); - const char *device_path = config_get_str(CFG_SECTION_SETTING, "device_path", "/param/default_data"); - const char *device_size = config_get_str(CFG_SECTION_SETTING, "device_size", "0x1000"); - LOGD("getSaveDeviceFromConfigFile type=%s path=%s size=%s", device_type, device_path, device_size); - - // - if (mpCurDevice != NULL) delete mpCurDevice; - - if (strcmp(device_type, "file") == 0) { - mpCurDevice = new CBlobDeviceFile(); - } else if (strcmp(device_type, "e2prom") == 0) { - } else if (strcmp(device_type, "ram") == 0) { - } - - return mpCurDevice; -} diff --git a/tvapi/libtv/tvsetting/CTvSettingDeviceFactory.h b/tvapi/libtv/tvsetting/CTvSettingDeviceFactory.h deleted file mode 100644 index ecba8ac..0000000 --- a/tvapi/libtv/tvsetting/CTvSettingDeviceFactory.h +++ b/dev/null @@ -1,22 +0,0 @@ -#ifndef TV_SETTING_DEVICE_FACTORY -#define TV_SETTING_DEVICE_FACTORY -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <sys/stat.h> - -#include "CBlobDevice.h" - -#include "../tvconfig/tvconfig.h" - -#include "CTvSettingCfg.h" - -class CTvSettingDeviceFactory { -public: - CTvSettingDeviceFactory(); - ~CTvSettingDeviceFactory(); - CBlobDevice *getSaveDeviceFromConfigFile(); -private: - CBlobDevice *mpCurDevice; -}; -#endif diff --git a/tvapi/libtv/tvsetting/TvKeyData.cpp b/tvapi/libtv/tvsetting/TvKeyData.cpp deleted file mode 100644 index 7e0fab9..0000000 --- a/tvapi/libtv/tvsetting/TvKeyData.cpp +++ b/dev/null @@ -1,1328 +0,0 @@ - -#define LOG_TAG "TvKeyData" -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <unistd.h> -#include <fcntl.h> -#include <errno.h> -#include <sys/stat.h> -#include <sys/wait.h> -#include <cutils/properties.h> - -#include <netinet/ether.h> -#include <netinet/if_ether.h> - -#include <netutils/ifc.h> -#include <netutils/dhcp.h> - -#include "tvconfig/tvconfig.h" -#include "CTvSettingCfg.h" -#include "TvKeyData.h" - - -static unsigned char mHDCPKeyDefHeaderBuf[CC_HDCP_KEY_HEAD_SIZE] = { - //40 bytes - 0x53, 0x4B, 0x59, 0x01, 0x00, 0x10, 0x0D, 0x15, 0x3A, 0x8E, // 000~009 - 0x99, 0xEE, 0x2A, 0x55, 0x58, 0xEE, 0xED, 0x4B, 0xBE, 0x00, // 010~019 - 0x74, 0xA9, 0x00, 0x10, 0x0A, 0x21, 0xE3, 0x30, 0x66, 0x34, // 020~029 - 0xCE, 0x9C, 0xC7, 0x8B, 0x51, 0x27, 0xF9, 0x0B, 0xAD, 0x09, // 030~039 -}; - -static unsigned char mDefHDCPKeyContentBuf[CC_HDCP_KEY_CONTENT_SIZE] = { - //328 bytes - 0x5F, 0x4D, 0xC2, 0xCA, 0xA2, 0x13, 0x06, 0x18, 0x8D, 0x34, // 000~009 - 0x82, 0x46, 0x2D, 0xC9, 0x4B, 0xB0, 0x1C, 0xDE, 0x3D, 0x49, // 010~019 - 0x39, 0x58, 0xEF, 0x2B, 0x68, 0x39, 0x71, 0xC9, 0x4D, 0x25, // 020~029 - 0xE9, 0x75, 0x4D, 0xAC, 0x62, 0xF5, 0xF5, 0x87, 0xA0, 0xB2, // 030~039 - 0x4A, 0x60, 0xD3, 0xF1, 0x09, 0x3A, 0xB2, 0x3E, 0x19, 0x4F, // 040~049 - 0x3B, 0x1B, 0x2F, 0x85, 0x14, 0x28, 0x44, 0xFC, 0x69, 0x6F, // 050~059 - 0x50, 0x42, 0x81, 0xBF, 0x7C, 0x2B, 0x3A, 0x17, 0x2C, 0x15, // 060~069 - 0xE4, 0x93, 0x77, 0x74, 0xE8, 0x1F, 0x1C, 0x38, 0x54, 0x49, // 070~079 - 0x10, 0x64, 0x5B, 0x7D, 0x90, 0x3D, 0xA0, 0xE1, 0x8B, 0x67, // 080~089 - 0x5C, 0x19, 0xE6, 0xCA, 0x9D, 0xE9, 0x68, 0x5A, 0xB5, 0x62, // 090~099 - 0xDF, 0xA1, 0x28, 0xBC, 0x68, 0x82, 0x9A, 0x22, 0xC4, 0xDC, // 100~109 - 0x48, 0x85, 0x0F, 0xF1, 0x3E, 0x05, 0xDD, 0x1B, 0x2D, 0xF5, // 120~119 - 0x49, 0x3A, 0x15, 0x29, 0xE7, 0xB6, 0x0B, 0x2A, 0x40, 0xE3, // 120~129 - 0xB0, 0x89, 0xD5, 0x75, 0x84, 0x2E, 0x76, 0xE7, 0xBC, 0x63, // 130~139 - 0x67, 0xE3, 0x57, 0x67, 0x86, 0x81, 0xF4, 0xD7, 0xEA, 0x4D, // 140~149 - 0x89, 0x8E, 0x37, 0x95, 0x59, 0x1C, 0x8A, 0xCD, 0x79, 0xF8, // 150~159 - 0x4F, 0x82, 0xF2, 0x6C, 0x7E, 0x7F, 0x79, 0x8A, 0x6B, 0x90, // 160~169 - 0xC0, 0xAF, 0x4C, 0x8D, 0x43, 0x47, 0x1F, 0x9A, 0xF1, 0xBB, // 170~179 - 0x88, 0x64, 0x49, 0x14, 0x50, 0xD1, 0xC3, 0xDF, 0xA6, 0x87, // 180~189 - 0xA0, 0x15, 0x98, 0x51, 0x81, 0xF5, 0x97, 0x55, 0x10, 0x4A, // 190~199 - 0x99, 0x30, 0x54, 0xA4, 0xFC, 0xDA, 0x0E, 0xAC, 0x6A, 0xFA, // 200~209 - 0x90, 0xEE, 0x12, 0x70, 0x69, 0x74, 0x63, 0x46, 0x63, 0xFB, // 210~219 - 0xE6, 0x1F, 0x72, 0xEC, 0x43, 0x5D, 0x50, 0xFF, 0x03, 0x4F, // 220~229 - 0x05, 0x33, 0x88, 0x36, 0x93, 0xE4, 0x72, 0xD5, 0xCC, 0x34, // 230~239 - 0x52, 0x96, 0x15, 0xCE, 0xD0, 0x32, 0x52, 0x41, 0x4F, 0xBC, // 240~249 - 0x2D, 0xDF, 0xC5, 0xD6, 0x7F, 0xD5, 0x74, 0xCE, 0x51, 0xDC, // 250~259 - 0x10, 0x5E, 0xF7, 0xAA, 0x4A, 0x2D, 0x20, 0x9A, 0x17, 0xDD, // 260~269 - 0x30, 0x89, 0x71, 0x82, 0x36, 0x50, 0x09, 0x1F, 0x7C, 0xF3, // 270~279 - 0x12, 0xE9, 0x43, 0x10, 0x5F, 0x51, 0xBF, 0xB8, 0x45, 0xA8, // 280~289 - 0x5A, 0x8D, 0x3F, 0x77, 0xE5, 0x96, 0x73, 0x68, 0xAB, 0x73, // 290~299 - 0xE5, 0x4C, 0xFB, 0xE5, 0x98, 0xB9, 0xAE, 0x74, 0xEB, 0x51, // 300~309 - 0xDB, 0x91, 0x07, 0x7B, 0x66, 0x02, 0x9B, 0x79, 0x03, 0xC5, // 310~319 - 0x34, 0x1C, 0x58, 0x13, 0x31, 0xD2, 0x4A, 0xEC, // 320~327 -}; - - -static int TransStringToHex(int data_cnt, char data_buf[], - unsigned char hex_buf[]) -{ - int i = 0, j = 0, tmp_val = 0; - char tmp_buf[3] = { 0, 0, 0 }; - - while (i < data_cnt) { - tmp_val = 0; - tmp_buf[0] = data_buf[i]; - tmp_buf[1] = data_buf[i + 1]; - tmp_val = strtoul(tmp_buf, NULL, 16); - hex_buf[j] = tmp_val; - //LOGD("%s, hex_buf[%d] = 0x%x\n", __FUNCTION__, j, hex_buf[j]); - i += 2; - j += 1; - } - - return j; -} - -static int TransToHexString(int hex_cnt, char data_buf[], - unsigned char hex_buf[]) -{ - int i = 0, j = 0; - char tmp_buf[17] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; - - data_buf[0] = 0; - for (i = 0; i < hex_cnt; i++) { - sprintf(tmp_buf, "%02X", (unsigned char) hex_buf[i]); - strcat(data_buf, tmp_buf); - } - - return 2 * hex_cnt; -} - -int ReadKeyData(const char *key_name, unsigned char data_buf[]) -{ - FILE *dev_fp = NULL; - int i = 0, rd_cnt = 0; - - dev_fp = fopen(CS_KEY_DATA_NAME_DEV_PATH, "w"); - if (dev_fp == NULL) { - LOGE("%s, open %s ERROR(%s)!!\n", __FUNCTION__, - CS_KEY_DATA_NAME_DEV_PATH, strerror(errno)); - return -1; - } - - fprintf(dev_fp, "%s", key_name); - - fclose(dev_fp); - dev_fp = NULL; - - dev_fp = fopen(CS_KEY_DATA_READ_DEV_PATH, "r"); - if (dev_fp == NULL) { - LOGE("%s, open %s ERROR(%s)!!\n", __FUNCTION__, - CS_KEY_DATA_READ_DEV_PATH, strerror(errno)); - return -1; - } - - fscanf(dev_fp, "%s", data_buf); - - rd_cnt = strlen((char *)data_buf); - - fclose(dev_fp); - dev_fp = NULL; - - return rd_cnt; -} - -int WriteKeyData(const char *key_name, int wr_size, char data_buf[]) -{ - FILE *dev_fp = NULL; - int wr_cnt = 0; - - dev_fp = fopen(CS_KEY_DATA_NAME_DEV_PATH, "w"); - if (dev_fp == NULL) { - LOGE("%s, open %s ERROR(%s)!!\n", __FUNCTION__, - CS_KEY_DATA_NAME_DEV_PATH, strerror(errno)); - return -1; - } - - fprintf(dev_fp, "%s", key_name); - - fclose(dev_fp); - dev_fp = NULL; - - dev_fp = fopen(CS_KEY_DATA_WRITE_DEV_PATH, "w"); - if (dev_fp == NULL) { - LOGE("%s, open %s ERROR(%s)!!\n", __FUNCTION__, - CS_KEY_DATA_WRITE_DEV_PATH, strerror(errno)); - return -1; - } - - wr_cnt = fwrite(data_buf, 1, wr_size, dev_fp); - - fclose(dev_fp); - dev_fp = NULL; - - return wr_cnt; -} - -int KeyData_GetMacAddressDataLen() -{ - return CC_MAC_LEN; -} - -int KeyData_ReadMacAddress(unsigned char data_buf[]) -{ - int i = 0, rd_size = 0; - int data_i_buf[CC_MAC_LEN] = { 0, 0, 0, 0, 0, 0 }; - unsigned char rd_buf[128] = { 0 }; - unsigned char tmp_buf[128] = { 0 }; - - memset((void *)rd_buf, 0 , 128); - rd_size = ReadKeyData(CS_MAC_KEY_NAME, rd_buf); - LOGD("%s, rd_size = %d\n", __FUNCTION__, rd_size); - -#if ANDROID_PLATFORM_SDK_VERSION == 19 - memcpy((void *)tmp_buf, (void *)rd_buf, 128); - rd_size = TransStringToHex(rd_size, (char *)rd_buf, tmp_buf); -#endif - -#if ANDROID_PLATFORM_SDK_VERSION >= 21 - memcpy((void *)tmp_buf, (void *)rd_buf, 128); -#endif - - if (rd_size == 17) { - sscanf((char *) tmp_buf, "%02x:%02x:%02x:%02x:%02x:%02x", - &data_i_buf[0], &data_i_buf[1], &data_i_buf[2], &data_i_buf[3], - &data_i_buf[4], &data_i_buf[5]); - for (i = 0; i < CC_MAC_LEN; i++) { - data_buf[i] = data_i_buf[i] & 0xFF; - } - - return KeyData_GetMacAddressDataLen(); - } - - return 0; -} - -int KeyData_SaveMacAddress(unsigned char data_buf[]) -{ - int tmp_ret = 0, wr_size = 0; - unsigned char hex_buf[128] = { 0 }; - char tmp_buf[128] = { 0 }; - - sprintf((char *) hex_buf, "%02x:%02x:%02x:%02x:%02x:%02x", data_buf[0], - data_buf[1], data_buf[2], data_buf[3], data_buf[4], data_buf[5]); - -#if ANDROID_PLATFORM_SDK_VERSION == 19 - memset((void *)tmp_buf, 0, 128); - TransToHexString(strlen((char *) hex_buf), tmp_buf, hex_buf); -#endif - -#if ANDROID_PLATFORM_SDK_VERSION >= 21 - memset((void *)tmp_buf, 0, 128); - memcpy(tmp_buf, (const char *)hex_buf, strlen((char *) hex_buf)); -#endif - - wr_size = strlen(tmp_buf); - tmp_ret = WriteKeyData(CS_MAC_KEY_NAME, wr_size, tmp_buf); - if (tmp_ret != wr_size) { - return -1; - } - - CreateMacAddressStartWorkThread(); - - return 0; -} - -static int gSSMBarCodeLen = -1; -int KeyData_GetBarCodeDataLen() -{ - const char *config_value; - - if (gSSMBarCodeLen <= 0) { - config_value = config_get_str(CFG_SECTION_TV, CS_BARCODE_LEN_CFG, "null"); - if (strcmp(config_value, "null") == 0) { - gSSMBarCodeLen = 32; - } else { - gSSMBarCodeLen = strtol(config_value, NULL, 10); - } - } - - return gSSMBarCodeLen; -} - -int KeyData_ReadBarCode(unsigned char data_buf[]) -{ - int rd_size = 0, tmp_len = 0; - unsigned char rd_buf[CC_MAX_KEY_DATA_SIZE] = { 0 }; - - tmp_len = KeyData_GetBarCodeDataLen(); - rd_size = ReadKeyData(CS_BARCODE_KEY_NAME, rd_buf); - LOGD("%s, rd_size = %d\n", __FUNCTION__, rd_size); - -#if ANDROID_PLATFORM_SDK_VERSION == 19 - unsigned char tmp_buf[CC_MAX_KEY_DATA_SIZE] = { 0 }; - - memcpy((void *)tmp_buf, (void *)rd_buf, CC_MAX_KEY_DATA_SIZE); - rd_size = TransStringToHex(rd_size, (char *)rd_buf, tmp_buf); - - if (rd_size == tmp_len) { - memcpy(data_buf, tmp_buf, rd_size); - return rd_size; - } -#endif - -#if ANDROID_PLATFORM_SDK_VERSION >= 21 - if (rd_size == tmp_len) { - memcpy(data_buf, rd_buf, rd_size); - return rd_size; - } -#endif - - return 0; -} - -int KeyData_SaveBarCode(unsigned char data_buf[]) -{ - int tmp_len = 0, wr_size = 0; - char tmp_buf[CC_MAX_KEY_DATA_SIZE] = { 0 }; - - tmp_len = KeyData_GetBarCodeDataLen(); - -#if ANDROID_PLATFORM_SDK_VERSION == 19 - memset((void *)tmp_buf, 0, CC_MAX_KEY_DATA_SIZE); - TransToHexString(tmp_len, tmp_buf, data_buf); -#endif - -#if ANDROID_PLATFORM_SDK_VERSION >= 21 - memset((void *)tmp_buf, 0, CC_MAX_KEY_DATA_SIZE); - memcpy(tmp_buf, (const char *)data_buf, strlen((char *) data_buf)); -#endif - - wr_size = strlen(tmp_buf); - tmp_len = WriteKeyData(CS_BARCODE_KEY_NAME, wr_size, tmp_buf); - if (tmp_len != wr_size) { - return -1; - } - - return 0; -} - -int SSMReadHDCPKey(unsigned char hdcp_key_buf[]) -{ - int tmp_ret = 0, rd_size = 0; - unsigned char rd_buf[CC_MAX_KEY_DATA_SIZE] = { 0 }; - unsigned char tmp_buf[CC_MAX_KEY_DATA_SIZE] = { 0 }; - - tmp_ret = GetHDCPKeyFromFile(0, CC_HDCP_KEY_TOTAL_SIZE, hdcp_key_buf); - if (tmp_ret < 0) { - rd_size = ReadKeyData(CS_RX_HDCP_KEY_NAME, rd_buf); - LOGD("%s, rd_size = %d\n", __FUNCTION__, rd_size); - - memcpy((void *)tmp_buf, (void *)rd_buf, CC_MAX_KEY_DATA_SIZE); - rd_size = TransStringToHex(rd_size, (char *)rd_buf, tmp_buf); - - if (rd_size == CC_HDCP_KEY_TOTAL_SIZE) { - memcpy(hdcp_key_buf, tmp_buf, CC_HDCP_KEY_TOTAL_SIZE); - return rd_size; - } - - return 0; - } - - return CC_HDCP_KEY_TOTAL_SIZE; -} - - - -int SSMSaveHDCPKey(unsigned char hdcp_key_buf[]) -{ - int tmp_ret = 0, wr_size = 0; - char tmp_buf[CC_MAX_KEY_DATA_SIZE] = { 0 }; - - tmp_ret = SaveHDCPKeyToFile(0, CC_HDCP_KEY_TOTAL_SIZE, hdcp_key_buf); - if (tmp_ret < 0) { - memset((void *)tmp_buf, 0, CC_MAX_KEY_DATA_SIZE); - TransToHexString(CC_HDCP_KEY_TOTAL_SIZE, tmp_buf, hdcp_key_buf); - - wr_size = strlen(tmp_buf); - tmp_ret = WriteKeyData(CS_RX_HDCP_KEY_NAME, wr_size, tmp_buf); - if (tmp_ret != wr_size) { - tmp_ret = -1; - } else { - tmp_ret = 0; - } - } - - return tmp_ret; -} - -int SSMSetHDCPKey() -{ - - int i = 0; - unsigned char hdcp_key_buf[CC_HDCP_KEY_TOTAL_SIZE]; - - if (GetSSMHandleHDCPKeyEnableCFG() == 1) { - if (GetSSMHandleHDCPKeyDemoEnableCFG() == 1) { - return SSMSetDefaultHDCPKey(hdcp_key_buf); - } else { - if (SSMReadHDCPKey(hdcp_key_buf) == CC_HDCP_KEY_TOTAL_SIZE) { - LOGD("%s, using ssm's hdcp key.\n", __FUNCTION__); - return RealHandleHDCPKey(hdcp_key_buf); - } - } - } - - return -1; -} - -int SSMRefreshHDCPKey() -{ - int ret = -1; - ret = SSMSetHDCPKey(); - system ( "/system/bin/dec" ); - return ret; -} - -int SSMGetHDCPKeyDataLen() -{ - return CC_HDCP_KEY_TOTAL_SIZE; -} - -//hdmi edid -int SSMSetHDMIEdid(int port) -{ - int i = 0; - unsigned char customer_hdmi_edid_buf[CC_CUSTOMER_HDMI_EDID_TOTAL_SIZE]; - unsigned char hdmi_edid_buf[SSM_HDMI_EDID_SIZE]; - - if (port < 1 && port > SSM_HDMI_PORT_MAX) { - LOGD("%s, hdmi port error.%d\n", __FUNCTION__, port); - return -1; - } - - if (GetSSMHandleHDMIEdidByCustomerEnableCFG() == 1) { - if (SSMReadHDMIEdid(port, hdmi_edid_buf) == 0) { - LOGD("%s, using ssm's hdmi edid.\n", __FUNCTION__); - LOGD("%s, begin to write hdmi edid:0x%x, 0x%x, 0x%x, 0x%x.\n", - __FUNCTION__, hdmi_edid_buf[8], hdmi_edid_buf[9], - hdmi_edid_buf[10], hdmi_edid_buf[255]); - if ( AppendEdidPrefixCode(customer_hdmi_edid_buf, hdmi_edid_buf) == 0 ) - return RealHandleHDMIEdid(customer_hdmi_edid_buf); - } - } - - return -1; -} - -int SSMReadHDMIEdid(int port, unsigned char hdmi_edid_buf[]) -{ - int tmp_ret = 0; - LOGD("%s, read hdmi edid from bin file.\n", __FUNCTION__); - tmp_ret = GetHDMIEdidFromFile(0, SSM_HDMI_EDID_SIZE, port, hdmi_edid_buf); - if (tmp_ret < 0) { - LOGD("%s, read hdmi edid error.\n", __FUNCTION__); - } else { - LOGD("%s, 0x%x, 0x%x, 0x%x, 0x%x.\n", __FUNCTION__, hdmi_edid_buf[8], - hdmi_edid_buf[9], hdmi_edid_buf[10], hdmi_edid_buf[255]); - } - return tmp_ret; -} - -int KeyData_SaveProjectID(int rw_val) -{ - int tmp_ret = 0, wr_size = 0; - char tmp_buf[64] = { 0 }; - - sprintf(tmp_buf, "%08X", rw_val); - - wr_size = strlen(tmp_buf); - tmp_ret = WriteKeyData(CS_PROJECT_ID_KEY_NAME, wr_size, tmp_buf); - if (tmp_ret != wr_size) { - return -1; - } - - return 0; -} - -int KeyData_ReadProjectID() -{ - int rd_size = 0, tmp_val = 0; - unsigned char tmp_buf[64] = { 0 }; - - rd_size = ReadKeyData(CS_PROJECT_ID_KEY_NAME, tmp_buf); - LOGD("%s, rd_size = %d\n", __FUNCTION__, rd_size); - if (rd_size == 4) { - tmp_val = 0; - tmp_val |= tmp_buf[0] << 24; - tmp_val |= tmp_buf[1] << 16; - tmp_val |= tmp_buf[2] << 8; - tmp_val |= tmp_buf[3] << 0; - } - - return tmp_val; -} - -int SSMSaveRGBOGOValue(int offset, int size, unsigned char data_buf[]) -{ - return SaveRGBOGOToFile(offset, size, data_buf); -} - -int SSMReadRGBOGOValue(int offset, int size, unsigned char data_buf[]) -{ - return GetRGBOGOFromFile(offset, size, data_buf); -} - -int SSMSaveAudioNoLinePoints(int offset, int size, unsigned char tmp_buf[]) -{ - return SaveAudioNoLinePointsDataToFile(offset, size, tmp_buf); -} - -int SSMReadAudioNoLinePoints(int offset, int size, unsigned char tmp_buf[]) -{ - return GetAudioNoLinePointsDataFromFile(offset, size, tmp_buf); -} - -/**************************** start mac address static functions ****************************/ -#define CC_ERR_THREAD_ID (0) - -static pthread_t mMacAddressStartWorkThreadID = CC_ERR_THREAD_ID; - -static volatile unsigned int mMacAddressLow = -1; -static volatile unsigned int mMacAddressHigh = -1; -static volatile int mMacAddressStartWorkThreadExecFlag = -1; -static volatile int mMacAddressStartWorkThreadTurnOnFlag = -1; - -static pthread_mutex_t mac_address_low_mutex = PTHREAD_MUTEX_INITIALIZER; -static pthread_mutex_t mac_address_high_mutex = PTHREAD_MUTEX_INITIALIZER; -static pthread_mutex_t mac_address_exec_mutex = PTHREAD_MUTEX_INITIALIZER; -static pthread_mutex_t mac_address_turnon_mutex = PTHREAD_MUTEX_INITIALIZER; - -static int GetSSMMacAddressStartWorkEnableCFG() -{ - const char *config_value; - - config_value = config_get_str(CFG_SECTION_TV, CS_MAC_ADDRESS_STARTWRK_EN_CFG, "null"); - if (strcmp(config_value, "null") == 0) { - LOGD( - "%s, get config is \"%s\", return 0 to not enable mac address start work.\n", - __FUNCTION__, config_value); - return 0; - } - - return strtoul(config_value, NULL, 10); -} - -static unsigned int SetMacAddressLow(unsigned int low_val) -{ - unsigned int tmp_val; - - pthread_mutex_lock(&mac_address_low_mutex); - - tmp_val = mMacAddressLow; - - mMacAddressLow = low_val; - - pthread_mutex_unlock(&mac_address_low_mutex); - - return tmp_val; -} - -static unsigned int GetMacAddressLow() -{ - unsigned int tmp_val = 0; - - pthread_mutex_lock(&mac_address_low_mutex); - - tmp_val = mMacAddressLow; - - pthread_mutex_unlock(&mac_address_low_mutex); - - return tmp_val; -} - -static unsigned int SetMacAddressHigh(unsigned int high_val) -{ - unsigned int tmp_val; - - pthread_mutex_lock(&mac_address_high_mutex); - - tmp_val = mMacAddressHigh; - - mMacAddressHigh = high_val; - - pthread_mutex_unlock(&mac_address_high_mutex); - - return tmp_val; -} - -static unsigned int GetMacAddressHigh() -{ - int tmp_val = 0; - - pthread_mutex_lock(&mac_address_high_mutex); - - tmp_val = mMacAddressHigh; - - pthread_mutex_unlock(&mac_address_high_mutex); - - return tmp_val; -} - -static int SetMacAddressStartWorkThreadExecFlag(int tmp_flag) -{ - int tmp_val; - - pthread_mutex_lock(&mac_address_exec_mutex); - - tmp_val = mMacAddressStartWorkThreadExecFlag; - - mMacAddressStartWorkThreadExecFlag = tmp_flag; - - pthread_mutex_unlock(&mac_address_exec_mutex); - - return tmp_val; -} - -static int GetMacAddressStartWorkThreadExecFlag() -{ - int tmp_val = 0; - - pthread_mutex_lock(&mac_address_exec_mutex); - - tmp_val = mMacAddressStartWorkThreadExecFlag; - - pthread_mutex_unlock(&mac_address_exec_mutex); - - return tmp_val; -} - -static int SetMacAddressStartWorkThreadTurnOnFlag(int tmp_flag) -{ - int tmp_val; - - pthread_mutex_lock(&mac_address_turnon_mutex); - - tmp_val = mMacAddressStartWorkThreadTurnOnFlag; - - mMacAddressStartWorkThreadTurnOnFlag = tmp_flag; - - pthread_mutex_unlock(&mac_address_turnon_mutex); - - return tmp_val; -} - -static int GetMacAddressStartWorkThreadTurnOnFlag() -{ - int tmp_val = 0; - - pthread_mutex_lock(&mac_address_turnon_mutex); - - tmp_val = mMacAddressStartWorkThreadTurnOnFlag; - - pthread_mutex_unlock(&mac_address_turnon_mutex); - - return tmp_val; -} - -static void *SSMMacAddressStartWorkMainApp(void *data __unused) -{ - unsigned int curMacAddrLow = 0, curMacAddrHigh = 0; - int p_status; - char ssm_addr_str[128]; - const char *iname = "eth0"; - pid_t pid; - - LOGD("%s, entering...\n", __FUNCTION__); - - if (GetSSMMacAddressStartWorkEnableCFG() == 0) { - LOGE("%s, ssm mac address start work is not enable.\n", CFG_SECTION_TV); - return NULL; - } - - curMacAddrLow = GetMacAddressLow(); - curMacAddrHigh = GetMacAddressHigh(); - - while (GetMacAddressStartWorkThreadTurnOnFlag() == 1) { - pid = fork(); - if (pid == 0) { - if (execl("/system/bin/stop", "stop_eth_dhcpcd", "eth_dhcpcd", NULL) - < 0) { - _exit(-1); - } - _exit(0); - } - waitpid(pid, &p_status, 0); - - ifc_init(); - - ifc_down(iname); - - sprintf(ssm_addr_str, "%02x:%02x:%02x:%02x:%02x:%02x", - ((curMacAddrLow >> 0) & 0xFF), ((curMacAddrLow >> 8) & 0xFF), - ((curMacAddrLow >> 16) & 0xFF), ((curMacAddrLow >> 24) & 0xFF), - ((curMacAddrHigh >> 0) & 0xFF), ((curMacAddrHigh >> 8) & 0xFF)); - struct ether_addr *addr = ether_aton(ssm_addr_str); - if (addr) { - ifc_set_hwaddr(iname, addr->ether_addr_octet); - } - - ifc_up(iname); - - ifc_close(); - - if (curMacAddrLow == GetMacAddressLow() - && curMacAddrHigh == GetMacAddressHigh()) { - break; - } - - curMacAddrLow = GetMacAddressLow(); - curMacAddrHigh = GetMacAddressHigh(); - } - - return NULL; -} - -static void *SSMMacAddressStartWorkThreadMain(void *data __unused) -{ - void *tmp_ret = NULL; - SetMacAddressStartWorkThreadExecFlag(1); - tmp_ret = SSMMacAddressStartWorkMainApp(NULL); - SetMacAddressStartWorkThreadExecFlag(0); - return tmp_ret; -} - -static int KillMacAddressStartWorkThread() -{ - int i = 0, tmp_timeout_count = 600; - - SetMacAddressStartWorkThreadTurnOnFlag(0); - while (1) { - if (GetMacAddressStartWorkThreadExecFlag() == 0) { - break; - } - - if (i >= tmp_timeout_count) { - break; - } - - i++; - - usleep(100 * 1000); - } - - if (i == tmp_timeout_count) { - LOGE( - "%s, we have try %d times, but the mac address start work thread's exec flag is still(%d)!!!\n", - CFG_SECTION_TV, tmp_timeout_count, - GetMacAddressStartWorkThreadExecFlag()); - return -1; - } - - pthread_join(mMacAddressStartWorkThreadID, NULL); - mMacAddressStartWorkThreadID = CC_ERR_THREAD_ID; - - LOGD("%s, kill the mac address start work thread sucess.\n", __FUNCTION__); - - return 0; -} - -int CreateMacAddressStartWorkThread() -{ - unsigned int macAddrLow = 0, macAddrHigh = 0; - pthread_attr_t attr; - struct sched_param param; - unsigned char ssm_addr_buf[16] = { 0, 0, 0, 0, 0, 0 }; - - if (KeyData_ReadMacAddress(ssm_addr_buf) < 0) { - return -1; - } - - macAddrLow = 0; - macAddrLow |= ((ssm_addr_buf[0] & 0xFF) << 0); - macAddrLow |= ((ssm_addr_buf[1] & 0xFF) << 8); - macAddrLow |= ((ssm_addr_buf[2] & 0xFF) << 16); - macAddrLow |= ((ssm_addr_buf[3] & 0xFF) << 24); - - macAddrHigh = 0; - macAddrHigh |= ((ssm_addr_buf[4] & 0xFF) << 0); - macAddrHigh |= ((ssm_addr_buf[5] & 0xFF) << 8); - - if (mMacAddressStartWorkThreadID != CC_ERR_THREAD_ID) { - if (GetMacAddressStartWorkThreadExecFlag() == 1) { - SetMacAddressLow(macAddrLow); - SetMacAddressHigh(macAddrHigh); - return 0; - } else { - KillMacAddressStartWorkThread(); - } - } - - SetMacAddressLow(macAddrLow); - SetMacAddressHigh(macAddrHigh); - SetMacAddressStartWorkThreadTurnOnFlag(1); - - pthread_attr_init(&attr); - pthread_attr_setschedpolicy(&attr, SCHED_RR); - param.sched_priority = 20; - pthread_attr_setschedparam(&attr, ¶m); - - if (pthread_create(&mMacAddressStartWorkThreadID, &attr, - SSMMacAddressStartWorkThreadMain, NULL) < 0) { - pthread_attr_destroy(&attr); - mMacAddressStartWorkThreadID = CC_ERR_THREAD_ID; - return -1; - } - - pthread_attr_destroy(&attr); - - LOGD("%s, create channel select thread sucess.\n", __FUNCTION__); - - return 0; -} -/**************************** end mac address static functions ****************************/ - -/**************************** start hdcp key static functions ****************************/ -int GetSSMHandleHDCPKeyEnableCFG() -{ - const char *config_value; - - config_value = config_get_str(CFG_SECTION_TV, CS_HDCP_KEY_EN_CFG, "null"); -#if 0 - LOGD("%s, get \"%s\" is \"%s\".\n", __FUNCTION__, CS_HDCP_KEY_EN_CFG, - config_value); -#endif - if (strcmp(config_value, "null") == 0) { - LOGD( - "%s, get config \"%s\" is \"%s\", return 0 to not enable handle hdcp key.\n", - __FUNCTION__, CS_HDCP_KEY_EN_CFG, config_value); - return 0; - } - - return strtoul(config_value, NULL, 10); -} - -int GetSSMHandleHDCPKeyDemoEnableCFG() -{ - const char *config_value; - - config_value = config_get_str(CFG_SECTION_TV, CS_HDCP_KEY_DEMO_EN_CFG, "null"); -#if 0 - LOGD("%s, get \"%s\" is \"%s\".\n", __FUNCTION__, CS_HDCP_KEY_DEMO_EN_CFG, - config_value); -#endif - if (strcmp(config_value, "null") == 0) { - LOGD( - "%s, get config \"%s\" is \"%s\", return 0 to not enable handle hdcp key demo.\n", - __FUNCTION__, CS_HDCP_KEY_DEMO_EN_CFG, config_value); - return 0; - } - - return strtoul(config_value, NULL, 10); -} - - -int SSMSetDefaultHDCPKey(unsigned char hdcp_key_buf[]) -{ - int i = 0; - - for (i = 0; i < CC_HDCP_KEY_HEAD_SIZE; i++) { - hdcp_key_buf[i] = mHDCPKeyDefHeaderBuf[i]; - } - - for (i = 0; i < CC_HDCP_KEY_CONTENT_SIZE; i++) { - hdcp_key_buf[i + CC_HDCP_KEY_HEAD_SIZE] = mDefHDCPKeyContentBuf[i]; - } - - LOGD("%s, using default hdcp key.\n", __FUNCTION__); - - return RealHandleHDCPKey(hdcp_key_buf); -} - -int RealHandleHDCPKey(unsigned char hdcp_key_buf[]) -{ - int i = 0, dev_fd = -1; - - if (hdcp_key_buf == NULL) { - return -1; - } - - dev_fd = open("/sys/class/hdmirx/hdmirx0/edid", O_RDWR); - if (dev_fd < 0) { - LOGE("%s, open edid file ERROR(%s)!!\n", CFG_SECTION_TV, strerror(errno)); - return -1; - } - - if (write(dev_fd, hdcp_key_buf, CC_HDCP_KEY_TOTAL_SIZE) < 0) { - close(dev_fd); - dev_fd = -1; - LOGE("%s, write edid file ERROR(%s)!!\n", CFG_SECTION_TV, strerror(errno)); - - return -1; - } - - close(dev_fd); - dev_fd = -1; - return 0; -} - -/**************************** end hdcp key static functions ****************************/ - -/**************************** start hdmi edid static functions ****************************/ -int GetSSMHandleHDMIEdidByCustomerEnableCFG() -{ - const char *config_value; - - config_value = config_get_str(CFG_SECTION_TV, CFG_SSM_HDMI_EDID_EN, "null"); - if (strcmp(config_value, "null") == 0) { - LOGD( - "%s, get config \"%s\" is \"%s\", return 0 to not enable handle hdmi edid by customer.\n", - __FUNCTION__, CFG_SSM_HDMI_EDID_EN, config_value); - return 0; - } - - return strtoul(config_value, NULL, 10); -} - -int RealHandleHDMIEdid(unsigned char customer_hdmi_edid_buf[]) -{ - int i = 0, dev_fd = -1; - - if (customer_hdmi_edid_buf == NULL) { - return -1; - } - - dev_fd = open("/sys/class/hdmirx/hdmirx0/edid", O_RDWR); - if (dev_fd < 0) { - LOGE("%s, open edid file ERROR(%s)!!\n", CFG_SECTION_TV, strerror(errno)); - return -1; - } - - if (write(dev_fd, customer_hdmi_edid_buf, CC_CUSTOMER_HDMI_EDID_TOTAL_SIZE) - < 0) { - close(dev_fd); - dev_fd = -1; - LOGE("%s, write edid file ERROR(%s)!!\n", CFG_SECTION_TV, strerror(errno)); - - return -1; - } - - close(dev_fd); - dev_fd = -1; - return 0; -} - -int AppendEdidPrefixCode(unsigned char customer_hdmi_edid_buf[], - unsigned char hdmi_edid_buf[]) -{ - if (customer_hdmi_edid_buf == NULL || hdmi_edid_buf == NULL) { - LOGE("%s, Append hdmi edid's prefixCode ERROR(%s)!!\n", CFG_SECTION_TV, - strerror(errno)); - return -1; - } - memset(customer_hdmi_edid_buf, 0, - sizeof(char) * CC_CUSTOMER_HDMI_EDID_TOTAL_SIZE); - customer_hdmi_edid_buf[0] = 'E'; - customer_hdmi_edid_buf[1] = 'D'; - customer_hdmi_edid_buf[2] = 'I'; - customer_hdmi_edid_buf[3] = 'D'; - memcpy(customer_hdmi_edid_buf + 4, hdmi_edid_buf, - CC_CUSTOMER_HDMI_EDID_TOTAL_SIZE - 4); - /* - LOGD("%s, customer_hdmi_edid_buf: %c,%c,%c,%c,%x,%x,%x,%x.\n", __FUNCTION__, - customer_hdmi_edid_buf[0],customer_hdmi_edid_buf[1],customer_hdmi_edid_buf[2],customer_hdmi_edid_buf[3], - customer_hdmi_edid_buf[12],customer_hdmi_edid_buf[13],customer_hdmi_edid_buf[14],customer_hdmi_edid_buf[15]);*/ - /* - LOGD("%s, customer_hdmi_edid_buf: \n", __FUNCTION__); - int i, j; - for (i = 0; i < 16; i++) { - LOGD("[%2d] ", i); - for (j = 0; j < 16; j++) { - LOGD("0x%02lx, ", customer_hdmi_edid_buf[4 + (i*16 + j)]); - } - LOGD("\n"); - }*/ - return 0; -} - -/**************************** end hdmi edid static functions ****************************/ - -/**************************** start critical data op functions ****************************/ -#define CC_OP_TYPE_READ (0) -#define CC_OP_TYPE_SAVE (1) -#define CC_DATA_TYPE_CHAR (0) -#define CC_DATA_TYPE_INT (1) - -typedef int (*op_fun_ptr)(char *, int, int, unsigned char *); - -typedef struct tagRWDataInfo { - int op_type; - int data_type; - int max_size; - int rw_off; - int rw_size; - void *data_buf; - char *path_cfg_name; - char *off_cfg_name; - op_fun_ptr op_cb; -} RWDataInfo; - -static int GetFilePathCFG(char *key_str, char path_buf[]) -{ - int tmp_ret = 0; - const char *cfg_value; - - path_buf[0] = '\0'; - cfg_value = config_get_str(CFG_SECTION_TV, key_str, ""); - strcpy(path_buf, cfg_value); -#if 0 - LOGD("%s, get \"%s\" is \"%s\".\n", CFG_SECTION_TV, key_str, path_buf); -#endif - return tmp_ret; -} - -static int GetFileOffsetCFG(char *key_str) -{ - const char *cfg_value; - - cfg_value = config_get_str(CFG_SECTION_TV, key_str, "null"); -#if 0 - LOGD("%s, get \"%s\" is \"%s\".\n", CFG_SECTION_TV, key_str, cfg_value); -#endif - if (strcmp(cfg_value, "null") == 0) { - LOGD("%s, get config \"%s\" is \"%s\", return 0 for default.\n", CFG_SECTION_TV, - key_str, cfg_value); - return 0; - } - - return strtol(cfg_value, NULL, 10); -} - -static int handleDataFilePath(char *file_name, int offset __unused, int nsize __unused, char file_path[] __unused) -{ - if (file_name == NULL) { - LOGE("%s, file_name is NULL!!!\n", CFG_SECTION_TV); - return -1; - } - - return 0; -} - -static int ReadDataFromFile(char *file_name, int offset, int nsize, - unsigned char data_buf[]) -{ - int device_fd = -1; - int tmp_ret = 0; - char *tmp_ptr = NULL; - char file_path[512] = { '\0' }; - - if (data_buf == NULL) { - LOGE("%s, data_buf is NULL!!!\n", CFG_SECTION_TV); - return -1; - } - - tmp_ret = handleDataFilePath(file_name, offset, nsize, file_path); - if (tmp_ret < 0) { - tmp_ptr = NULL; - } else if (tmp_ret == 0) { - tmp_ptr = file_name; - } else if (tmp_ret == 1) { - tmp_ptr = file_path; - } - - if (tmp_ptr == NULL) { - return -1; - } - - device_fd = open(tmp_ptr, O_RDONLY); - if (device_fd < 0) { - LOGE("%s: open file \"%s\" error(%s).\n", CFG_SECTION_TV, file_name, - strerror(errno)); - return -1; - } - - lseek(device_fd, offset, SEEK_SET); - read(device_fd, data_buf, nsize); - - close(device_fd); - device_fd = -1; - - return 0; -} - -static int SaveDataToFile(char *file_name, int offset, int nsize, - unsigned char data_buf[]) -{ - int device_fd = -1; - int i = 0, tmp_ret = 0; - char *tmp_ptr = NULL; - char file_path[512] = { '\0' }; - - if (data_buf == NULL) { - LOGE("%s, data_buf is NULL!!!\n", CFG_SECTION_TV); - return -1; - } - - tmp_ret = handleDataFilePath(file_name, offset, nsize, file_path); - if (tmp_ret < 0) { - tmp_ptr = NULL; - } else if (tmp_ret == 0) { - tmp_ptr = file_name; - } else if (tmp_ret == 1) { - tmp_ptr = file_path; - } - - if (tmp_ptr == NULL) { - return -1; - } - - device_fd = open(tmp_ptr, O_RDWR | O_SYNC); - if (device_fd < 0) { - LOGE("%s: open file \"%s\" error(%s).\n", CFG_SECTION_TV, file_name, - strerror(errno)); - return -1; - } - - lseek(device_fd, offset, SEEK_SET); - write(device_fd, data_buf, nsize); - fsync(device_fd); - - close(device_fd); - device_fd = -1; - - return 0; -} - -static int RealRWData(RWDataInfo *data_info) -{ - int i = 0, file_off = 0; - char file_name[256] = { '\0' }; - - memset(file_name, '\0', 256); - GetFilePathCFG(data_info->path_cfg_name, file_name); -#if 0 - LOGD("%s, file_name is %s.\n", __FUNCTION__, file_name); -#endif - if (strlen(file_name) == 0) { - LOGE("%s, length of file_name is 0!!!\n", CFG_SECTION_TV); - return -2; - } - - if (data_info->rw_off < 0) { - LOGE("%s, data_info->rw_off (%d) is less than 0!!!\n", CFG_SECTION_TV, - data_info->rw_off); - return -1; - } - - if (data_info->rw_off + data_info->rw_size > data_info->max_size) { - LOGE( - "%s, data_info->rw_off + data_info->rw_size (%d) is more than data_info->max_size(%d) !!!\n", - CFG_SECTION_TV, data_info->rw_off + data_info->rw_size, - data_info->max_size); - return -1; - } - - file_off = GetFileOffsetCFG(data_info->off_cfg_name); - if (file_off < 0) { - LOGE("%s, file_off (%d) is less than 0!!!\n", CFG_SECTION_TV, file_off); - return -1; - } - - file_off += data_info->rw_off; - - if (data_info->op_cb(file_name, file_off, data_info->rw_size, - (unsigned char *) data_info->data_buf) < 0) { - return -1; - } - - return 0; -} - -static int HandleRWData(RWDataInfo *data_info) -{ - int i = 0, tmp_ret = 0; - int *tmp_iptr = NULL; - unsigned char *tmp_cptr = NULL; - RWDataInfo tmpInfo; - - if (data_info == NULL) { - return -1; - } - - tmpInfo = *data_info; - - if (data_info->data_type == CC_DATA_TYPE_INT) { - tmp_cptr = new unsigned char[data_info->rw_size]; - if (tmp_cptr != NULL) { - tmpInfo.data_buf = tmp_cptr; - - if (tmpInfo.op_type == CC_OP_TYPE_SAVE) { - tmp_iptr = (int *) data_info->data_buf; - for (i = 0; i < data_info->rw_size; i++) { - tmp_cptr[i] = tmp_iptr[i]; - } - - tmp_ret |= RealRWData(&tmpInfo); - } else { - tmp_ret |= RealRWData(&tmpInfo); - - tmp_iptr = (int *) data_info->data_buf; - for (i = 0; i < data_info->rw_size; i++) { - tmp_iptr[i] = tmp_cptr[i]; - } - } - - delete tmp_cptr; - tmp_cptr = NULL; - - return tmp_ret; - } - } - - return RealRWData(&tmpInfo); -} - -int GetRGBOGOFromFile(int rd_off, int rd_size, - unsigned char data_buf[]) -{ - RWDataInfo tmpInfo; - - tmpInfo.op_type = CC_OP_TYPE_READ; - tmpInfo.data_type = CC_DATA_TYPE_CHAR; - tmpInfo.max_size = SSM_CR_RGBOGO_LEN + SSM_CR_RGBOGO_CHKSUM_LEN; - tmpInfo.rw_off = rd_off; - tmpInfo.rw_size = rd_size; - tmpInfo.data_buf = data_buf; - tmpInfo.path_cfg_name = (char *) CS_RGBOGO_FILE_PATH_CFG; - tmpInfo.off_cfg_name = (char *) CS_RGBOGO_FILE_OFFSET_CFG; - tmpInfo.op_cb = ReadDataFromFile; - - return HandleRWData(&tmpInfo); -} - -int SaveRGBOGOToFile(int wr_off, int wr_size, unsigned char data_buf[]) -{ - RWDataInfo tmpInfo; - - tmpInfo.op_type = CC_OP_TYPE_SAVE; - tmpInfo.data_type = CC_DATA_TYPE_CHAR; - tmpInfo.max_size = SSM_CR_RGBOGO_LEN + SSM_CR_RGBOGO_CHKSUM_LEN; - tmpInfo.rw_off = wr_off; - tmpInfo.rw_size = wr_size; - tmpInfo.data_buf = data_buf; - tmpInfo.path_cfg_name = (char *) CS_RGBOGO_FILE_PATH_CFG; - tmpInfo.off_cfg_name = (char *) CS_RGBOGO_FILE_OFFSET_CFG; - tmpInfo.op_cb = SaveDataToFile; - - return HandleRWData(&tmpInfo); -} - -int GetAudioNoLinePointsDataFromFile(int rd_off, int rd_size, - unsigned char data_buf[]) -{ - RWDataInfo tmpInfo; - - tmpInfo.op_type = CC_OP_TYPE_READ; - tmpInfo.data_type = CC_DATA_TYPE_CHAR; - tmpInfo.max_size = 256; - tmpInfo.rw_off = rd_off; - tmpInfo.rw_size = rd_size; - tmpInfo.data_buf = data_buf; - tmpInfo.path_cfg_name = (char *) CS_AUDIO_NOLINEPOINTS_FILE_PATH_CFG; - tmpInfo.off_cfg_name = (char *) CS_AUDIO_NOLINEPOINTS_FILE_OFFSET_CFG; - tmpInfo.op_cb = ReadDataFromFile; - - return HandleRWData(&tmpInfo); -} - -int SaveAudioNoLinePointsDataToFile(int wr_off, int wr_size, - unsigned char data_buf[]) -{ - RWDataInfo tmpInfo; - - tmpInfo.op_type = CC_OP_TYPE_SAVE; - tmpInfo.data_type = CC_DATA_TYPE_CHAR; - tmpInfo.max_size = 256; - tmpInfo.rw_off = wr_off; - tmpInfo.rw_size = wr_size; - tmpInfo.data_buf = data_buf; - tmpInfo.path_cfg_name = (char *) CS_AUDIO_NOLINEPOINTS_FILE_PATH_CFG; - tmpInfo.off_cfg_name = (char *) CS_AUDIO_NOLINEPOINTS_FILE_OFFSET_CFG; - tmpInfo.op_cb = SaveDataToFile; - - return HandleRWData(&tmpInfo); -} - -int GetHDCPKeyFromFile(int rd_off, int rd_size, - unsigned char data_buf[]) -{ - RWDataInfo tmpInfo; - - tmpInfo.op_type = CC_OP_TYPE_READ; - tmpInfo.data_type = CC_DATA_TYPE_CHAR; - tmpInfo.max_size = CC_HDCP_KEY_TOTAL_SIZE; - tmpInfo.rw_off = rd_off; - tmpInfo.rw_size = rd_size; - tmpInfo.data_buf = data_buf; - tmpInfo.path_cfg_name = (char *) CS_HDCP_KEY_FILE_PATH_CFG; - tmpInfo.off_cfg_name = (char *) CS_HDCP_KEY_FILE_OFFSET_CFG; - tmpInfo.op_cb = ReadDataFromFile; - - return HandleRWData(&tmpInfo); -} - -int SaveHDCPKeyToFile(int wr_off, int wr_size, - unsigned char data_buf[]) -{ - RWDataInfo tmpInfo; - - tmpInfo.op_type = CC_OP_TYPE_SAVE; - tmpInfo.data_type = CC_DATA_TYPE_CHAR; - tmpInfo.max_size = CC_HDCP_KEY_TOTAL_SIZE; - tmpInfo.rw_off = wr_off; - tmpInfo.rw_size = wr_size; - tmpInfo.data_buf = data_buf; - tmpInfo.path_cfg_name = (char *) CS_HDCP_KEY_FILE_PATH_CFG; - tmpInfo.off_cfg_name = (char *) CS_HDCP_KEY_FILE_OFFSET_CFG; - tmpInfo.op_cb = SaveDataToFile; - - return HandleRWData(&tmpInfo); -} - -int GetHDMIEdidFromFile(int rd_off, int rd_size, int port, - unsigned char data_buf[]) -{ - RWDataInfo tmpInfo; - - tmpInfo.op_type = CC_OP_TYPE_READ; - tmpInfo.data_type = CC_DATA_TYPE_CHAR; - tmpInfo.max_size = SSM_HDMI_EDID_SIZE; - tmpInfo.rw_off = rd_off; - tmpInfo.rw_size = rd_size; - tmpInfo.data_buf = data_buf; - switch (port) { - case 1: - tmpInfo.path_cfg_name = (char *) CS_HDMI_PORT1_EDID_FILE_PATH_CFG; - break; - case 2: - tmpInfo.path_cfg_name = (char *) CS_HDMI_PORT2_EDID_FILE_PATH_CFG; - break; - case 3: - tmpInfo.path_cfg_name = (char *) CS_HDMI_PORT3_EDID_FILE_PATH_CFG; - break; - default: - LOGE("%s, port is error, =%d\n", CFG_SECTION_TV, port); - tmpInfo.path_cfg_name = (char *) CS_HDMI_EDID_FILE_PATH_CFG; - break; - } - tmpInfo.off_cfg_name = (char *) CS_HDMI_EDID_FILE_OFFSET_CFG; - tmpInfo.op_cb = ReadDataFromFile; - - return HandleRWData(&tmpInfo); -} - -/**************************** end critical data op functions ****************************/ diff --git a/tvapi/libtv/tvsetting/TvKeyData.h b/tvapi/libtv/tvsetting/TvKeyData.h deleted file mode 100644 index 9c71771..0000000 --- a/tvapi/libtv/tvsetting/TvKeyData.h +++ b/dev/null @@ -1,125 +0,0 @@ -#ifndef __TV_KEY_DATA_H__ -#define __TV_KEY_DATA_H__ - -#include <pthread.h> -#include <stdint.h> - -#include "../tv/CTvLog.h" - -#define SSM_CR_RGBOGO_LEN (256) -#define SSM_CR_RGBOGO_CHKSUM_LEN (2) -#define SSM_HDMI_PORT_MAX (3) -#define SSM_HDMI_EDID_SIZE (256) - -#if ANDROID_PLATFORM_SDK_VERSION == 19 -#define CS_KEY_DATA_NAME_DEV_PATH "/sys/class/aml_keys/aml_keys/key_name" -#define CS_KEY_DATA_READ_DEV_PATH "/sys/class/aml_keys/aml_keys/key_read" -#define CS_KEY_DATA_WRITE_DEV_PATH "/sys/class/aml_keys/aml_keys/key_write" - -#define CS_MAC_KEY_NAME "mac" -#define CS_BARCODE_KEY_NAME "usid" -#define CS_RX_HDCP_KEY_NAME "rxhdcp20" -#define CS_PROJECT_ID_KEY_NAME "projid" -#endif - -#if ANDROID_PLATFORM_SDK_VERSION >= 21 -#define CS_KEY_DATA_NAME_DEV_PATH "/sys/class/unifykeys/name" -#define CS_KEY_DATA_READ_DEV_PATH "/sys/class/unifykeys/read" -#define CS_KEY_DATA_WRITE_DEV_PATH "/sys/class/unifykeys/write" - -#define CS_MAC_KEY_NAME "mac" -#define CS_BARCODE_KEY_NAME "usid" -#define CS_RX_HDCP_KEY_NAME "hdcp2_rx" -#define CS_PROJECT_ID_KEY_NAME "projid" -#endif - -#define CC_MAX_KEY_DATA_SIZE (2048) -#define CC_MAX_FILE_PATH (256) - -#define CC_MAC_LEN (6) -#define CC_HDCP_KEY_TOTAL_SIZE (368) -#define CC_HDCP_KEY_HEAD_SIZE (40) -#define CC_HDCP_KEY_CONTENT_SIZE (CC_HDCP_KEY_TOTAL_SIZE - CC_HDCP_KEY_HEAD_SIZE) - -#define CC_CUSTOMER_HDMI_EDID_TOTAL_SIZE (SSM_HDMI_EDID_SIZE + 4) - -#define CS_MAC_ADDRESS_STARTWRK_EN_CFG "ssm.macaddr.startwork.en" -#define CS_BARCODE_LEN_CFG "ssm.barcode.len" - -#define CS_HDCP_KEY_EN_CFG "ssm.handle.hdcpkey.en" -#define CS_HDCP_KEY_DEMO_EN_CFG "ssm.handle.hdcpkey.demo.en" -#define CS_HDCP_KEY_FILE_PATH_CFG "ssm.handle.hdcpkey.file.path" -#define CS_HDCP_KEY_FILE_OFFSET_CFG "ssm.handle.hdcpkey.file.offset" - - -//#define CS_HDMI_EDID_EN_CFG "ssm.handle.hdmi.edid.en" -#define CS_HDMI_EDID_USE_CFG "ssm.handle.hdmi.edid.use" -#define CS_HDMI_EDID_FILE_PATH_CFG "ssm.handle.hdmi.edid.file.path" -#define CS_HDMI_PORT1_EDID_FILE_PATH_CFG "ssm.handle.hdmi.port1.edid.file.path" -#define CS_HDMI_PORT2_EDID_FILE_PATH_CFG "ssm.handle.hdmi.port2.edid.file.path" -#define CS_HDMI_PORT3_EDID_FILE_PATH_CFG "ssm.handle.hdmi.port3.edid.file.path" -#define CS_HDMI_EDID_FILE_OFFSET_CFG "ssm.handle.hdmi.edid.file.offset" - -#define CS_RGBOGO_FILE_PATH_CFG "ssm.rgbogo.file.path" -#define CS_RGBOGO_FILE_OFFSET_CFG "ssm.rgbogo.file.offset" - -#define CS_AUDIO_NOLINEPOINTS_FILE_PATH_CFG "ssm.audio.nolinepoints.file.path" -#define CS_AUDIO_NOLINEPOINTS_FILE_OFFSET_CFG "ssm.audio.nolinepoints.file.offset" -int ReadKeyData(const char *key_name, unsigned char data_buf[]); -int WriteKeyData(const char *key_name, int wr_size, char data_buf[]); - -int KeyData_SaveProjectID(int rw_val); -int KeyData_ReadProjectID(); - -int KeyData_GetMacAddressDataLen(); -int KeyData_ReadMacAddress(unsigned char data_buf[]); -int KeyData_SaveMacAddress(unsigned char data_buf[]); - -int KeyData_GetBarCodeDataLen(); -int KeyData_ReadBarCode(unsigned char data_buf[]); -int KeyData_SaveBarCode(unsigned char data_buf[]); - -int SSMReadHDCPKey(unsigned char hdcp_key_buf[]); -int SSMSaveHDCPKey(unsigned char hdcp_key_buf[]); -int SSMSetHDCPKey(); -int SSMGetHDCPKeyDataLen(); -int SSMRefreshHDCPKey(); - - -int SSMReadHDMIEdid(int port, unsigned char hdmi_edid_buf[]); -int SSMSetHDMIEdid(int port); - -int SSMSaveRGBOGOValue(int offset, int size, unsigned char data_buf[]); -int SSMReadRGBOGOValue(int offset, int size, unsigned char data_buf[]); - -int SSMReadAudioNoLinePoints(int offset, int size, unsigned char tmp_buf[]); -int SSMSaveAudioNoLinePoints(int offset, int size, unsigned char tmp_buf[]); -int CreateMacAddressStartWorkThread(); - -int GetSSMHandleHDCPKeyEnableCFG(); -int GetSSMHandleHDCPKeyDemoEnableCFG(); -int SSMSetDefaultHDCPKey(unsigned char hdcp_key_buf[]); -int RealHandleHDCPKey(unsigned char hdcp_key_buf[]); -int GetHDCPKeyFromFile(int rd_off, int rd_size, unsigned char data_buf[]); -int SaveHDCPKeyToFile(int wr_off, int wr_size, unsigned char data_buf[]); - -int GetHDMIEdidFromFile(int rd_off, int rd_size, int port, unsigned char data_buf[]); -int RealHandleHDMIEdid(unsigned char hdmi_edid_buf[]); -int GetSSMHandleHDMIEdidByCustomerEnableCFG(); -int AppendEdidPrefixCode(unsigned char customer_hdmi_edid_buf[], unsigned char hdmi_edid_buf[]); - -int GetRGBOGOFromFile(int rd_off, int rd_size, unsigned char data_buf[]); -int SaveRGBOGOToFile(int wr_off, int wr_size, unsigned char data_buf[]); - -int GetAudioNoLinePointsDataFromFile(int offset, int size, unsigned char data_buf[]); -int SaveAudioNoLinePointsDataToFile(int offset, int size, unsigned char data_buf[]); - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef __cplusplus -} -#endif - -#endif //__TV_KEY_DATA_H__ diff --git a/tvapi/libtv/tvsetting/audio_cfg.cpp b/tvapi/libtv/tvsetting/audio_cfg.cpp deleted file mode 100644 index 682173b..0000000 --- a/tvapi/libtv/tvsetting/audio_cfg.cpp +++ b/dev/null @@ -1,723 +0,0 @@ -#define LOG_TAG "audio_cfg" - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <android/log.h> -#include <cutils/properties.h> - -#include "../tvsetting/CTvSetting.h" -#include "../tvconfig/tvconfig.h" -#include "audio_cfg.h" - -#include "CTvLog.h" - -static const char AudioAmpMainVolLutBaseNameTable[CC_GET_TYPE_CNT][128] = {"audio.amp.mainvol.tv.lutbuf",//0 - "audio.amp.mainvol.av.lutbuf",//1 - "audio.amp.mainvol.comp.lutbuf",//2 - "audio.amp.mainvol.hdmi.lutbuf",//3 - "audio.amp.mainvol.vga.lutbuf",//4 - "audio.amp.mainvol.mpeg.lutbuf",//5 - "audio.amp.mainvol.hdmi4k2k.lutbuf",//6 - "audio.amp.mainvol.usb4k2k.lutbuf"//7 - }; - -static const int Default_EQGain_Table[24] = { - // - 50, 50, 50, 50, 50, 50, // SM_STD - 70, 60, 50, 60, 70, 50, // SM_MUSIC - 25, 50, 70, 66, 25, 50, // SM_NEWS - 75, 65, 50, 65, 75, 50, // SM_THEATER -}; - -static const int Default_AVoutGain_Table[9] = { - //PGA_IN ADC_Capture DAC_Playback - 11, 92, 255, // CC_AUDIO_IN_SOURCE_LINEIN - 11, 92, 255, //CC_AUDIO_IN_SOURCE_HDMI - 11, 92, 255, //CC_AUDIO_IN_SOURCE_ATV -}; - -int GetAudioAmpMasterNolinePointData(int get_type, const char *value_buf, int data_buf[]) -{ - const char *config_value; - if (value_buf != NULL) { - config_value = config_get_str(CFG_SECTION_TV, value_buf, "null"); - } else { - switch (get_type) { - case CC_GET_LUT_TV: { - config_value = config_get_str(CFG_SECTION_TV, "audio.amp.master.noline.point.data.tv", "null"); - } - break; - case CC_GET_LUT_AV: { - config_value = config_get_str(CFG_SECTION_TV, "audio.amp.master.noline.point.data.av", "null"); - } - break; - case CC_GET_LUT_COMP: { - config_value = config_get_str(CFG_SECTION_TV, "audio.amp.master.noline.point.data.comp", "null"); - } - break; - case CC_GET_LUT_HDMI: { - config_value = config_get_str(CFG_SECTION_TV, "audio.amp.master.noline.point.data.hdmi", "null"); - } - break; - case CC_GET_LUT_VGA: { - config_value = config_get_str(CFG_SECTION_TV, "audio.amp.master.noline.point.data.vga", "null"); - } - break; - case CC_GET_LUT_MPEG: { - config_value = config_get_str(CFG_SECTION_TV, "audio.amp.master.noline.point.data.mpeg", "null"); - } - break; - case CC_GET_LUT_HDMI_4K2K: { - config_value = config_get_str(CFG_SECTION_TV, "audio.amp.master.noline.point.data.hdmi4k2k", "null"); - } - break; - case CC_GET_LUT_USB_4K2K: { - config_value = config_get_str(CFG_SECTION_TV, "audio.amp.master.noline.point.data.usb4k2k", "null"); - } - break; - default: { - config_value = "null"; - } - break; - } - } - if (strcasecmp(config_value, "null") == 0) { - //LOGE("%s, can't get config \"%s\"!!!\n", CFG_SECTION_TV, key_str); - return -1; - } - - char *pSave; - char data_str[CC_CFG_VALUE_STR_MAX_LEN] = { 0 }; - - memset((void *)data_str, 0, sizeof(data_str)); - strncpy(data_str, config_value, sizeof(data_str) - 1); - char *token = strtok_r(data_str, ",", &pSave); - int bufferDataIndex = 0; - while (token != NULL) { - data_buf[bufferDataIndex] = strtol(token, NULL, 10); - bufferDataIndex ++; - token = strtok_r(NULL, ",", &pSave); - } - - return 0; -} - -int GetDefault_EQGain_Table(int *EqTable) -{ - memcpy(EqTable, Default_EQGain_Table, sizeof(Default_EQGain_Table)); - - return 0; -} - -int GetAudioEQPresetBufferPtr(int *EqTable) -{ - int bufs_count = 0, buf_item_count = 0; - const char *config_value = config_get_str(CFG_SECTION_TV, "audio.eq.presetbuf", "null"); - if (strcasecmp(config_value, "null") == 0) { - return -1; - } - - char *pSave; - char data_str[CC_CFG_VALUE_STR_MAX_LEN] = { 0 }; - - memset((void *)data_str, 0, sizeof(data_str)); - strncpy(data_str, config_value, sizeof(data_str) - 1); - char *token = strtok_r(data_str, ",", &pSave); - int allIndex = 0, bufferDataIndex = 0; - while (token != NULL) { - if (allIndex == 0) { - bufs_count = strtol(token, NULL, 10); - } else if (allIndex == 1) { - buf_item_count = strtol(token, NULL, 10); - } else if (allIndex >= 2) { - EqTable[bufferDataIndex] = strtol(token, NULL, 10); - bufferDataIndex ++; - } - - token = strtok_r(NULL, ",", &pSave); - allIndex ++; - } - - return 0; -} - -/** - * @param:get_type - * @return:data_buf - */ -const char *GetAudioAmpMainvolTableBaseName(int get_type) -{ - return AudioAmpMainVolLutBaseNameTable[get_type]; -} - -int GetAudioAmpMainvolBuf(const char *TableKeyName, int data_buf[]) -{ - int bufs_count = 0, buf_item_count = 0; - const char *config_value; - - config_value = config_get_str(CFG_SECTION_TV, TableKeyName, "null"); - if (strcasecmp(config_value, "null") == 0) { - return -1; - } - char *pSave; - char data_str[CC_CFG_VALUE_STR_MAX_LEN] = { 0 }; - memset((void *)data_str, 0, sizeof(data_str)); - strncpy(data_str, config_value, sizeof(data_str) - 1); - char *token = strtok_r(data_str, ",", &pSave); - int allIndex = 0, bufferDataIndex = 0; - while (token != NULL) { - if (allIndex == 0) { - bufs_count = strtol(token, NULL, 10); - } else if (allIndex == 1) { - buf_item_count = strtol(token, NULL, 10); - } else if (allIndex >= 2) { - data_buf[bufferDataIndex] = strtol(token, NULL, 10); - bufferDataIndex ++; - } - token = strtok_r(NULL, ",", &pSave); - allIndex ++; - } - - return 0; -} - -/** - * @param:get_type - * @return:data_buf - */ -int GetAudioAmpSupbassvolBuf(int get_type, int data_buf[]) -{ - int bufs_count = 0, buf_item_count = 0; - const char *config_value; - - switch (get_type) { - case CC_GET_LUT_TV: { - config_value = config_get_str(CFG_SECTION_TV, "audio.amp.supbassvol.tv.lutbuf", "null"); - } - - break; - case CC_GET_LUT_AV: { - config_value = config_get_str(CFG_SECTION_TV, "audio.amp.supbassvol.av.lutbuf", "null"); - } - break; - case CC_GET_LUT_COMP: { - config_value = config_get_str(CFG_SECTION_TV, "audio.amp.supbassvol.comp.lutbuf", "null"); - } - break; - case CC_GET_LUT_HDMI: { - config_value = config_get_str(CFG_SECTION_TV, "audio.amp.supbassvol.hdmi.lutbuf", "null"); - } - break; - case CC_GET_LUT_VGA: { - config_value = config_get_str(CFG_SECTION_TV, "audio.amp.supbassvol.vga.lutbuf", "null"); - } - - break; - case CC_GET_LUT_MPEG: { - config_value = config_get_str(CFG_SECTION_TV, "audio.amp.supbassvol.mpeg.lutbuf", "null"); - } - - break; - case CC_GET_LUT_HDMI_4K2K: { - config_value = config_get_str(CFG_SECTION_TV, "audio.amp.supbassvol.hdmi4k2k.lb.name", "null"); - } - - break; - case CC_GET_LUT_USB_4K2K: { - config_value = config_get_str(CFG_SECTION_TV, "audio.amp.supbassvol.usb4k2k.lb.name", "null"); - } - - break; - default: { - config_value = "null"; - } - break; - } - - if (strcasecmp(config_value, "null") == 0) { - return -1; - } - char *pSave; - char data_str[CC_CFG_VALUE_STR_MAX_LEN] = { 0 }; - memset((void *)data_str, 0, sizeof(data_str)); - strncpy(data_str, config_value, sizeof(data_str) - 1); - char *token = strtok_r(data_str, ",", &pSave); - int allIndex = 0, bufferDataIndex = 0; - while (token != NULL) { - if (allIndex == 0) { - bufs_count = strtol(token, NULL, 10); - } else if (allIndex == 1) { - buf_item_count = strtol(token, NULL, 10); - } else if (allIndex >= 2) { - data_buf[bufferDataIndex] = strtol(token, NULL, 10); - bufferDataIndex ++; - } - token = strtok_r(NULL, ",", &pSave); - allIndex ++; - } - - return 0; -} - -int GetAudioAmplifierMasterNoLineSwitchFlag() -{ - const char *config_value = config_get_str(CFG_SECTION_TV, "audio.amp.master.noline.switch", "null"); - - if (strcmp(config_value, "null") == 0) { - return 0; - } - - return strtol(config_value, NULL, 10); -} - -int GetAudioAmplifierSupperBassNoLineSwitchFlag() -{ - const char *config_value = config_get_str(CFG_SECTION_TV, "audio.amp.supperbass.noline.switch", "null"); - - if (strcmp(config_value, "null") == 0) { - return 0; - } - - return strtol(config_value, NULL, 10); -} - -int GetAudioAmplifierMasterNoLinePointsCount() -{ - const char *config_value = config_get_str(CFG_SECTION_TV, "audio.amp.master.noline.point.cnt", "null"); - - if (strcmp(config_value, "null") == 0) { - return 11; - } - - return strtol(config_value, NULL, 10); -} - -int GetAudioAmplifierSupperBassNoLinePointsCount() -{ - const char *config_value = config_get_str(CFG_SECTION_TV, "audio.amp.supperbass.noline.point.cnt", "null"); - - if (strcmp(config_value, "null") == 0) { - return 5; - } - - return strtol(config_value, NULL, 10); -} - -int GetAudioAmplifierBalanceExchangeCFG() -{ - const char *config_value = config_get_str(CFG_SECTION_TV, "audio.amp.balance.exchg", "null"); - - // if (data_buf[0] >= 0 && data_buf[0] <= 100) { - // LOGD("%s, we have get the index buffer.\n", CFG_SECTION_TV); - // return 0; - // } - - if (strcmp(config_value, "null") == 0) { - return 0; //return 0 to disable balance exchange - } - - return strtol(config_value, NULL, 10); -} - -int GetAudioMainVolLutBufCFGIndexModifyEnable() -{ - const char *config_value = config_get_str(CFG_SECTION_TV, "audio.amp.master.cfgindex.mod.en", "null"); - - if (strcmp(config_value, "null") == 0) { - return 0; - } - - return strtoul(config_value, NULL, 10); -} - -int GetAudioMainVolLutBufNameModifyUbootenvCFG() -{ - char config_value[PROPERTY_VALUE_MAX]; - - memset(config_value, '\0', 32); - property_get("ubootenv.var.ampindex", config_value, "null"); - - if (strcasecmp(config_value, "null") == 0) { - return 0; - } - - return strtoul(config_value, NULL, 10); -} - - -int GetAudioMainVolLutBufNameModifyEnableCFG() -{ - const char *config_value = config_get_str(CFG_SECTION_TV, "audio.amp.mainvol.lutbufname.mod.en", "null"); - - if (strcmp(config_value, "null") == 0) { - return 0; - } - - return strtoul(config_value, NULL, 10); -} - - -int GetAudioSupperBassVolLutBufCFGIndexModifyEnable() -{ - const char *config_value = config_get_str(CFG_SECTION_TV, "audio.amp.supperbass.cfgindex.mod.en", "null"); - - if (strcmp(config_value, "null") == 0) { - return 0; - } - - return strtoul(config_value, NULL, 10); -} - -int GetAudioSupperBassVolLutBufNameModifyEnableCFG() -{ - const char *config_value = config_get_str(CFG_SECTION_TV, "audio.amp.supbassvol.lutbufname.mod.en", "null"); - - if (strcmp(config_value, "null") == 0) { - return 0; - } - - return strtoul(config_value, NULL, 10); -} - - -int GetAudioDVISupportEnable() -{ - const char *config_value = config_get_str(CFG_SECTION_TV, "audio.dvi.support.enable", "null"); - - if (strcmp(config_value, "null") == 0) { - return 0; - } - - return strtoul(config_value, NULL, 10); -} - - -int GetTvAudioCardName(char tv_card_name_buf[]) -{ - const char *value = config_get_str(CFG_SECTION_TV, "audio.tv.card.name", "null"); - - strcpy(tv_card_name_buf, value); - if (strcmp(value, "null") == 0) { - strcpy(tv_card_name_buf, "AMLSYNO9629"); - } - - return 0; -} - -int GetTvAudioCardNeedSet() -{ - const char *config_value = config_get_str(CFG_SECTION_TV, "audio.tv.card.needset", "null"); - if (strcmp(config_value, "null") == 0) { - return 0; - } - - if (strtoul(config_value, NULL, 10) == 0) { - return 0; - } - - return 1; -} - -int GetAudioEffectAmplifierGainCfg(const char *cfg_name, int def_gain_val, int max_gain_val) -{ - int tmp_val; - const char *config_value = config_get_str(CFG_SECTION_TV, cfg_name, "null"); - if (strcmp(config_value, "null") == 0) { - tmp_val = def_gain_val; - } else { - tmp_val = strtoul(config_value, NULL, 10); - if (tmp_val < 0 || tmp_val > max_gain_val) { - tmp_val = def_gain_val; - } - } - LOGD("%s = %d\n", cfg_name, tmp_val); - return tmp_val; -} - - -int GetAudioSRSSourroundEnableCFG() -{ - const char *config_value = config_get_str(CFG_SECTION_TV, "audio.srs.sourround.enable", "null"); - - if (strcmp(config_value, "null") == 0) { - return 0; - } - - return strtoul(config_value, NULL, 10); -} - -int GetAudioSRSGainCfg(const char *cfg_name, int def_gain_val) -{ - int tmp_val = 0; - const char *config_value = config_get_str(CFG_SECTION_TV, cfg_name, "null"); - - if (strcmp(config_value, "null") == 0) { - tmp_val = def_gain_val; - } else { - if (tmp_val < 0 || tmp_val > 100) { - tmp_val = def_gain_val; - LOGE("Error setting: %s = %d (0~100)\n", cfg_name, tmp_val); - } - tmp_val = strtoul(config_value, NULL, 10); - } - //LOGD(" %s = %d\n", cfg_name, tmp_val); - return tmp_val; -} - -int GetAudioSRSSupperBassTrubassSpeakerSizeCfg() -{ - char cfg_name[128] = { 0 }; - - strcpy(cfg_name, CFG_AUDIO_SRS_TRUBASS_SPEAKERSIZE); - - const char *config_value = config_get_str(CFG_SECTION_TV, cfg_name, "null"); - - if (strcmp(config_value, "null") == 0) { - return -1; - } - - int tmp_val = strtoul(config_value, NULL, 10); - if (tmp_val < 0 || tmp_val > 7) { - tmp_val = -1; - } - - return tmp_val; -} - -int GetAudioDumpDataEnableFlagCfg() -{ - const char *config_value = config_get_str(CFG_SECTION_TV, "audio.dump.data.en", "null"); - - if (strcmp(config_value, "null") == 0) { - return 0; - } - - return strtol(config_value, NULL, 10); -} - -int GetAudioSupperBassSwitchDisableCFG() -{ - const char *config_value = config_get_str(CFG_SECTION_TV, "audio.supperbass.switch.disable", "null"); - - if (strcmp(config_value, "null") == 0) { - return 0; - } - - return strtoul(config_value, NULL, 10); -} - -int GetAudioWallEffectTypeCfg() -{ - const char *config_value = config_get_str(CFG_SECTION_TV, "audio.walleffect.type", "null"); - - if (strcmp(config_value, "null") == 0) { - return 0; - } - - return strtol(config_value, NULL, 10); -} - -int Get2d4gHeadsetEnable() -{ - const char *config_value = config_get_str ( CFG_SECTION_TV, "tvin.2d4G.headset.en", "null" ); - if (strcmp(config_value, "enable") == 1) { - return 1; - } - - - return 0; -} - -const char *GetAudExtDacLibPath() -{ - return config_get_str(CFG_SECTION_TV, "audio.external.dac.libpath", "/system/lib/libdac.so"); -} - -int GetKaraokAvEnable() -{ - const char *config_value = config_get_str(CFG_SECTION_TV, "audio.switch.karaok.av.enable", "null"); - if (strtoul(config_value, NULL, 10) == 1) - return 1; - - return 0; -} - -int GetDefaultAvOutGainBuf(int *nAvoutTable) -{ - memcpy(nAvoutTable, Default_AVoutGain_Table, sizeof(Default_AVoutGain_Table)); - - return 0; -} - -int GetAvOutGainBuf_Cfg(int *nAvoutTable) -{ - int bufs_count = 0, buf_item_count = 0; - const char *config_value = config_get_str(CFG_SECTION_TV, "audio.avoutgain.presetbuf", "null"); - if (strcasecmp(config_value, "null") == 0) { - // LOGE("%s, can't get config \"%s\"!!!\n", CFG_SECTION_TV, key_str); - return -1; - } - - char *pSave; - char data_str[CC_CFG_VALUE_STR_MAX_LEN] = { 0 }; - - memset((void *)data_str, 0, sizeof(data_str)); - strncpy(data_str, config_value, sizeof(data_str) - 1); - char *token = strtok_r(data_str, ",", &pSave); - int allIndex = 0, bufferDataIndex = 0; - while (token != NULL) { - if (allIndex == 0) { - bufs_count = strtol(token, NULL, 10); - } else if (allIndex == 1) { - buf_item_count = strtol(token, NULL, 10); - } else if (allIndex >= 2) { - nAvoutTable[bufferDataIndex] = strtol(token, NULL, 10); - bufferDataIndex ++; - } - - token = strtok_r(NULL, ",", &pSave); - allIndex ++; - } - - return 0; -} - -int GetADCDigitalCaptureVol_Cfg(void) -{ - int capture_vol = 0; - const char *config_value = config_get_str(CFG_SECTION_TV, "audio.adc.digital.capture.vol", "null"); - - if (strcmp(config_value, "null") == 0) { - return -1; - } - - return strtoul(config_value, NULL, 10); -} - -int GetAudioInternalDacPGAInGain_Cfg(void) -{ - const char *config_value = config_get_str(CFG_SECTION_TV, "audio.internal.dac.pga_in.gain", "null"); - - if (strcmp(config_value, "null") == 0) { - return 16; - } - - return strtol(config_value, NULL, 10); -} - -int GetAudioInternalDACDigitalPlayBackVolume_Cfg(int audio_src_in_type) -{ - const char *config_value = NULL; - - if (audio_src_in_type == 2) { // CC_AUDIO_IN_SOURCE_HDMI - config_value = config_get_str(CFG_SECTION_TV, "audio.internal.dac.playback.volume_hdmi", "null"); - } else if (audio_src_in_type == 0) { // CC_AUDIO_IN_SOURCE_LINEIN - config_value = config_get_str(CFG_SECTION_TV, "audio.internal.dac.playback.volume_linein", "null"); - } else if (audio_src_in_type == 1) { // CC_AUDIO_IN_SOURCE_ATV - config_value = config_get_str(CFG_SECTION_TV, "audio.internal.dac.playback.volume_atv", "null"); - } - - if (strcmp(config_value, "null") == 0) { - return 255; - } - - return strtol(config_value, NULL, 10); -} - -int GetAudioOutputSwapStatus(tv_source_input_t source_input) -{ - int sw_status = 0; - const char *config_value = config_get_str(CFG_SECTION_TV, "audio.output.swap.enable", "null"); - if ( strcmp ( config_value, "enable" ) == 0 ) { - switch (source_input) { - case SOURCE_AV1: - config_value = config_get_str(CFG_SECTION_TV, "audio.output.swap.av1", "null"); - break; - case SOURCE_AV2: - config_value = config_get_str(CFG_SECTION_TV, "audio.output.swap.av2", "null"); - break; - case SOURCE_HDMI1: - config_value = config_get_str(CFG_SECTION_TV, "audio.output.swap.hdmi1", "null"); - break; - case SOURCE_HDMI2: - config_value = config_get_str(CFG_SECTION_TV, "audio.output.swap.hdmi2", "null"); - break; - case SOURCE_HDMI3: - config_value = config_get_str(CFG_SECTION_TV, "audio.output.swap.hdmi3", "null"); - break; - case SOURCE_TV: - config_value = config_get_str(CFG_SECTION_TV, "audio.output.swap.tv", "null"); - break; - case SOURCE_DTV: - config_value = config_get_str(CFG_SECTION_TV, "audio.output.swap.dtv", "null"); - break; - case SOURCE_MPEG: - config_value = config_get_str(CFG_SECTION_TV, "audio.output.swap.mpeg", "null"); - break; - default: - break; - } - - } - - sw_status = atoi ( config_value ); - return sw_status; -} - -int GetAudioArchitectureTypeCFG() -{ - static int architecture_type = -1; - const char *config_value = NULL; - - config_value = config_get_str ( CFG_SECTION_TV, "audio.architecture.type", "null" ); - if (strcasecmp(config_value, "null") == 0) { - architecture_type = CC_DAC_G9TV_EXTERNAL_DAC_OFF_BOARD_FBC; - } else if ((strcasecmp(config_value, "t866_external_dac_offboard_fbc") == 0) || (strcasecmp(config_value, "g9tv_external_dac_offboard_fbc") == 0)) { - architecture_type = CC_DAC_G9TV_EXTERNAL_DAC_OFF_BOARD_FBC; - } else if ((strcasecmp(config_value, "t866_external_dac_offboard_customer_lib") == 0) || (strcasecmp(config_value, "g9tv_external_dac_customer_lib") == 0)) { - architecture_type = CC_DAC_G9TV_EXTERNAL_DAC_CUSTOMER_LIB; - } else if ((strcasecmp(config_value, "t866_external_dac_offboard_digital") == 0) || (strcasecmp(config_value, "g9tv_external_dac_digital") == 0)) { - architecture_type = CC_DAC_G9TV_EXTERNAL_DAC_DIGITAL; - } else if ((strcasecmp(config_value, "t866_external_dac_onboard") == 0) || (strcasecmp(config_value, "g9tv_external_dac_onboard") == 0)) { - architecture_type = CC_DAC_G9TV_EXTERNAL_DAC_ON_BOARD; - } else if ((strcasecmp(config_value, "t866_iternal_dac") == 0) || (strcasecmp(config_value, "g9tv_iternal_dac") == 0)) { - architecture_type = CC_DAC_G9TV_INTERNAL_DAC; - } - - return architecture_type; -} - -static int gAudioResampleType = -1; -int GetAudioResampleTypeCFG() -{ - char *token = NULL; - const char *strDelimit = ","; - const char *config_value = NULL; - char cfg_buf[1024]; - - if (gAudioResampleType == -1) { - gAudioResampleType = 0; - - char *pSave; - config_value = config_get_str ( CFG_SECTION_TV, "audio.resample.type", "null" ); - strncpy(cfg_buf, config_value, sizeof(cfg_buf)); - if (strcmp(cfg_buf, "") != 0) { - token = strtok_r(cfg_buf, strDelimit, &pSave); - while (token != NULL) { - if (strcasecmp(token, "hw") == 0) { - gAudioResampleType |= CC_AUD_RESAMPLE_TYPE_HW; - } else if (strcasecmp(token, "sw") == 0) { - gAudioResampleType |= CC_AUD_RESAMPLE_TYPE_SW; - } - - token = strtok_r(NULL, strDelimit, &pSave); - } - } else { - gAudioResampleType = CC_AUD_RESAMPLE_TYPE_SW; //if can't find config string, allow sw resample - } - } - - return gAudioResampleType; -} - diff --git a/tvapi/libtv/tvsetting/audio_cfg.h b/tvapi/libtv/tvsetting/audio_cfg.h deleted file mode 100644 index adbda68..0000000 --- a/tvapi/libtv/tvsetting/audio_cfg.h +++ b/dev/null @@ -1,70 +0,0 @@ -#ifndef __TV_AUDIO_CFG_H__ -#define __TV_AUDIO_CFG_H__ - -#include "../tvconfig/tvconfig.h" -#include "../tvutils/tvutils.h" - -#include "../tvin/CTvin.h" - -#define CC_GET_LUT_TV (0) -#define CC_GET_LUT_AV (1) -#define CC_GET_LUT_COMP (2) -#define CC_GET_LUT_HDMI (3) -#define CC_GET_LUT_VGA (4) -#define CC_GET_LUT_MPEG (5) -#define CC_GET_LUT_HDMI_4K2K (6) -#define CC_GET_LUT_USB_4K2K (7) -#define CC_GET_TYPE_CNT (8) - -#define CC_DAC_G9TV_EXTERNAL_DAC_ON_BOARD (1) -#define CC_DAC_G9TV_EXTERNAL_DAC_OFF_BOARD_FBC (2) -#define CC_DAC_G9TV_EXTERNAL_DAC_CUSTOMER_LIB (3) -#define CC_DAC_G9TV_EXTERNAL_DAC_DIGITAL (4) -#define CC_DAC_G9TV_INTERNAL_DAC (5) - -#define CC_AUD_RESAMPLE_TYPE_HW (1) -#define CC_AUD_RESAMPLE_TYPE_SW (2) - -int GetAudioAmpMasterNolinePointData(int get_type, const char *value_buf, int data_buf[]); -int GetAudioEQPresetBufferPtr(int * ); -int GetAudioAmpMainvolBuf(const char *TableKeyName, int data_buf[]); -int GetAudioAmpSupbassvolBuf(int get_type, int data_buf[]); -int GetAudioAmplifierMasterNoLineSwitchFlag(); -int GetAudioAmplifierMasterNoLinePointsCount(); -int GetAudioSupperBassSwitchDisableCFG(); -int GetAudioAmplifierSupperBassNoLineSwitchFlag(); -int GetAudioAmplifierSupperBassNoLinePointsCount(); -int GetAudioAmplifierBalanceExchangeCFG(); -int GetAudioMainVolLutBufNameModifyUbootenvCFG(); -int GetAudioMainVolLutBufNameModifyEnableCFG(); -int GetAudioSupperBassVolLutBufNameModifyEnableCFG(); - -int GetAudioDVISupportEnable(); -int GetTvAudioCardName(char tv_card_name_buf[]); -int GetTvAudioCardNeedSet(); -int GetAudioDumpDataEnableFlagCfg(); -int GetAudioWallEffectTypeCfg(); - -//srs user setting -int GetAudioSRSSourroundEnableCFG(); -int GetAudioSRSGainCfg(const char *cfg_name, int def_gain_val); -int GetAudioEffectAmplifierGainCfg(const char *cfg_name, int def_gain_val, int max_gain_val); -int GetAudioSRSSupperBassTrubassSpeakerSizeCfg(); -//tinymix control -int Get2d4gHeadsetEnable() ; -int GetAudioOutputSwapStatus(tv_source_input_t source_input); -//hardware design -int GetAudioArchitectureTypeCFG(); -const char *GetAudExtDacLibPath(); -int GetAudioResampleTypeCFG(); -int GetKaraokAvEnable(); -//audio path gain setting by user -int GetADCDigitalCaptureVol_Cfg(void); -int GetAudioInternalDacPGAInGain_Cfg(void); -int GetAudioInternalDACDigitalPlayBackVolume_Cfg(int audio_src_in_type); -const char *GetAudioAmpMainvolTableBaseName(int get_type); -int GetDefault_EQGain_Table(int *EqTable); -int GetDefaultAvOutGainBuf(int *nAvoutTable); -int GetAvOutGainBuf_Cfg(int *nAvoutTable); - -#endif //__TV_AUDIO_CFG_H__ diff --git a/tvapi/libtv/tvutils/CCondition.h b/tvapi/libtv/tvutils/CCondition.h deleted file mode 100644 index d4ed263..0000000 --- a/tvapi/libtv/tvutils/CCondition.h +++ b/dev/null @@ -1,90 +0,0 @@ -/* -reference android api, just linux pthread -*/ - -#ifndef _TV_UTILS_CONDITION_H -#define _TV_UTILS_CONDITION_H - -#include <stdint.h> -#include <sys/types.h> -#include <time.h> -#include <pthread.h> -#include "CMutex.h" - -typedef long long nsecs_t; - -class CCondition { -public: - enum { - PRIVATE = 0, - SHARED = 1 - }; - - CCondition(); - CCondition(int type); - ~CCondition(); - // Wait on the condition variable. Lock the mutex before calling. - int wait(CMutex &mutex); - // same with relative timeout - int waitRelative(CMutex &mutex, long sec); - // Signal the condition variable, allowing one thread to continue. - void signal(); - // Signal the condition variable, allowing all threads to continue. - void broadcast(); - -private: - pthread_cond_t mCond; -}; - - - -// --------------------------------------------------------------------------- - -inline CCondition::CCondition() -{ - pthread_cond_init(&mCond, NULL); -} -inline CCondition::CCondition(int type) -{ - if (type == SHARED) { - pthread_condattr_t attr; - pthread_condattr_init(&attr); - pthread_condattr_setpshared(&attr, PTHREAD_PROCESS_SHARED); - pthread_cond_init(&mCond, &attr); - pthread_condattr_destroy(&attr); - } else { - pthread_cond_init(&mCond, NULL); - } -} -inline CCondition::~CCondition() -{ - pthread_cond_destroy(&mCond); -} -inline int CCondition::wait(CMutex &mutex) -{ - return -pthread_cond_wait(&mCond, &mutex.mMutex); -} -inline int CCondition::waitRelative(CMutex &mutex, long msec) -{ - struct timespec ts; - long _nanoSec = 1000000000; - int _sec = msec / 1000; - long _nsec = (msec - 1000 * _sec) * 1000000; - clock_gettime(CLOCK_REALTIME, &ts); - ts.tv_sec += _sec; - ts.tv_nsec += _nsec; - if (ts.tv_nsec > _nanoSec) { - ts.tv_nsec %= _nanoSec; - ts.tv_sec++; - } - return -pthread_cond_timedwait(&mCond, &mutex.mMutex, &ts); -} -inline void CCondition::signal() -{ - pthread_cond_signal(&mCond); -} -inline void CCondition::broadcast() -{ - pthread_cond_broadcast(&mCond); -} -#endif diff --git a/tvapi/libtv/tvutils/CFile.cpp b/tvapi/libtv/tvutils/CFile.cpp deleted file mode 100644 index af850af..0000000 --- a/tvapi/libtv/tvutils/CFile.cpp +++ b/dev/null @@ -1,195 +0,0 @@ -#define LOG_TAG "CFILE" - -#include "CFile.h" -#include "CTvLog.h" - -#include <stdlib.h> - -CFile::CFile() -{ - mPath[0] = '\0'; - mFd = -1; -} - -CFile::~CFile() -{ - closeFile(); -} - -CFile::CFile(const char *path) -{ - strcpy(mPath, path); - mFd = -1; -} - -int CFile::openFile(const char *path) -{ - LOGD("openFile = %s", path); - - if (mFd < 0) { - if (path == NULL) { - if (strlen(mPath) <= 0) - return -1; - - mFd = open(mPath, O_RDWR);//读写模式打开 - if (mFd < 0) LOGD("open file(--%s) fail", mPath); - } else { - mFd = open(path, O_RDWR);//读写模式打开 - LOGD("open file(%s fd=%d) ", path, mFd); - strcpy(mPath, path); - } - } - - return mFd; -} - -int CFile::closeFile() -{ - if (mFd > 0) { - close(mFd); - mFd = -1; - } - return 0; -} - -int CFile::writeFile(const unsigned char *pData, int uLen) -{ - int ret = -1; - if (mFd > 0) - ret = write(mFd, pData, uLen); - - return ret; -} - -int CFile::readFile(void *pBuf, int uLen) -{ - int ret = 0; - if (mFd > 0) { - ret = read(mFd, pBuf, uLen); - } - return ret; -} - -int CFile::copyTo(const char *dstPath) -{ - if (strlen(mPath) <= 0) - return -1; - int dstFd; - if (mFd == -1) { - if ((mFd = open(mPath, O_RDONLY)) == -1) { - LOGE("Open %s Error:%s/n", mPath, strerror(errno)); - return -1; - } - } - - if ((dstFd = open(dstPath, O_WRONLY | O_CREAT, S_IRUSR | S_IWUSR)) == -1) { - LOGE("Open %s Error:%s/n", dstPath, strerror(errno)); - } - - int bytes_read, bytes_write; - char buffer[BUFFER_SIZE]; - char *ptr; - int ret = 0; - while ((bytes_read = read(mFd, buffer, BUFFER_SIZE))) { - /* 一个致命的错误发生了 */ - if ((bytes_read == -1) && (errno != EINTR)) { - ret = -1; - break; - } else if (bytes_read > 0) { - ptr = buffer; - while ((bytes_write = write(dstFd, ptr, bytes_read))) { - /* 一个致命错误发生了 */ - if ((bytes_write == -1) && (errno != EINTR)) { - ret = -1; - break; - } - /* 写完了所有读的字节 */ - else if (bytes_write == bytes_read) { - ret = 0; - break; - } - /* 只写了一部分,继续写 */ - else if (bytes_write > 0) { - ptr += bytes_write; - bytes_read -= bytes_write; - } - } - /* 写的时候发生的致命错误 */ - if (bytes_write == -1) { - ret = -1; - break; - } - } - } - fsync(dstFd); - close(dstFd); - return ret; -} - - -int CFile::delFile(const char *path) -{ - if (strlen(path) <= 0) return -1; - if (unlink(path) != 0) { - LOGD("delete file(%s) err=%s", path, strerror(errno)); - return -1; - } - return 0; -} - -int CFile::delFile() -{ - if (strlen(mPath) <= 0) return -1; - if (unlink(mPath) != 0) { - LOGD("delete file(%s) err=%s", mPath, strerror(errno)); - return -1; - } - return 0; -} - - -int CFile::getFileAttrValue(const char *path) -{ - int value; - - int fd = open(path, O_RDONLY); - if (fd <= 0) { - LOGE("open (%s)ERROR!!error = -%s- \n", path, strerror ( errno )); - } - char s[8]; - read(fd, s, sizeof(s)); - close(fd); - value = atoi(s); - return value; -} - -int CFile::setFileAttrValue(const char *path, int value) -{ - FILE *fp = fopen ( path, "w" ); - - if ( fp == NULL ) { - LOGW ( "Open %s error(%s)!\n", path, strerror ( errno ) ); - return -1; - } - fprintf ( fp, "%d", value ); - fclose ( fp ); - return 0; -} - -int CFile::getFileAttrStr(const char *path __unused, char *str __unused) -{ - return 0; -} - -int CFile::setFileAttrStr(const char *path, const char *str) -{ - FILE *fp = fopen ( path, "w" ); - - if ( fp == NULL ) { - LOGW ( "Open %s error(%s)!\n", path, strerror ( errno ) ); - return -1; - } - fprintf ( fp, "%s", str ); - fclose ( fp ); - return 0; -} diff --git a/tvapi/libtv/tvutils/CFile.h b/tvapi/libtv/tvutils/CFile.h deleted file mode 100644 index a19cb61..0000000 --- a/tvapi/libtv/tvutils/CFile.h +++ b/dev/null @@ -1,47 +0,0 @@ -/* - * showbo -*/ -#ifndef C_FILE_H -#define C_FILE_H - -#include <sys/types.h> -#include <sys/stat.h> -#include <fcntl.h> -#include <stdio.h> -#include <string.h> -#include <errno.h> - -#define CC_MAX_FILE_PATH_LEN (256) - -#define BUFFER_SIZE 1024 - -class CFile { -public: - CFile(const char *path); - CFile(); - virtual ~CFile(); - virtual int openFile(const char *path); - virtual int closeFile(); - virtual int writeFile(const unsigned char *pData, int uLen); - virtual int readFile(void *pBuf, int uLen); - int copyTo(const char *dstPath); - static int delFile(const char *path); - static int getFileAttrValue(const char *path); - static int setFileAttrValue(const char *path, int value); - static int getFileAttrStr(const char *path, char *str); - static int setFileAttrStr(const char *path, const char *str); - int delFile(); - int flush(); - int seekTo(); - int seekToBegin(); - int seekToEnd(); - int getLength(); - int getFd() - { - return mFd; - }; -protected: - char mPath[CC_MAX_FILE_PATH_LEN]; - int mFd; -}; -#endif diff --git a/tvapi/libtv/tvutils/CHdmiCecCmd.cpp b/tvapi/libtv/tvutils/CHdmiCecCmd.cpp deleted file mode 100644 index b2fb0c3..0000000 --- a/tvapi/libtv/tvutils/CHdmiCecCmd.cpp +++ b/dev/null @@ -1,16 +0,0 @@ -#include "CHdmiCecCmd.h" -CHdmiCec::CHdmiCec() -{ -} - -CHdmiCec::~CHdmiCec() -{ -} - -int CHdmiCec::readFile(unsigned char *pBuf __unused, unsigned int uLen __unused) -{ - int ret = 0; - //ret = read(mFd, pBuf, uLen); - return ret; -} - diff --git a/tvapi/libtv/tvutils/CHdmiCecCmd.h b/tvapi/libtv/tvutils/CHdmiCecCmd.h deleted file mode 100644 index 9c08a63..0000000 --- a/tvapi/libtv/tvutils/CHdmiCecCmd.h +++ b/dev/null @@ -1,9 +0,0 @@ -#include "CFile.h" - -static const char *CEC_PATH = "/dev/aocec"; -class CHdmiCec: public CFile { -public: - CHdmiCec(); - ~CHdmiCec(); - int readFile(unsigned char *pBuf, unsigned int uLen); -}; diff --git a/tvapi/libtv/tvutils/CMsgQueue.cpp b/tvapi/libtv/tvutils/CMsgQueue.cpp deleted file mode 100644 index 9615b52..0000000 --- a/tvapi/libtv/tvutils/CMsgQueue.cpp +++ b/dev/null @@ -1,122 +0,0 @@ -#define LOG_TAG "CMsgQueueThread" - -#include "CMsgQueue.h" -#include <CTvLog.h> -#include <utils/Timers.h> - -CMessage::CMessage() -{ - mDelayMs = 0; - mWhenMs = 0; -} - -CMessage::~CMessage() -{ -} - -CMsgQueueThread::CMsgQueueThread() -{ -} - -CMsgQueueThread::~CMsgQueueThread() -{ - //请求退出处理线程,并阻塞 - requestExitAndWait(); -} - -nsecs_t CMsgQueueThread::getNowMs() -{ - return systemTime(SYSTEM_TIME_MONOTONIC) / 1000000; -} - -void CMsgQueueThread::sendMsg(CMessage &msg) -{ - CMutex::Autolock _l(mLockQueue); - msg.mWhenMs = getNowMs() + msg.mDelayMs;// - int i = 0; - while (i < (int)m_v_msg.size() && m_v_msg[i].mWhenMs <= msg.mWhenMs) i++; //find the index that will insert(i) - m_v_msg.insertAt(msg, i);//insert at index i - CMessage msg1 = m_v_msg[0]; - LOGD("sendmsg now = %lld msg[0] when = %lld", getNowMs(), msg1.mWhenMs); - // - //if(i == 0)// is empty or new whenMS is at index 0, low all ms in list. so ,need to wakeup loop, to get new delay time. - mGetMsgCondition.signal(); -} - -//有个缺陷,只能根据消息类型移除,同类型消息会全部移除,但足够用了 -void CMsgQueueThread::removeMsg(CMessage &msg) -{ - CMutex::Autolock _l(mLockQueue); - int beforeSize = (int)m_v_msg.size(); - for (int i = 0; i < (int)m_v_msg.size(); i++) { - const CMessage &_msg = m_v_msg.itemAt(i); - if (_msg.mType == msg.mType) { - m_v_msg.removeAt(i); - } - } - //some msg removeed - if (beforeSize > (int)m_v_msg.size()) - mGetMsgCondition.signal(); -} - -void CMsgQueueThread::clearMsg() -{ - CMutex::Autolock _l(mLockQueue); - m_v_msg.clear(); -} - -int CMsgQueueThread::startMsgQueue() -{ - CMutex::Autolock _l(mLockQueue); - this->run(); - return 0; -} - -bool CMsgQueueThread::threadLoop() -{ - int sleeptime = 100;//ms - while (!exitPending()) { //requietexit() or requietexitWait() not call - mLockQueue.lock(); - while (m_v_msg.size() == 0) { //msg queue is empty - mGetMsgCondition.wait(mLockQueue);//first unlock,when return,lock again,so need,call unlock - } - mLockQueue.unlock(); - //get delay time - CMessage msg; - nsecs_t delayMs = 0, nowMS = 0; - do { //wait ,until , the lowest time msg's whentime is low nowtime, to go on - if (m_v_msg.size() <= 0) { - LOGD("msg size is 0, break"); - break; - } - mLockQueue.lock();//get msg ,first lock. - msg = m_v_msg[0];//get first - mLockQueue.unlock(); - - delayMs = msg.mWhenMs - getNowMs(); - LOGD("threadLoop now = %lld mswhen = %lld delayMs = %lld msg type = %d", getNowMs(), msg.mWhenMs, delayMs, msg.mType); - if (delayMs > 0) { - mLockQueue.lock();//get msg ,first lock. - int ret = mGetMsgCondition.waitRelative(mLockQueue, delayMs); - mLockQueue.unlock(); - LOGD("msg queue wait ret = %d", ret); - } else { - break; - } - } while (true); //msg[0], timeout - - if (m_v_msg.size() > 0) { - mLockQueue.lock();// - msg = m_v_msg[0]; - m_v_msg.removeAt(0); - mLockQueue.unlock();// - //handle it - handleMessage(msg); - } - - //usleep(sleeptime * 1000); - } - //exit - //return true, run again, return false,not run. - return false; -} diff --git a/tvapi/libtv/tvutils/CMsgQueue.h b/tvapi/libtv/tvutils/CMsgQueue.h deleted file mode 100644 index 617145b..0000000 --- a/tvapi/libtv/tvutils/CMsgQueue.h +++ b/dev/null @@ -1,53 +0,0 @@ -/* - * showboz - * 单(线程)消费者 - * 一个简单的MSG handler -*/ -#include "CThread.h" -#include <utils/Vector.h> -using namespace android; -#if !defined(_C_MSG_QUEUE_H) -#define _C_MSG_QUEUE_H - -class CMessage { -public: - CMessage(); - ~CMessage(); - nsecs_t mDelayMs;//delay times , MS - nsecs_t mWhenMs;//when, the msg will handle - int mType; - void *mpData; - unsigned char mpPara[3072]; -}; - -class CMsgQueueThread: public CThread { -public: - CMsgQueueThread(); - virtual ~CMsgQueueThread(); - int startMsgQueue(); - void sendMsg(CMessage &msg); - void removeMsg(CMessage &msg); - void clearMsg(); -private: - bool threadLoop(); - nsecs_t getNowMs();//get system time , MS - virtual void handleMessage(CMessage &msg) = 0; - - // - Vector<CMessage> m_v_msg; - CCondition mGetMsgCondition; - CMutex mLockQueue; -}; - -/*class CHandler -{ - pubulic: - CHandler(CMsgQueueThread& msgQueue); - ~CHandler(); - void sendMsg(); - void removeMsg(); - private: - virtual void handleMessage(CMessage &msg); -};*/ - -#endif diff --git a/tvapi/libtv/tvutils/CMutex.h b/tvapi/libtv/tvutils/CMutex.h deleted file mode 100644 index 66749c5..0000000 --- a/tvapi/libtv/tvutils/CMutex.h +++ b/dev/null @@ -1,115 +0,0 @@ -/* -reference android api, just linux pthread -*/ - -#ifndef _TV_UTILS_MUTEX_H -#define _TV_UTILS_MUTEX_H - -#include <stdint.h> -#include <sys/types.h> -#include <time.h> -#include <pthread.h> - -class CCondition; - -/* - * Simple mutex class. The implementation is system-dependent. - * - * The mutex must be unlocked by the thread that locked it. They are not - * recursive, i.e. the same thread can't lock it multiple times. - */ -class CMutex { -public: - enum { - PRIVATE = 0, - SHARED = 1 - }; - - CMutex(); - CMutex(const char *name); - CMutex(int type, const char *name = NULL); - ~CMutex(); - - // lock or unlock the mutex - int lock(); - void unlock(); - - // lock if possible; returns 0 on success, error otherwise - int tryLock(); - - // Manages the mutex automatically. It'll be locked when Autolock is - // constructed and released when Autolock goes out of scope. - class Autolock { - public: - inline Autolock(CMutex &mutex) : mLock(mutex) - { - mLock.lock(); - } - inline Autolock(CMutex *mutex) : mLock(*mutex) - { - mLock.lock(); - } - inline ~Autolock() - { - mLock.unlock(); - } - private: - CMutex &mLock; - }; - -private: - friend class CCondition; - - // A mutex cannot be copied - CMutex(const CMutex &); - CMutex &operator = (const CMutex &); - - pthread_mutex_t mMutex; -}; - -inline CMutex::CMutex() -{ - pthread_mutex_init(&mMutex, NULL); -} - -inline CMutex::CMutex(const char *name __unused) -{ - pthread_mutex_init(&mMutex, NULL); -} - -inline CMutex::CMutex(int type, const char *name __unused) -{ - if (type == SHARED) { - pthread_mutexattr_t attr; - pthread_mutexattr_init(&attr); - pthread_mutexattr_setpshared(&attr, PTHREAD_PROCESS_SHARED); - pthread_mutex_init(&mMutex, &attr); - pthread_mutexattr_destroy(&attr); - } else { - pthread_mutex_init(&mMutex, NULL); - } -} - -inline CMutex::~CMutex() -{ - pthread_mutex_destroy(&mMutex); -} - -inline int CMutex::lock() -{ - return -pthread_mutex_lock(&mMutex); -} - -inline void CMutex::unlock() -{ - pthread_mutex_unlock(&mMutex); -} - -inline int CMutex::tryLock() -{ - return -pthread_mutex_trylock(&mMutex); -} - -//typedef CMutex::Autolock AutoMutex; - -#endif diff --git a/tvapi/libtv/tvutils/CSerialCommunication.cpp b/tvapi/libtv/tvutils/CSerialCommunication.cpp deleted file mode 100644 index 664645a..0000000 --- a/tvapi/libtv/tvutils/CSerialCommunication.cpp +++ b/dev/null @@ -1,121 +0,0 @@ -#define LOG_TAG "CSerialCommunication" - -#include <CTvLog.h> -#include <stdio.h> -#include <stdlib.h> -#include <unistd.h> -#include <sys/prctl.h> -#include <fcntl.h> -#include <errno.h> -#include <cutils/log.h> -#include "CSerialCommunication.h" - -CSerialCommunication::CSerialCommunication() -{ - int i = 0; - - mpObserver = NULL; - mState = STATE_STOPED; - - mFileName[0] = 0; - for (i = 0; i < CC_MAX_SERIAL_RD_BUF_LEN; i++) { - mDataBuf[i] = 0; - } -} - -CSerialCommunication::~CSerialCommunication() -{ - mSerialPort.CloseDevice(); -} - -int CSerialCommunication::OpenModule(int serial_dev_id) -{ - int tmp_ret = 0; - - if (mSerialPort.OpenDevice(serial_dev_id) < 0) { - return -1; - } - - return mSerialPort.setup_serial(); -} - -int CSerialCommunication::CloseModule() -{ - stop(); - mSerialPort.CloseDevice(); - return 0; -} - -int CSerialCommunication::start() -{ - if (mState == STATE_STOPED) { - this->run(); - } - - return 0; -} - -int CSerialCommunication::stop() -{ - requestExit(); - mState = STATE_STOPED; - - return 0; -} - -int CSerialCommunication::sendData(int data_len, unsigned char data_buf[]) -{ - mSerialPort.writeFile(data_buf, data_len); - return 0; -} - -bool CSerialCommunication::threadLoop() -{ - int rd_len = 0; - int thread_dly_tm = 100 * 1000; - - if (mpObserver == NULL) { - return false; - } - - if (mSerialPort.getFd() < 0) { - return false; - } - - if (mSerialPort.getDevId() < 0) { - return false; - } - - LOGD("%s, entering...\n", "TV"); - - prctl(PR_SET_NAME, (unsigned long)"CSerialCommunication thread loop"); - - mState = STATE_RUNNING; - - while (!exitPending()) { //requietexit() or requietexitWait() not call - memset(mDataBuf, 0, CC_MAX_SERIAL_RD_BUF_LEN); - rd_len = mSerialPort.readFile(mDataBuf, CC_MAX_SERIAL_RD_BUF_LEN); - if (rd_len <= 0) { - usleep(thread_dly_tm); - continue; - } - - LOGD("%s, rd_len = %d.\n", __FUNCTION__, rd_len); - - if (rd_len > CC_MAX_SERIAL_RD_BUF_LEN) { - rd_len = CC_MAX_SERIAL_RD_BUF_LEN; - } - - LOGD("%s, send data to java.", __FUNCTION__); - //send data to java - mpObserver->onSerialCommunication(mSerialPort.getDevId(), rd_len, mDataBuf); - - usleep(thread_dly_tm); - } - - mState = STATE_STOPED; - - LOGD("%s, exiting...\n", "TV"); - //return true, run again, return false,not run. - return false; -} diff --git a/tvapi/libtv/tvutils/CSerialCommunication.h b/tvapi/libtv/tvutils/CSerialCommunication.h deleted file mode 100644 index 4f3e2d9..0000000 --- a/tvapi/libtv/tvutils/CSerialCommunication.h +++ b/dev/null @@ -1,49 +0,0 @@ -#ifndef __TV_SERIAL_COMMUNICATION_H__ -#define __TV_SERIAL_COMMUNICATION_H__ - -#include "CThread.h" -#include "CSerialPort.h" -#include "../tv/CTvEv.h" - -class CSerialCommunication: public CThread { -public: - CSerialCommunication(); - ~CSerialCommunication(); - - int start(); - int stop(); - int OpenModule(int serial_dev_id); - int CloseModule(); - int sendData(int data_len, unsigned char data_buf[]); - - class ISerialCommunicationObserver { - public: - ISerialCommunicationObserver() {}; - virtual ~ISerialCommunicationObserver() {}; - virtual void onSerialCommunication(int dev_id __unused, - int rd_len __unused, - unsigned char data_buf[] __unused) { - }; - }; - - void setObserver(ISerialCommunicationObserver *pOb) { - mpObserver = pOb; - }; - -private: - bool threadLoop(); - - int mState; - ISerialCommunicationObserver *mpObserver; - CSerialPort mSerialPort; - - char mFileName[CC_MAX_FILE_PATH_LEN]; - unsigned char mDataBuf[CC_MAX_SERIAL_RD_BUF_LEN]; - - enum SerialCommunicationState { - STATE_STOPED = 0, - STATE_RUNNING, - }; -}; - -#endif //__TV_SERIAL_COMMUNICATION_H__ diff --git a/tvapi/libtv/tvutils/CSerialPort.cpp b/tvapi/libtv/tvutils/CSerialPort.cpp deleted file mode 100644 index a523285..0000000 --- a/tvapi/libtv/tvutils/CSerialPort.cpp +++ b/dev/null @@ -1,358 +0,0 @@ -#include "CSerialPort.h" -#include <pthread.h> -#include "CTvLog.h" -#include <stdio.h> -#include <unistd.h> -#include <stdlib.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <fcntl.h> -#include <string.h> -#include <termios.h> -#include <errno.h> - -#include "../tvconfig/tvconfig.h" - -CSerialPort::CSerialPort() -{ - mDevId = -1; -} - -//close it -CSerialPort::~CSerialPort() -{ -} - -int CSerialPort::OpenDevice(int serial_dev_id) -{ - int tmp_ret = 0; - const char *dev_file_name = NULL; - - if (getFd() < 0) { - if (serial_dev_id == SERIAL_A) { - dev_file_name = DEV_PATH_S0; - } else if (serial_dev_id == SERIAL_B) { - dev_file_name = DEV_PATH_S1; - } else if (serial_dev_id == SERIAL_C) { - dev_file_name = DEV_PATH_S2; - } - - if (dev_file_name != NULL) { - mDevId = serial_dev_id; - tmp_ret = openFile(dev_file_name); - } - } - - return tmp_ret; -} - -int CSerialPort::CloseDevice() -{ - mDevId = -1; - closeFile(); - - return 0; -} - -void CSerialPort::set_speed (int fd, int speed) -{ - int i; - int status; - struct termios Opt; - tcgetattr (fd, &Opt); - for (i = 0; i < (int)(sizeof (speed_arr) / sizeof (int)); i++) { - if (speed == name_arr[i]) { - tcflush (fd, TCIOFLUSH); - cfsetispeed (&Opt, speed_arr[i]); - cfsetospeed (&Opt, speed_arr[i]); - status = tcsetattr (fd, TCSANOW, &Opt); - if (status != 0) { - perror ("tcsetattr fd1"); - return; - } - tcflush (fd, TCIOFLUSH); - } - } -} - -int CSerialPort::set_Parity (int fd, int databits, int stopbits, int parity) -{ - struct termios options; - if (tcgetattr (fd, &options) != 0) { - perror ("SetupSerial 1"); - return (0); - } - options.c_cflag &= ~CSIZE; - switch (databits) { - case 7: - options.c_cflag |= CS7; - break; - case 8: - options.c_cflag |= CS8; - break; - default: - fprintf (stderr, "Unsupported data size\n"); - return (0); - } - switch (parity) { - case 'n': - case 'N': - options.c_cflag &= ~PARENB; /* Clear parity enable */ - options.c_iflag &= ~INPCK; /* Enable parity checking */ - break; - case 'o': - case 'O': - options.c_cflag |= (PARODD | PARENB); - options.c_iflag |= INPCK; /* Disnable parity checking */ - break; - case 'e': - case 'E': - options.c_cflag |= PARENB; /* Enable parity */ - options.c_cflag &= ~PARODD; - options.c_iflag |= INPCK; /* Disnable parity checking */ - break; - case 'S': - case 's': /*as no parity */ - options.c_cflag &= ~PARENB; - options.c_cflag &= ~CSTOPB; - break; - default: - fprintf (stderr, "Unsupported parity\n"); - return (0); - } - - switch (stopbits) { - case 1: - options.c_cflag &= ~CSTOPB; - break; - case 2: - options.c_cflag |= CSTOPB; - break; - default: - fprintf (stderr, "Unsupported stop bits\n"); - return (0); - } - /* Set input parity option */ - if (parity != 'n') - options.c_iflag |= INPCK; - tcflush (fd, TCIFLUSH); - options.c_cc[VTIME] = 150; - options.c_cc[VMIN] = 0; /* Update the options and do it NOW */ - //qd to set raw mode, which is copied from web - options.c_iflag &= ~(IGNBRK | BRKINT | PARMRK | ISTRIP - | INLCR | IGNCR | ICRNL | IXON); - options.c_oflag &= ~OPOST; - options.c_lflag &= ~(ECHO | ECHONL | ICANON | ISIG | IEXTEN); - options.c_cflag &= ~(CSIZE | PARENB); - options.c_cflag |= CS8; - - if (tcsetattr (fd, TCSANOW, &options) != 0) { - perror ("SetupSerial 3"); - return (0); - } - return (1); -} - -int CSerialPort::setup_serial() -{ - set_speed(mFd, 115200); - set_Parity(mFd, 8, 1, 'N'); - return 0; -} - -int CSerialPort::set_opt(int speed, int db, int sb, char pb, int overtime, bool raw_mode) -{ - int i = 0; - struct termios old_cfg, new_cfg; - if (mFd <= 0) { - LOGE("not open dev, when set opt"); - return -1; - } - //first get it - if (tcgetattr(mFd, &old_cfg) != 0) { - LOGE("get serial attr error mFd = %d(%s)!\n", mFd, strerror(errno)); - return -1; - } - - //set speed - for (i = 0; i < (int)(sizeof(speed_arr) / sizeof(int)); i++) { - if (speed == name_arr[i]) { - cfsetispeed(&new_cfg, speed_arr[i]); - cfsetospeed(&new_cfg, speed_arr[i]); - break; - } - } - - setdatabits(&new_cfg, db); - setstopbits(&new_cfg, sb); - setparity(&new_cfg, pb); - - - if (overtime >= 0) { - new_cfg.c_cc[VTIME] = overtime / 100; /* 设置超时 seconds*/ - new_cfg.c_cc[VMIN] = 0; /* Update the options and do it NOW */ - } - - if (raw_mode) { - cfmakeraw(&new_cfg); - } - - //clear - tcflush(mFd, TCIOFLUSH); - if (tcsetattr(mFd, TCSANOW, &new_cfg) < 0) { - LOGE("%s, set serial attr error(%s)!\n", "TV", strerror(errno)); - return -1; - } - //clear,let be avail - tcflush(mFd, TCIOFLUSH); - - return 0; -} - -int CSerialPort::writeFile(const unsigned char *pData, unsigned int uLen) -{ - unsigned int len; - len = write(mFd, pData, uLen); - if (len == uLen) { - return len; - } else { - tcflush(mFd, TCOFLUSH); - LOGE("write data failed and tcflush hComm\n"); - return -1; - } -} - -static int com_read_data(int hComm, unsigned char *pData, unsigned int uLen) -{ - char inbuff[uLen]; - char buff[uLen]; - char tempbuff[uLen]; - int i = 0, j = 0; - - memset(inbuff, '\0', uLen); - memset(buff, '\0', uLen); - memset(tempbuff, '\0', uLen); - - if (hComm < 0) { - return -1; - } - - char *p = inbuff; - - fd_set readset; - struct timeval tv; - int MaxFd = 0; - - unsigned int c = 0; - int z, k; - - do { - FD_ZERO(&readset); - FD_SET(hComm, &readset); - MaxFd = hComm + 1; - tv.tv_sec = 0; - tv.tv_usec = 100000; - do { - z = select(MaxFd, &readset, 0, 0, &tv); - } while (z == -1 && errno == EINTR); - - if (z == -1) { - hComm = -1; - break; - } - - if (z == 0) { - hComm = -1; - break; - } - - if (FD_ISSET(hComm, &readset)) { - z = read(hComm, buff, uLen - c); -#if 0 - for (k = 0; k < z; k++) { - LOGD("%s, inbuff[%d]:%02X", "TV", k, buff[k]); - } -#endif - c += z; - - if (z > 0) { - if (z < (signed int) uLen) { - buff[z + 1] = '\0'; - memcpy(p, buff, z); - p += z; - } else { - memcpy(inbuff, buff, z); - } - - memset(buff, '\0', uLen); - } else { - hComm = -1; - } - - if (c >= uLen) { - hComm = -1; - break; - } - } - } while (hComm >= 0); - - memcpy(pData, inbuff, c); - p = NULL; - return c; -} - -int CSerialPort::readFile(unsigned char *pBuf, unsigned int uLen) -{ - //using non-block mode - return com_read_data(mFd, pBuf, uLen); -} - -int CSerialPort::setdatabits(struct termios *s, int db) -{ - if (db == 5) { - s->c_cflag = (s->c_cflag & ~CSIZE) | (CS5 & CSIZE); - } else if (db == 6) { - s->c_cflag = (s->c_cflag & ~CSIZE) | (CS6 & CSIZE); - } else if (db == 7) { - s->c_cflag = (s->c_cflag & ~CSIZE) | (CS7 & CSIZE); - } else if (db == 8) { - s->c_cflag = (s->c_cflag & ~CSIZE) | (CS8 & CSIZE); - } else { - LOGE("Unsupported data size!\n"); - } - return 0; -} - -int CSerialPort::setstopbits(struct termios *s, int sb) -{ - if (sb == 1) { - s->c_cflag &= ~CSTOPB; - } else if (sb == 2) { - s->c_cflag |= CSTOPB; - } else { - LOGE("Unsupported stop bits!\n"); - } - return 0; -} - -int CSerialPort::setparity(struct termios *s, char pb) -{ - if (pb == 'n' || pb == 'N') { - s->c_cflag &= ~PARENB; /* Clear parity enable */ - s->c_cflag &= ~INPCK; /* Enable parity checking */ - } else if (pb == 'o' || pb == 'O') { - s->c_cflag |= (PARODD | PARENB); - s->c_cflag |= INPCK; /* Disable parity checking */ - } else if (pb == 'e' || pb == 'E') { - s->c_cflag |= PARENB; /* Enable parity */ - s->c_cflag &= ~PARODD; - s->c_iflag |= INPCK; /* Disable parity checking */ - } else if (pb == 's' || pb == 'S') { - s->c_cflag &= ~PARENB; - s->c_cflag &= ~CSTOPB; - s->c_cflag |= INPCK; /* Disable parity checking */ - } else { - LOGE("Unsupported parity!\n"); - } - return 0; -} diff --git a/tvapi/libtv/tvutils/CSerialPort.h b/tvapi/libtv/tvutils/CSerialPort.h deleted file mode 100644 index af52a3c..0000000 --- a/tvapi/libtv/tvutils/CSerialPort.h +++ b/dev/null @@ -1,54 +0,0 @@ -#ifndef __CSERIAL_STREAM__ -#define __CSERIAL_STREAM__ -#include "CFile.h" -#include <stdio.h> -#include <unistd.h> -#include <stdlib.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <fcntl.h> -#include <string.h> -#include <pthread.h> -#include <termios.h> -#include <errno.h> - - -static const int speed_arr[] = {B115200, B38400, B19200, B9600, B4800, B2400, B1200, B300, B38400, B19200, B9600, B4800, B2400, B1200, B300}; -static const int name_arr[] = { 115200, 38400, 19200, 9600, 4800, 2400, 1200, 300, 38400, 19200, 9600, 4800, 2400, 1200, 300}; -static const char *DEV_PATH_S0 = "/dev/ttyS0"; -static const char *DEV_PATH_S1 = "/dev/ttyS1"; -static const char *DEV_PATH_S2 = "/dev/ttyS2"; - -enum SerialDeviceID { - SERIAL_A = 0, - SERIAL_B, - SERIAL_C, -}; - -class CSerialPort: public CFile { -public: - CSerialPort(); - ~CSerialPort(); - - int OpenDevice(int serial_dev_id); - int CloseDevice(); - - int writeFile(const unsigned char *pData, unsigned int uLen); - int readFile(unsigned char *pBuf, unsigned int uLen); - int set_opt(int speed, int db, int sb, char pb, int overtime, bool raw_mode); - int setup_serial(); - int getDevId() - { - return mDevId; - }; - -private: - int setdatabits(struct termios *s, int db); - int setstopbits(struct termios *s, int sb); - int setparity(struct termios *s, char pb); - int set_Parity (int fd, int databits, int stopbits, int parity); - void set_speed (int fd, int speed); - - int mDevId; -}; -#endif diff --git a/tvapi/libtv/tvutils/CSqlite.cpp b/tvapi/libtv/tvutils/CSqlite.cpp deleted file mode 100644 index 77d234e..0000000 --- a/tvapi/libtv/tvutils/CSqlite.cpp +++ b/dev/null @@ -1,151 +0,0 @@ -// -// -// amlogic 2015 -// -// @ Project : tv -// @ File Name : CSqlite -// @ Date : 2015-5 -// @ Author : -// -// -#define LOG_TAG "CSqlite" - -#include "CSqlite.h" - -using namespace android; - -CSqlite::CSqlite() -{ - mHandle = NULL; -} - -CSqlite::~CSqlite() -{ - if (mHandle != NULL) { - sqlite3_close(mHandle); - mHandle = NULL; - } -} - -//完整性检测,检测数据库是否被破坏 -bool CSqlite::integrityCheck() -{ - char *err; - int rval = sqlite3_exec(mHandle, "PRAGMA integrity_check;", sqlite3_exec_callback, NULL, &err); - if (rval != SQLITE_OK) { - LOGD(" val = %d msg = %s!\n", rval, sqlite3_errmsg(mHandle)); - return false; - } else { - return true; - } - return true; -} - -int CSqlite::sqlite3_exec_callback(void *data __unused, int nColumn, char **colValues, char **colNames __unused) -{ - LOGD("sqlite3_exec_callback--- nums = %d", nColumn); - for (int i = 0; i < nColumn; i++) { - LOGD("%s\t", colValues[i]); - } - LOGD("\n"); - - return 0; -} - -int CSqlite::openDb(const char *path) -{ - if (sqlite3_open(path, &mHandle) != SQLITE_OK) { - LOGD("open db(%s) error", path); - mHandle = NULL; - return -1; - } - return 0; -} - -int CSqlite::closeDb() -{ - int rval = 0; - if (mHandle != NULL) { - rval = sqlite3_close(mHandle); - mHandle = NULL; - } - return rval; -} - -void CSqlite::setHandle(sqlite3 *h) -{ - mHandle = h; -} - -sqlite3 *CSqlite::getHandle() -{ - return mHandle; -} - -int CSqlite::select(const char *sql, CSqlite::Cursor &c) -{ - int col, row; - char **pResult = NULL; - char *errmsg; - assert(mHandle && sql); - - if (strncmp(sql, "select", 6)) - return -1; - //LOGD("sql=%s", sql); - if (sqlite3_get_table(mHandle, sql, &pResult, &row, &col, &errmsg) != SQLITE_OK) { - LOGD("errmsg=%s", errmsg); - if (pResult != NULL) - sqlite3_free_table(pResult); - return -1; - } - - //LOGD("row=%d, col=%d", row, col); - c.Init(pResult, row, col); - return 0; -} - -void CSqlite::insert() -{ -} - -bool CSqlite::exeSql(const char *sql) -{ - char *errmsg; - if (sql == NULL) return false; - if (sqlite3_exec(mHandle, sql, NULL, NULL, &errmsg) != SQLITE_OK) { - LOGD("exeSql=: %s error=%s", sql, errmsg ? errmsg : "Unknown"); - if (errmsg) - sqlite3_free(errmsg); - return false; - } - LOGD("sql=%s", sql); - return true; -} - -bool CSqlite::beginTransaction() -{ - return exeSql("begin;"); -} - -bool CSqlite::commitTransaction() -{ - return exeSql("commit;"); -} - -bool CSqlite::rollbackTransaction() -{ - return exeSql("rollback;"); -} - -void CSqlite::del() -{ -} - -void CSqlite::update() -{ -} - -void CSqlite::xxtable() -{ -} - diff --git a/tvapi/libtv/tvutils/CSqlite.h b/tvapi/libtv/tvutils/CSqlite.h deleted file mode 100644 index 049f250..0000000 --- a/tvapi/libtv/tvutils/CSqlite.h +++ b/dev/null @@ -1,184 +0,0 @@ -// -// -// amlogic 2015 -// -// @ Project : tv -// @ File Name : CSqlite -// @ Date : 2015-5 -// @ Author : -// -// -#if !defined(_CSQLITE_H_) -#define _CSQLITE_H_ -#include <unistd.h> -#include <stdlib.h> -#include <utils/String8.h> -#include <utils/Vector.h> -#include <utils/RefBase.h> -#include "CTvLog.h" -#include <sqlite3.h> -using namespace android; -class CSqlite { -public: - class Cursor { - public: - void Init(char **data, int cow, int col) - { - mData = data; - mCurRowIndex = 0; - mRowNums = cow; - mColNums = col; - mIsClosed = false; - } - Cursor() - { - mData = NULL; - mCurRowIndex = 0; - mRowNums = 0; - mColNums = 0; - mIsClosed = false; - } - - /*Cursor(Cursor& c) - { - data = c.data; - mCurRowIndex = 0; - mRowNums = c.mRowNums; - mColNums = c.mColNums; - mIsClosed = false; - } - - Cursor& operator = (const Cursor& c) - { - data = c.data; - mCurRowIndex = 0; - mRowNums = c.mRowNums; - mColNums = c.mColNums; - mIsClosed = false; - return *this; - }*/ - ~Cursor() - { - close(); - } - //Row nums - int getCount() - { - return mRowNums; - } - - int getPosition(); - - bool move(int offset); - - bool moveToPosition(int position); - - bool moveToFirst() - { - //LOGD("moveToFirst mRowNums = %d", mRowNums); - if (mRowNums <= 0) return false; - mCurRowIndex = 0; - return true; - } - - bool moveToLast(); - - bool moveToNext() - { - if (mCurRowIndex >= mRowNums - 1)return false; - mCurRowIndex++; - return true; - } - - bool moveToPrevious(); - - int getColumnIndex(const char *columnName) - { - int index = 0; - for (int i = 0; i < mColNums; i++) { - if (strcmp(columnName, mData[i]) == 0) - return index; - index++; - } - - return -1; - } - - //String getColumnName(int columnIndex); - //String[] getColumnNames(); - int getColumnCount(); - //字符串长度问题,弃用 - int getString(char *str, int columnIndex) - { - if (columnIndex >= mColNums || str == NULL) return -1; - strcpy(str, mData[mColNums * (mCurRowIndex + 1) + columnIndex]); - return 0; - } - //不限长度,依赖于String8 - String8 getString(int columnIndex) - { - if (columnIndex >= mColNums) return String8(""); - return String8(mData[mColNums * (mCurRowIndex + 1) + columnIndex]); - } - - int getInt(int columnIndex) - { - //if(columnIndex >= mColNums || str == NULL) return -1; - return atoi(mData[mColNums * (mCurRowIndex + 1) + columnIndex]); - } - unsigned long int getUInt(int columnIndex) - { - return strtoul(mData[mColNums * (mCurRowIndex + 1) + columnIndex], NULL, 10); - } - double getF(int columnIndex) - { - return atof(mData[mColNums * (mCurRowIndex + 1) + columnIndex]); - } - int getType(int columnIndex); - void close() - { - if (mData != NULL) - sqlite3_free_table(mData); - - mData = NULL; - mCurRowIndex = 0; - mRowNums = 0; - mIsClosed = true; - } - bool isClosed() - { - return mIsClosed; - } - private: - char **mData; - int mCurRowIndex; - int mRowNums; - int mColNums; - bool mIsClosed; - }; -public: - CSqlite(); - virtual ~CSqlite(); - int openDb(const char *path); - int closeDb(); - void setHandle(sqlite3 *h); - sqlite3 *getHandle(); - bool integrityCheck(); - int select(const char *sql, Cursor &); - bool exeSql(const char *sql); - void insert(); - void del(); - void update(); - void xxtable(); - bool beginTransaction(); - bool commitTransaction(); - bool rollbackTransaction(); - void dbsync() - { - sync(); - }; -private: - static int sqlite3_exec_callback(void *data, int nColumn, char **colValues, char **colNames); - sqlite3 *mHandle; -}; -#endif //CSQLITE diff --git a/tvapi/libtv/tvutils/CThread.cpp b/tvapi/libtv/tvutils/CThread.cpp deleted file mode 100644 index 6288040..0000000 --- a/tvapi/libtv/tvutils/CThread.cpp +++ b/dev/null @@ -1,165 +0,0 @@ -/* -reference android api, just linux pthread -*/ - -#include <stdio.h> -#include <stdlib.h> -#include <memory.h> -#include <errno.h> -#include <assert.h> -#include <unistd.h> - -#include <pthread.h> -#include <sched.h> -#include <sys/resource.h> - -#include "CThread.h" -#include <CTvLog.h> - -#include <sys/prctl.h> - -CThread::CThread() - : mThreadId(-1), - mLock("Thread::mLock"), - mExitPending(false), mRunning(false) -{ -} - -CThread::~CThread() -{ -} - -int CThread::readyToRun() -{ - return 0; -} - - -int CThread::run(const char *name __unused, int priority __unused, int stack) -{ - CMutex::Autolock _l(mLock); - - if (mRunning) { - // thread already started - return -1; - } - - mStatus = 0; - mExitPending = false; - mThreadId = -1; - mRunning = true; - - - pthread_attr_t attr; - pthread_attr_init(&attr); - pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); - - if (stack) { - pthread_attr_setstacksize(&attr, stack); - } - - int result = pthread_create(&mThreadId, &attr, - _threadLoop, this); - pthread_attr_destroy(&attr); - if (result != 0) { - LOGE("Thread create fail ret = %d (errno=%d)\n", - result, errno); - - mStatus = -1; // something happened! - mRunning = false; - mThreadId = -1; - return -1; - } - return 0; -} - -void *CThread::_threadLoop(void *user) -{ - CThread *const self = static_cast<CThread *>(user); - - bool first = true; - do { - bool result; - if (first) { - first = false; - self->mStatus = self->readyToRun(); - result = (self->mStatus == 0); - - if (result && !self->exitPending()) { - result = self->threadLoop(); - } - } else { - result = self->threadLoop(); - } - - - CMutex::Autolock _l(self->mLock); - if (result == false || self->mExitPending) { - self->mExitPending = true; - self->mRunning = false; - // clear thread ID so that requestExitAndWait() does not exit if - // called by a new thread using the same thread ID as this one. - self->mThreadId = -1; - // note that interested observers blocked in requestExitAndWait are - // awoken by broadcast, but blocked on mLock until break exits scope - self->mThreadExitedCondition.broadcast(); - break; - } - } while (true); - - return NULL; -} - -void CThread::requestExit() -{ - CMutex::Autolock _l(mLock); - mExitPending = true; -} - -int CThread::requestExitAndWait() -{ - CMutex::Autolock _l(mLock); - if (mThreadId == pthread_self()) { - ALOGW( - "Thread (this=%p): don't call waitForExit() from this " - "Thread object's thread. It's a guaranteed deadlock!", - this); - return -1; - } - - mExitPending = true; - - while (mRunning == true) { - mThreadExitedCondition.wait(mLock); - } - // This next line is probably not needed any more, but is being left for - // historical reference. Note that each interested party will clear flag. - mExitPending = false; - - return mStatus; -} - -int CThread::join() -{ - CMutex::Autolock _l(mLock); - if (mThreadId == pthread_self()) { - ALOGW( - "Thread (this=%p): don't call join() from this " - "Thread object's thread. It's a guaranteed deadlock!", - this); - - return -1; - } - - while (mRunning == true) { - mThreadExitedCondition.wait(mLock); - } - - return mStatus; -} - -bool CThread::exitPending() const -{ - CMutex::Autolock _l(mLock); - return mExitPending; -} diff --git a/tvapi/libtv/tvutils/CThread.h b/tvapi/libtv/tvutils/CThread.h deleted file mode 100644 index a660cc8..0000000 --- a/tvapi/libtv/tvutils/CThread.h +++ b/dev/null @@ -1,61 +0,0 @@ -/* -reference android api, just linux pthread -*/ - -#ifndef _TV_UTILS_THREAD_H -#define _TV_UTILS_THREAD_H - -#include <stdint.h> -#include <sys/types.h> -#include <time.h> -#include <pthread.h> -#include "CCondition.h" -#include "CMutex.h" - -class CThread { -public: - CThread(); - virtual ~CThread(); - - // Start the thread in threadLoop() which needs to be implemented. - virtual int run(const char *name = 0, - int priority = 0, - int stack = 0); - //request thread object to exit, asynchronous to exit. - virtual void requestExit(); - - // Good place to do one-time initializations - virtual int readyToRun(); - - // Call requestExit() and wait until this object's thread exits. - // BE VERY CAREFUL of deadlocks. In particular, it would be silly to call - // this function from this object's thread. Will return WOULD_BLOCK in - // that case. - int requestExitAndWait(); - - // Wait until this object's thread exits. Returns immediately if not yet running. - // Do not call from this object's thread; will return WOULD_BLOCK in that case. - int join(); -protected: - // exitPending() returns true if requestExit() has been called. - bool exitPending() const; - -private: - // Derived class must implement threadLoop(). The thread starts its life - // here. There are two ways of using the Thread object: - // 1) loop: if threadLoop() returns true, it will be called again if - // requestExit() wasn't called. - // 2) once: if threadLoop() returns false, the thread will exit upon return. - virtual bool threadLoop() = 0; - -private: - static void *_threadLoop(void *user); - pthread_t mThreadId; - mutable CMutex mLock; - CCondition mThreadExitedCondition; - int mStatus; - //note that all accesses of mExitPending and mRunning need to hold mLock - volatile bool mExitPending; - volatile bool mRunning; -}; -#endif diff --git a/tvapi/libtv/tvutils/CTvInput.cpp b/tvapi/libtv/tvutils/CTvInput.cpp deleted file mode 100644 index 001a474..0000000 --- a/tvapi/libtv/tvutils/CTvInput.cpp +++ b/dev/null @@ -1,170 +0,0 @@ -#define LOG_TAG "CTvInput" - -#include "CTvInput.h" -#include <stdio.h> -#include <string.h> -#include <errno.h> -#include <fcntl.h> -#include <CTvLog.h> -#include <utils/Timers.h> - -#define SEND_KEY_ACTION_UP 0x00 -#define SEND_KEY_ACTION_DOWN 0x01 - -CTvInput::CTvInput() -{ - mKeyEventFd_IR = open(KEY_EVENT_0, O_RDWR); - mKeyEventFd = open(KEY_EVENT_1, O_RDWR); - if (mKeyEventFd < 0 || mKeyEventFd_IR < 0) { - LOGD( "could not open /dev/input/event1\n "); - return; - } - mRepeatKeyCode = -1; - mRepeatKeydisTime = -1; - mWhenTimeRepeatKeyStartToSend = -1; - mTimeoutCount = 0; -} - -CTvInput::~CTvInput() -{ - close(mKeyEventFd); - close(mKeyEventFd_IR); -} - -void CTvInput::sendkeyEvent(const int &type, const int &code, const int &value) -{ - int ret; - struct input_event event; - - memset(&event, 0, sizeof(event)); - event.type = type; - event.code = code ; - event.value = value; - ret = write(mKeyEventFd, &event, sizeof(event)); - if (ret < (int)sizeof(event)) { - LOGD("sendkeyEvent :write event failed, %s\n", strerror(errno)); - return; - } -} - -void CTvInput::sendIRkeyEvent(const int &type, const int &code, const int &value) -{ - int ret; - struct input_event event; - - memset(&event, 0, sizeof(event)); - event.type = type; - event.code = code ; - event.value = value; - ret = write(mKeyEventFd_IR, &event, sizeof(event)); - if (ret < (int)sizeof(event)) { - LOGD("sendIRkeyEvent :write event failed, %s\n", strerror(errno)); - return; - } -} - -void CTvInput::sendkeyCode(const int &code) -{ - sendkeyEvent(EV_KEY , code, SEND_KEY_ACTION_DOWN); //down - sendkeyEvent(EV_SYN, 0, 0); //clear - sendkeyEvent(EV_KEY , code, SEND_KEY_ACTION_UP); //up - sendkeyEvent(EV_SYN, 0, 0); //clear -} - -void CTvInput::sendkeyCode_Up(const int &code) -{ - sendkeyEvent(EV_KEY , code, SEND_KEY_ACTION_UP); //up - sendkeyEvent(EV_SYN, 0, 0); //clear -} - -void CTvInput::sendkeyCode_Down(const int &code) -{ - sendkeyEvent(EV_KEY , code, SEND_KEY_ACTION_DOWN); //down - sendkeyEvent(EV_SYN, 0, 0); //clear -} - -void CTvInput::sendIRkeyCode(const int &code) -{ - sendIRkeyEvent(EV_KEY , code, SEND_KEY_ACTION_DOWN); //down - sendIRkeyEvent(EV_SYN, 0, 0); //clear - sendIRkeyEvent(EV_KEY , code, SEND_KEY_ACTION_UP); //up - sendIRkeyEvent(EV_SYN, 0, 0); //clear -} - -void CTvInput::sendIRkeyCode_Up(const int &code) -{ - sendIRkeyEvent(EV_KEY , code, SEND_KEY_ACTION_UP); //up - sendIRkeyEvent(EV_SYN, 0, 0); //clear -} - -void CTvInput::sendIRkeyCode_Down(const int &code) -{ - sendIRkeyEvent(EV_KEY , code, SEND_KEY_ACTION_DOWN); //down - sendIRkeyEvent(EV_SYN, 0, 0); //clear -} - -nsecs_t CTvInput::getNowMs() -{ - return systemTime(SYSTEM_TIME_MONOTONIC) / 1000000; -} - -void CTvInput::sendKeyRepeatStart(const int &code, int disTime, int repeatDisTime) -{ - CMutex::Autolock _l(mLock); - mTimeoutCount = 0; - mRepeatKeyCode = code; - mRepeatKeydisTime = disTime; - mWhenTimeRepeatKeyStartToSend = disTime + getNowMs(); - mRepeatKeyRepeateDisTime = repeatDisTime; - LOGD("sendKeyRepeatStart when = %lld", mWhenTimeRepeatKeyStartToSend); - mSendKeyCondition.signal(); -} - -void CTvInput::sendKeyRepeatStop() -{ - CMutex::Autolock _l(mLock); - mRepeatKeyCode = -1; - mRepeatKeydisTime = -1; -} - -bool CTvInput::threadLoop() -{ - int sleeptime = 100;//ms - - while (!exitPending()) { //requietexit() or requietexitWait() not call - LOGD("threadLoop0 when = %lld", mWhenTimeRepeatKeyStartToSend); - while (mRepeatKeyCode < 0 || mRepeatKeydisTime < 0) { //msg queue is empty - mLock.lock(); - mSendKeyCondition.wait(mLock);//first unlock,when return,lock again,so need,call unlock - mLock.unlock(); - } - LOGD("threadLoop1 when = %lld", mWhenTimeRepeatKeyStartToSend); - int disToSend = -1; - do { - disToSend = mWhenTimeRepeatKeyStartToSend - getNowMs(); - LOGD("dis when = %d", disToSend); - if (disToSend <= 0) break; - - mLock.lock(); - mSendKeyCondition.waitRelative(mLock, disToSend);//first unlock,when return,lock again,so need,call unlock - mLock.unlock(); - } while (disToSend > 0); // - LOGD("threadLoop2 when = %lld ", mWhenTimeRepeatKeyStartToSend); - if (mTimeoutCount < 30) { - LOGD("mTimeoutCount = %d \n", mTimeoutCount); - - mTimeoutCount++; - if (mRepeatKeyCode == 955) { - sendkeyCode_Down(mRepeatKeyCode); - } else { - sendkeyCode(mRepeatKeyCode); - } - } else { - LOGD("mTimeoutCount = %d,so stop sending long press msg.\n", mTimeoutCount); - } - usleep(mRepeatKeyRepeateDisTime * 1000); - } - //exit - //return true, run again, return false,not run. - return false; -}
\ No newline at end of file diff --git a/tvapi/libtv/tvutils/CTvInput.h b/tvapi/libtv/tvutils/CTvInput.h deleted file mode 100644 index 92c981c..0000000 --- a/tvapi/libtv/tvutils/CTvInput.h +++ b/dev/null @@ -1,42 +0,0 @@ -#ifndef _TV_INPUT_H -#define _TV_INPUT_H -#include <linux/input.h> -# -#include "CThread.h" -static const char *KEY_EVENT_0 = "/dev/input/event0"; -#ifdef ADC_USE_KEY_EVENT0 -static const char *KEY_EVENT_1 = "/dev/input/event0"; -#else -static const char *KEY_EVENT_1 = "/dev/input/event1"; -#endif -static const char *KEY_EVENT_2 = "/dev/input/event2"; -class CTvInput: public CThread { -public: - CTvInput(); - ~CTvInput(); - void sendkeyEvent(const int &type, const int &code, const int &value); - void sendIRkeyEvent(const int &type, const int &code, const int &value); - void sendkeyCode(const int &code); - void sendkeyCode_Up(const int &code); - void sendkeyCode_Down(const int &code); - void sendIRkeyCode(const int &code); - void sendIRkeyCode_Up(const int &code); - void sendIRkeyCode_Down(const int &code); - void sendKeyRepeatStart(const int &code, int disTime, int repeatDisTime);//ms - void sendKeyRepeatStop(); - nsecs_t getNowMs(); - -private: - bool threadLoop(); - - int mKeyEventFd; - int mKeyEventFd_IR; - CCondition mSendKeyCondition; - CMutex mLock; - int mRepeatKeyCode; - int mRepeatKeydisTime; - int mRepeatKeyRepeateDisTime; - int mTimeoutCount; - nsecs_t mWhenTimeRepeatKeyStartToSend; -}; -#endif diff --git a/tvapi/libtv/tvutils/serial_base.cpp b/tvapi/libtv/tvutils/serial_base.cpp deleted file mode 100644 index be9ae17..0000000 --- a/tvapi/libtv/tvutils/serial_base.cpp +++ b/dev/null @@ -1,466 +0,0 @@ -#define LOG_TAG "serial_base" - -#include <stdio.h> -#include <unistd.h> -#include <stdlib.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <fcntl.h> -#include <string.h> -#include <pthread.h> -#include <termios.h> -#include <errno.h> - -#include <android/log.h> -#include <cutils/log.h> - -#include "serial_base.h" -#include "CTvLog.h" - -#define CS_SERIAL_A_DEV_PATH "/dev/ttyS0" -#define CS_SERIAL_B_DEV_PATH "/dev/ttyS1" - -static int gSerialAHandle = -1; -static pthread_mutex_t serial_a_op_mutex = PTHREAD_MUTEX_INITIALIZER; -static pthread_mutex_t serial_a_r_mutex = PTHREAD_MUTEX_INITIALIZER; -static pthread_mutex_t serial_a_w_mutex = PTHREAD_MUTEX_INITIALIZER; -static pthread_mutex_t serial_a_speed_mutex = PTHREAD_MUTEX_INITIALIZER; -static pthread_mutex_t serial_a_parity_mutex = PTHREAD_MUTEX_INITIALIZER; - -static int gSerialBHandle = -1; -static pthread_mutex_t serial_b_op_mutex = PTHREAD_MUTEX_INITIALIZER; -static pthread_mutex_t serial_b_r_mutex = PTHREAD_MUTEX_INITIALIZER; -static pthread_mutex_t serial_b_w_mutex = PTHREAD_MUTEX_INITIALIZER; -static pthread_mutex_t serial_b_speed_mutex = PTHREAD_MUTEX_INITIALIZER; -static pthread_mutex_t serial_b_parity_mutex = PTHREAD_MUTEX_INITIALIZER; - -static int speed_arr[] = { B115200, B38400, B19200, B9600, B4800, B2400, B1200, B300, B38400, B19200, B9600, B4800, B2400, B1200, B300, }; -static int name_arr[] = { 115200, 38400, 19200, 9600, 4800, 2400, 1200, 300, 38400, 19200, 9600, 4800, 2400, 1200, 300, }; - -static int open_com_dev(int *dev_handle, char *dev_path) -{ - if (*dev_handle < 0) { - *dev_handle = open(dev_path, O_RDWR); - if (*dev_handle < 0) { - LOGE("%s, Can't Open Serial Port %s", "TV", dev_path); - } - } - - return *dev_handle; -} - -static int close_com_dev(int *dev_handle) -{ - if (*dev_handle >= 0) { - close(*dev_handle); - *dev_handle = -1; - } - - return 0; -} - -static __inline__ int cfsetdatabits(struct termios *s, int db) -{ - if (db == 5) { - s->c_cflag = (s->c_cflag & ~CSIZE) | (CS5 & CSIZE); - } else if (db == 6) { - s->c_cflag = (s->c_cflag & ~CSIZE) | (CS6 & CSIZE); - } else if (db == 7) { - s->c_cflag = (s->c_cflag & ~CSIZE) | (CS7 & CSIZE); - } else if (db == 8) { - s->c_cflag = (s->c_cflag & ~CSIZE) | (CS8 & CSIZE); - } else { - LOGE("%s, Unsupported data size!\n", "TV"); - } - - return 0; -} - -static __inline__ int cfsetstopbits(struct termios *s, int sb) -{ - if (sb == 1) { - s->c_cflag &= ~CSTOPB; - } else if (sb == 2) { - s->c_cflag |= CSTOPB; - } else { - LOGE("%s, Unsupported stop bits!\n", "TV"); - } - - return 0; -} - -static __inline__ int cfsetparity(struct termios *s, int pb) -{ - if (pb == 'n' || pb == 'N') { - s->c_cflag &= ~PARENB; /* Clear parity enable */ - s->c_cflag &= ~INPCK; /* Enable parity checking */ - } else if (pb == 'o' || pb == 'O') { - s->c_cflag |= (PARODD | PARENB); - s->c_cflag |= INPCK; /* Disable parity checking */ - } else if (pb == 'e' || pb == 'E') { - s->c_cflag |= PARENB; /* Enable parity */ - s->c_cflag &= ~PARODD; - s->c_iflag |= INPCK; /* Disable parity checking */ - } else if (pb == 's' || pb == 'S') { - s->c_cflag &= ~PARENB; - s->c_cflag &= ~CSTOPB; - s->c_cflag |= INPCK; /* Disable parity checking */ - } else { - LOGE("%s, Unsupported parity!\n", "TV"); - } - - return 0; -} - -static int gOriAttrGetFlag = 0; -static struct termios gOriAttrValue; -static __inline__ int com_get_attr(int fd, struct termios *s) -{ - if (gOriAttrGetFlag == 0) { - if (tcgetattr(fd, s) != 0) { - return -1; - } - - gOriAttrGetFlag = 1; - gOriAttrValue = *s; - } - - *s = gOriAttrValue; - - return 0; -} - -static int com_set_opt(int hComm, int speed, int db, int sb, int pb, int to, int raw_mode) -{ - int i = 0; - struct termios tmpOpt; - - if (com_get_attr(hComm, &tmpOpt) != 0) { - LOGE("%s, get serial attr error(%s)!\n", "TV", strerror(errno)); - return -1; - } - - for (i = 0; i < (int)(sizeof(speed_arr) / sizeof(int)); i++) { - if (speed == name_arr[i]) { - cfsetispeed(&tmpOpt, speed_arr[i]); - cfsetospeed(&tmpOpt, speed_arr[i]); - break; - } - } - - cfsetdatabits(&tmpOpt, db); - cfsetstopbits(&tmpOpt, sb); - cfsetparity(&tmpOpt, pb); - - if (to >= 0) { - tmpOpt.c_cc[VTIME] = to; /* 设置超时15 seconds*/ - tmpOpt.c_cc[VMIN] = 0; /* Update the options and do it NOW */ - } - - if (raw_mode == 1) { - cfmakeraw(&tmpOpt); - } - - tcflush(hComm, TCIOFLUSH); - if (tcsetattr(hComm, TCSANOW, &tmpOpt) < 0) { - LOGE("%s, set serial attr error(%s)!\n", "TV", strerror(errno)); - return -1; - } - tcflush(hComm, TCIOFLUSH); - - return 0; -} - -static int com_write_data(int hComm, const unsigned char *pData, unsigned int uLen) -{ - unsigned int len; - - if (hComm < 0) { - return -1; - } - - if (pData == NULL) { - return -1; - } - - LOGD("%s, write %d bytes\n", "TV", uLen); - - len = write(hComm, pData, uLen); - if (len == uLen) { - LOGD("%s, write data success\n", "TV"); - return len; - } else { - tcflush(hComm, TCOFLUSH); - LOGE("%s, write data failed and tcflush hComm\n", "TV"); - return -1; - } -} - -static int com_read_data(int hComm, char *pData, unsigned int uLen) -{ - char inbuff[uLen]; - char buff[uLen]; - char tempbuff[uLen]; - int i = 0, j = 0; - - memset(inbuff, '\0', uLen); - memset(buff, '\0', uLen); - memset(tempbuff, '\0', uLen); - - if (hComm < 0) { - return -1; - } - - char *p = inbuff; - - fd_set readset; - struct timeval tv; - int MaxFd = 0; - - unsigned int c = 0; - int z, k; - - do { - FD_ZERO(&readset); - FD_SET(hComm, &readset); - MaxFd = hComm + 1; - tv.tv_sec = 0; - tv.tv_usec = 100000; - do { - z = select(MaxFd, &readset, 0, 0, &tv); - } while (z == -1 && errno == EINTR); - - if (z == -1) { - hComm = -1; - break; - } - - if (z == 0) { - hComm = -1; - break; - } - - if (FD_ISSET(hComm, &readset)) { - z = read(hComm, buff, uLen - c); -#if 0 - for (k = 0; k < z; k++) { - LOGD("%s, inbuff[%d]:%02X", "TV", k, buff[k]); - } -#endif - c += z; - - if (z > 0) { - if (z < (signed int) uLen) { - buff[z + 1] = '\0'; - memcpy(p, buff, z); - p += z; - } else { - memcpy(inbuff, buff, z); - } - - memset(buff, '\0', uLen); - } else { - hComm = -1; - } - - if (c >= uLen) { - hComm = -1; - break; - } - } - } while (hComm >= 0); - - memcpy(pData, inbuff, c); - p = NULL; - return c; -} - -int com_a_open_dev() -{ - int tmp_ret = 0; - - pthread_mutex_lock(&serial_a_op_mutex); - - tmp_ret = open_com_dev(&gSerialAHandle, (char *)CS_SERIAL_A_DEV_PATH); - - pthread_mutex_unlock(&serial_a_op_mutex); - - return tmp_ret; -} - -int com_b_open_dev() -{ - int tmp_ret = 0; - - pthread_mutex_lock(&serial_b_op_mutex); - - tmp_ret = open_com_dev(&gSerialBHandle, (char *)CS_SERIAL_B_DEV_PATH); - - pthread_mutex_unlock(&serial_b_op_mutex); - - return tmp_ret; -} - -int com_a_close_dev() -{ - int tmp_ret = 0; - - pthread_mutex_lock(&serial_a_op_mutex); - - tmp_ret = close_com_dev(&gSerialAHandle); - - pthread_mutex_unlock(&serial_a_op_mutex); - - return tmp_ret; -} - -int com_b_close_dev() -{ - int tmp_ret = 0; - - pthread_mutex_lock(&serial_b_op_mutex); - - tmp_ret = close_com_dev(&gSerialBHandle); - - pthread_mutex_unlock(&serial_b_op_mutex); - - return tmp_ret; -} - -int com_a_get_dev() -{ - int tmp_ret = 0; - - pthread_mutex_lock(&serial_a_op_mutex); - - tmp_ret = gSerialAHandle; - - pthread_mutex_unlock(&serial_a_op_mutex); - - return tmp_ret; -} - -int com_b_get_dev() -{ - int tmp_ret = 0; - - pthread_mutex_lock(&serial_b_op_mutex); - - tmp_ret = gSerialBHandle; - - pthread_mutex_unlock(&serial_b_op_mutex); - - return tmp_ret; -} - -int com_a_set_opt(int speed, int db, int sb, int pb, int to, int raw_mode) -{ - int tmp_ret = 0; - - pthread_mutex_lock(&serial_a_parity_mutex); - - if (com_a_get_dev() < 0) { - pthread_mutex_unlock(&serial_a_parity_mutex); - return -1; - } - - tmp_ret = com_set_opt(gSerialAHandle, speed, db, sb, pb, to, raw_mode); - - pthread_mutex_unlock(&serial_a_parity_mutex); - - return tmp_ret; -} - -int com_b_set_opt(int speed, int db, int sb, int pb, int to, int raw_mode) -{ - int tmp_ret = 0; - - pthread_mutex_lock(&serial_b_parity_mutex); - - if (com_b_get_dev() < 0) { - pthread_mutex_unlock(&serial_b_parity_mutex); - return -1; - } - - tmp_ret = com_set_opt(gSerialBHandle, speed, db, sb, pb, to, raw_mode); - - pthread_mutex_unlock(&serial_b_parity_mutex); - - return tmp_ret; -} - -int com_a_write_data(const unsigned char *pData, unsigned int uLen) -{ - int tmp_ret = 0; - - pthread_mutex_lock(&serial_a_w_mutex); - - if (com_a_get_dev() < 0) { - pthread_mutex_unlock(&serial_a_w_mutex); - return -1; - } - - LOGD("%s, write %d bytes\n", "TV", uLen); - - tmp_ret = com_write_data(gSerialAHandle, pData, uLen); - - pthread_mutex_unlock(&serial_a_w_mutex); - - return tmp_ret; -} - -int com_b_write_data(const unsigned char *pData, unsigned int uLen) -{ - int tmp_ret = 0; - - pthread_mutex_lock(&serial_b_w_mutex); - - if (com_b_get_dev() < 0) { - pthread_mutex_unlock(&serial_b_w_mutex); - return -1; - } - - LOGD("%s, write %d bytes\n", "TV", uLen); - - tmp_ret = com_write_data(gSerialBHandle, pData, uLen); - - pthread_mutex_unlock(&serial_b_w_mutex); - - return tmp_ret; -} - -int com_a_read_data(char *pData, unsigned int uLen) -{ - int tmp_ret = 0; - - pthread_mutex_lock(&serial_a_r_mutex); - - if (com_a_get_dev() < 0) { - pthread_mutex_unlock(&serial_a_r_mutex); - return -1; - } - - tmp_ret = com_read_data(gSerialAHandle, pData, uLen); - - pthread_mutex_unlock(&serial_a_r_mutex); - - return tmp_ret; -} - -int com_b_read_data(char *pData, unsigned int uLen) -{ - int tmp_ret = 0; - - pthread_mutex_lock(&serial_b_r_mutex); - - if (com_b_get_dev() < 0) { - pthread_mutex_unlock(&serial_b_r_mutex); - return -1; - } - - tmp_ret = com_read_data(gSerialBHandle, pData, uLen); - - pthread_mutex_unlock(&serial_b_r_mutex); - - return tmp_ret; -} diff --git a/tvapi/libtv/tvutils/serial_base.h b/tvapi/libtv/tvutils/serial_base.h deleted file mode 100644 index 145ca5a..0000000 --- a/tvapi/libtv/tvutils/serial_base.h +++ b/dev/null @@ -1,17 +0,0 @@ -#ifndef __SERIAL_BASE_H__ -#define __SERIAL_BASE_H__ - -extern int com_a_open_dev(); -extern int com_b_open_dev(); -extern int com_a_close_dev(); -extern int com_b_close_dev(); -extern int com_a_get_dev(); -extern int com_b_get_dev(); -extern int com_a_set_opt(int speed, int db, int sb, int pb, int timeout, int raw_mode); -extern int com_b_set_opt(int speed, int db, int sb, int pb, int timeout, int raw_mode); -extern int com_a_write_data(const unsigned char *pData, unsigned int uLen); -extern int com_b_write_data(const unsigned char *pData, unsigned int uLen); -extern int com_a_read_data(char *pData, unsigned int uLen); -extern int com_b_read_data(char *pData, unsigned int uLen); - -#endif//__SERIAL_BASE_H__ diff --git a/tvapi/libtv/tvutils/serial_operate.cpp b/tvapi/libtv/tvutils/serial_operate.cpp deleted file mode 100644 index ddd1c01..0000000 --- a/tvapi/libtv/tvutils/serial_operate.cpp +++ b/dev/null @@ -1,225 +0,0 @@ -#define LOG_TAG "serial_operate" - -#include <stdio.h> -#include <unistd.h> -#include <stdlib.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <fcntl.h> -#include <string.h> -#include <pthread.h> -#include <termios.h> -#include <errno.h> -#include <linux/hidraw.h> -#include <android/log.h> -#include <cutils/log.h> - -//#include "../TvService.h" -//#include "../include/tvcmd.h" -//#include "../tvconfig/tvconfig_api.h" -//#include "../tvconfig/tvconfig_logcfg.h" - -#include "serial_base.h" -#include "serial_operate.h" -#include "CTvLog.h" - -//****************************************************** -#ifndef HIDIOCSFEATURE -#define HIDIOCSFEATURE(len) _IOC(_IOC_WRITE|_IOC_READ, 'H', 0x06, len) -#define HIDIOCGFEATURE(len) _IOC(_IOC_WRITE|_IOC_READ, 'H', 0x07, len) -#endif -#define product_nid 0x00e0 -//#define product_nid 0x00e0 - -#define vendor_id 0x1A1D -#define ENDPOINT 3 - -#define EVENT_2_4G_HEADSET_ON 0 -#define EVENT_2_4G_HEADSET_OFF 1 - -CTv2d4GHeadSetDetect::CTv2d4GHeadSetDetect() -{ -} - -CTv2d4GHeadSetDetect::~CTv2d4GHeadSetDetect() -{ -} - -int CTv2d4GHeadSetDetect::startDetect() -{ - this->run(); - - return 0; -} - -bool CTv2d4GHeadSetDetect::threadLoop() -{ - int i = 0, rd_len = 0; - int thread_cmd_dly_tm = 1000 * 1000; - int tvThermal_cnt = 0, fd = 0; - char data[10] = "0"; - - LOGD("%s, entering...\n", __FUNCTION__); - - //SetSerialBThreadExecFlag(1); - - //********************************* - int hidraw_fd; - unsigned char buf[32]; - char phybuf[256]; - struct hidraw_devinfo info; - int read_size = 0; - bool debug = true; - char device[68]; - int HeadsetConnectState = false; - - int curdeviceID = -1; - for (int deviceID = 0; deviceID < 5; deviceID++) { - sprintf(device, "/dev/hidraw%d", deviceID); - LOGD(" thread device =%s ", device ); - if ((hidraw_fd = open(device, O_RDWR)) < 0 ) { - LOGD("cann't open path:%s!!!\n", device); - continue; - } - memset(phybuf, 0x0, 256); - LOGD("AAAAAAAAAAAAAA:%s!!!\n", device); - if (ioctl(hidraw_fd, HIDIOCGRAWINFO, &info) >= 0 && - ioctl(hidraw_fd, HIDIOCGRAWPHYS(256), phybuf) >= 0) { - LOGD("\t %d, product id = 0x%04x \n", __LINE__, info.product); - LOGD("\t %d, vendor id = 0x%04x \n", __LINE__, info.vendor); - int len = strlen(phybuf); - if (phybuf[len - 1] - '0' == ENDPOINT) { - if (info.vendor == vendor_id) { - curdeviceID = deviceID; - LOGD("\t product id = 0x%04x \n", info.product); - LOGD("\t vendor id = 0x%04x\n", info.vendor); - break; - } - } - } - close(hidraw_fd); - } - if (curdeviceID == -1) - return 0; - - sprintf(device, "/dev/hidraw%d", curdeviceID); - LOGD(" thread device =%s ", device ); - if ( (hidraw_fd = open(device, O_RDWR | O_NONBLOCK) ) < 0 ) { - printf("cann't open path:%s!!!\n", device); - return 0; - } - int checkvalue[300] ; - int countcheck = 0; - int count = 0; - int ritemcounts = 15; - //**************************************** - - while ( !exitPending() ) { //requietexit() or requietexitWait() not call - //loop codes - //LOGD("while 2.4G %s ", __FUNCTION__); - - memset(buf, 0x0, 32); - for (int ritem = 0; ritem < ritemcounts ; ritem++ ) { - read_size = read(hidraw_fd, buf, 32); - //for (int i = 0; i < 32; i++) - //ALOGD("read_size %d ", read_size); - if (debug) { - count ++; - if (count == 3000) { - LOGD("%02x %02x %02x %02x %02x %02x ", buf[0], buf[1], buf[2], buf[3], buf[4], buf[5]); - count = 0; - } - } - if (read_size < 0 ) { - - } - - checkvalue[countcheck] = buf[4] & 0x1f; - if (countcheck == 299) { - int checkcountvalue = 0; - for (int icheck = 0; icheck < countcheck ; icheck++ ) - checkcountvalue += checkvalue[icheck]; - // LOGD("checkcountvalue = %d",checkcountvalue); - if (checkcountvalue <= 5 * 4) { - if (HeadsetConnectState == true) { - if (debug) { - LOGD("headset connect false"); - LOGD("headset connect false"); - } - - mpObserver->onHeadSetDetect(0, 0); - //usleep(1000 * 200); - } - HeadsetConnectState = false; - } else if (checkcountvalue >= 200 * 4) { - if (HeadsetConnectState == false) { - if (debug) { - LOGD("headset connect true"); - LOGD("headset connect true"); - } - mpObserver->onHeadSetDetect(1, 0); - //usleep(1000 * 200); - } - HeadsetConnectState = true; - } - countcheck = 0; - } - countcheck ++; - - // bit 0: headset mic in/off; bit 1:headset on/off; bit 2: headphone on/off; bit 3: soundbar on/off ;bit 4: subwoofer on/off - /* else if (buf[4] & 0x1f) - { - if (HeadsetConnectState == false) - { - if (debug) - { - ALOGD("headset connect true"); - ALOGD("headset connect true"); - } - android::TvService::getIntance()->SendDtvStats(1,0,0,0,0,0); - //usleep(1000 * 200); - } - HeadsetConnectState = true; - } - else - { - if (HeadsetConnectState == true) - { - if (debug) - { - ALOGD("headset connect false"); - ALOGD("headset connect false"); - } - android::TvService::getIntance()->SendDtvStats(2,0,0,0,0,0); - //usleep(1000 * 200); - } - HeadsetConnectState = false; - }*/ - } - { - //added for fbc thermal setting - tvThermal_cnt++; - if (tvThermal_cnt == 300) { //60 sec - tvThermal_cnt = 0; - fd = open("/sys/class/thermal/thermal_zone0/temp", O_RDONLY); - if (fd < 0) { - LOGE("ERROR: failed to open file error: %d\n", errno); - } else { - read(fd, data, sizeof(data)); - close(fd); - LOGD("thermal temp data = %s ~~~~~~\n", data); - int x = 0; - x = atoi(data); - mpObserver->onThermalDetect(x); - LOGD("int data :%d\n", x); - } - } - } - usleep(1000 * 200); - } - //exit - //return true, run again, return false,not run. - return false; -} - - diff --git a/tvapi/libtv/tvutils/serial_operate.h b/tvapi/libtv/tvutils/serial_operate.h deleted file mode 100644 index c1262aa..0000000 --- a/tvapi/libtv/tvutils/serial_operate.h +++ b/dev/null @@ -1,33 +0,0 @@ -#ifndef __SERIAL_OPERATE_H__ -#define __SERIAL_OPERATE_H__ -#include "tvutils/CThread.h" - -class CTv2d4GHeadSetDetect: public CThread { - -public: - CTv2d4GHeadSetDetect(); - ~CTv2d4GHeadSetDetect(); - - int startDetect(); - - class IHeadSetObserver { - public: - IHeadSetObserver() {}; - virtual ~IHeadSetObserver() {}; - virtual void onHeadSetDetect(int state __unused, int para __unused) { - }; - virtual void onThermalDetect(int state __unused) { - }; - }; - - void setObserver ( IHeadSetObserver *pOb ) { - mpObserver = pOb; - }; - -private: - bool threadLoop(); - IHeadSetObserver *mpObserver; - -}; - -#endif//__SERIAL_OPERATE_H__ diff --git a/tvapi/libtv/tvutils/tvutils.cpp b/tvapi/libtv/tvutils/tvutils.cpp deleted file mode 100644 index c281b65..0000000 --- a/tvapi/libtv/tvutils/tvutils.cpp +++ b/dev/null @@ -1,2025 +0,0 @@ -#define LOG_TAG "TVutils" - -#include <unistd.h> -#include <stdio.h> -#include <string.h> -#include <errno.h> -#include <unistd.h> -#include <sys/ioctl.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <sys/socket.h> -#include <sys/un.h> -#include <fcntl.h> -#include <ctype.h> -#include <sys/prctl.h> -#include <stdlib.h> -#include <android/log.h> -#include <cutils/android_reboot.h> -#include "../tvconfig/tvconfig.h" -#include "../tvsetting/CTvSetting.h" -#include <cutils/properties.h> -#include <dirent.h> -using namespace android; - -#include "tvutils.h" -#include "CTvLog.h" - -#define CS_I2C_1_DEV_PATH "/dev/i2c-1" -#define CS_I2C_2_DEV_PATH "/dev/i2c-2" - -/* number of times a device address should be polled when not acknowledging */ -#define I2C_RETRIES 0x0701 - -/* set timeout in units of 10 ms */ -#define I2C_TIMEOUT 0x0702 - -/* NOTE: Slave address is 7 or 10 bits, but 10-bit addresses - * are NOT supported! (due to code brokenness) - */ - -/* Use this slave address */ -#define I2C_SLAVE 0x0703 - -/* Use this slave address, even if it is already in use by a driver! */ -#define I2C_SLAVE_FORCE 0x0706 - -#define I2C_TENBIT 0x0704 /* 0 for 7 bit addrs, != 0 for 10 bit */ -#define I2C_FUNCS 0x0705 /* Get the adapter functionality mask */ -#define I2C_RDWR 0x0707 /* Combined R/W transfer (one STOP only) */ -#define I2C_PEC 0x0708 /* != 0 to use PEC with SMBus */ -#define I2C_SMBUS 0x0720 /* SMBus transfer */ - -struct i2c_msg { - unsigned short addr; /* slave address */ - unsigned short flags; -#define I2C_M_TEN 0x0010 /* this is a ten bit chip address */ -#define I2C_M_WR 0x0000 /* write data, from master to slave */ -#define I2C_M_RD 0x0001 /* read data, from slave to master */ -#define I2C_M_NOSTART 0x4000 /* if I2C_FUNC_PROTOCOL_MANGLING */ -#define I2C_M_REV_DIR_ADDR 0x2000 /* if I2C_FUNC_PROTOCOL_MANGLING */ -#define I2C_M_IGNORE_NAK 0x1000 /* if I2C_FUNC_PROTOCOL_MANGLING */ -#define I2C_M_NO_RD_ACK 0x0800 /* if I2C_FUNC_PROTOCOL_MANGLING */ -#define I2C_M_RECV_LEN 0x0400 /* length will be first received byte */ - - unsigned short len; /* msg length */ - unsigned char *buf; /* pointer to msg data */ -}; - -struct i2c_rdwr_ioctl_data { - struct i2c_msg *msgs; - unsigned int nmsgs; -}; - -static volatile int mDreamPanelResumeLastBLFlag = 0; -static volatile int mDreamPanelDemoFlag = 0; - -static pthread_mutex_t dream_panel_resume_last_bl_flag_mutex = PTHREAD_MUTEX_INITIALIZER; -static pthread_mutex_t dream_panel_demo_flag_mutex = PTHREAD_MUTEX_INITIALIZER; -static pthread_mutex_t file_attr_control_flag_mutex = PTHREAD_MUTEX_INITIALIZER; - -static pthread_t UserPet_ThreadId = 0; -static unsigned char is_turnon_user_pet_thread = false; -static unsigned char is_user_pet_thread_start = false; -static unsigned int user_counter = 0; -static unsigned int user_pet_terminal = 1; - -static int iw_duty = 0; - -static int Miscioctl(const char *file_path, int request, ...) -{ - int fd = -1, tmp_ret = -1; - int bus_status = 0; - va_list ap; - void *arg; - - if (file_path == NULL) { - LOGE("%s, file path is NULL!!!\n", CFG_SECTION_TV); - return -1; - } - - fd = open(file_path, O_RDWR); - if (fd < 0) { - LOGE("%s, Open %s ERROR(%s)!!\n", CFG_SECTION_TV, file_path, strerror(errno)); - return -1; - } - - va_start(ap, request); - arg = va_arg(ap, void *); - va_end(ap); - - tmp_ret = ioctl(fd, request, arg); - - close(fd); - fd = -1; - - return tmp_ret; -} - -int cfg_get_one_item(const char *key_str, const char *strDelimit, int item_index, char cfg_str[]) -{ - int cfg_item_ind = 0; - char *token = NULL; - const char *config_value; - char data_str[CC_CFG_VALUE_STR_MAX_LEN] = { 0 }; - - if (key_str == NULL) { - LOGE("%s, key_str's pointer is NULL.\n", CFG_SECTION_TV); - return -1; - } - - if (cfg_str == NULL) { - LOGE("%s, cfg_str's pointer is NULL.\n", CFG_SECTION_TV); - return -1; - } - - if (item_index < 0) { - LOGE("%s, item_index can't be less than 0.\n", CFG_SECTION_TV); - return -1; - } - - config_value = config_get_str(CFG_SECTION_TV, key_str, "null"); - if (strcasecmp(config_value, "null") == 0) { - cfg_str[0] = '\0'; - LOGE("%s, can't get config \"%s\"!!!\n", CFG_SECTION_TV, key_str); - return -1; - } - - cfg_item_ind = 0; - - memset((void *)data_str, 0, sizeof(data_str)); - strncpy(data_str, config_value, sizeof(data_str) - 1); - - token = strtok(data_str, strDelimit); - while (token != NULL) { - if (cfg_item_ind == item_index) { - strcpy(cfg_str, token); - break; - } - - token = strtok(NULL, strDelimit); - cfg_item_ind += 1; - } - - if (token == NULL) { - cfg_str[0] = '\0'; - return -1; - } - - return 0; -} - -int cfg_split(char *line_data, char *strDelimit, int *item_cnt, char **item_bufs) -{ - int i = 0, tmp_cnt = 0; - char *token = NULL; - - if (line_data == NULL) { - LOGE("%s, line_data is NULL", CFG_SECTION_TV); - return -1; - } - - if (strDelimit == NULL) { - LOGE("%s, strDelimit is NULL", CFG_SECTION_TV); - return -1; - } - - if (item_cnt == NULL) { - LOGE("%s, item_cnt is NULL", CFG_SECTION_TV); - return -1; - } - - if (item_bufs == NULL) { - LOGE("%s, item_bufs is NULL", CFG_SECTION_TV); - return -1; - } - - for (i = 0; i < *item_cnt; i++) { - item_bufs[i] = NULL; - } - - token = strtok(line_data, strDelimit); - - while (token != NULL) { - item_bufs[tmp_cnt] = token; - - token = strtok(NULL, strDelimit); - - tmp_cnt += 1; - if (tmp_cnt >= *item_cnt) { - break; - } - } - - *item_cnt = tmp_cnt; - - return 0; -} - -int ReadADCSpecialChannelValue(int adc_channel_num) -{ - FILE *fp = NULL; - int rd_data = 0; - char ch_sysfs_path[256] = { 0 }; - - if (adc_channel_num < CC_MIN_ADC_CHANNEL_VAL || adc_channel_num > CC_MAX_ADC_CHANNEL_VAL) { - LOGD("adc channel num must between %d and %d.", CC_MIN_ADC_CHANNEL_VAL, CC_MAX_ADC_CHANNEL_VAL); - return 0; - } - - sprintf(ch_sysfs_path, "/sys/class/saradc/saradc_ch%d", adc_channel_num); - - fp = fopen(ch_sysfs_path, "r"); - - if (fp == NULL) { - LOGE("open %s ERROR(%s)!!\n", ch_sysfs_path, strerror(errno)); - return 0; - } - - fscanf(fp, "%d", &rd_data); - - fclose(fp); - - return rd_data; -} - -int Tv_MiscRegs(const char *cmd) -{ - //#ifdef BRING_UP_DEBUG - FILE *fp = NULL; - fp = fopen("/sys/class/register/reg", "w"); - - if (fp != NULL && cmd != NULL) { - fprintf(fp, "%s", cmd); - } else { - LOGE("Open /sys/class/register/reg ERROR(%s)!!\n", strerror(errno)); - fclose(fp); - return -1; - } - fclose(fp); - //#endif - - return 0; -} - -int TvMisc_SetLVDSSSC(int val) -{ - FILE *fp; - - fp = fopen("/sys/class/lcd/ss", "w"); - - if (fp != NULL) { - fprintf(fp, "%d", val); - fclose(fp); - } else { - LOGE("open /sys/class/lcd/ss ERROR(%s)!!\n", strerror(errno)); - return -1; - } - return 0; -} - -int TvMisc_SetUserCounterTimeOut(int timeout) -{ - FILE *fp; - - fp = fopen("/sys/devices/platform/aml_wdt/user_pet_timeout", "w"); - - if (fp != NULL) { - fprintf(fp, "%d", timeout); - fclose(fp); - } else { - LOGE("=OSD CPP=> open /sys/devices/platform/aml_wdt/user_pet_timeout ERROR(%s)!!\n", strerror(errno)); - return -1; - } - return 0; -} - -int TvMisc_SetUserCounter(int count) -{ - FILE *fp; - - fp = fopen("/sys/module/aml_wdt/parameters/user_pet", "w"); - - if (fp != NULL) { - fprintf(fp, "%d", count); - fclose(fp); - } else { - LOGE("=OSD CPP=> open /sys/devices/platform/aml_wdt/user_pet ERROR(%s)!!\n", strerror(errno)); - return -1; - } - - fclose(fp); - - return 0; -} - -int TvMisc_SetUserPetResetEnable(int enable) -{ - FILE *fp; - - fp = fopen("/sys/module/aml_wdt/parameters/user_pet_reset_enable", "w"); - - if (fp != NULL) { - fprintf(fp, "%d", enable); - fclose(fp); - } else { - LOGE("=OSD CPP=> open /sys/devices/platform/aml_wdt/user_pet_reset_enable ERROR(%s)!!\n", strerror(errno)); - return -1; - } - - fclose(fp); - - return 0; -} - -int TvMisc_SetSystemPetResetEnable(int enable) -{ - FILE *fp; - - fp = fopen("/sys/devices/platform/aml_wdt/reset_enable", "w"); - - if (fp != NULL) { - fprintf(fp, "%d", enable); - fclose(fp); - } else { - LOGE("=OSD CPP=> open /sys/devices/platform/aml_wdt/reset_enable ERROR(%s)!!\n", strerror(errno)); - return -1; - } - - fclose(fp); - - return 0; -} - -int TvMisc_SetSystemPetEnable(int enable) -{ - FILE *fp; - - fp = fopen("/sys/devices/platform/aml_wdt/ping_enable", "w"); - - if (fp != NULL) { - fprintf(fp, "%d", enable); - fclose(fp); - } else { - LOGE("=OSD CPP=> open /sys/devices/platform/aml_wdt/ping_enable ERROR(%s)!!\n", strerror(errno)); - return -1; - } - - fclose(fp); - - return 0; -} - -int TvMisc_SetSystemPetCounterTimeOut(int timeout) -{ - FILE *fp; - - fp = fopen("/sys/devices/platform/aml_wdt/wdt_timeout", "w"); - - if (fp != NULL) { - fprintf(fp, "%d", timeout); - fclose(fp); - } else { - LOGE("=OSD CPP=> open /sys/devices/platform/aml_wdt/wdt_timeout ERROR(%s)!!\n", strerror(errno)); - return -1; - } - - fclose(fp); - - return 0; -} - -#define MEMERASE _IOW('M', 2, struct erase_info_user) -static int memerase(int fd, struct erase_info_user *erase) -{ - return (ioctl (fd, MEMERASE, erase)); -} - -#define CS_ATV_SOCKET_FILE_NAME "/dev/socket/datv_sock" - -static int setServer(const char *fileName __unused) -{ - int ret = -1, sock = -1; - struct sockaddr_un srv_addr; - - sock = socket(PF_UNIX, SOCK_STREAM, 0); - if (sock < 0) { - LOGE("%s, socket create failed (errno = %d: %s).\n", CFG_SECTION_TV, errno, strerror(errno)); - return -1; - } - - //set server addr_param - srv_addr.sun_family = AF_UNIX; - strncpy(srv_addr.sun_path, CS_ATV_SOCKET_FILE_NAME, sizeof(srv_addr.sun_path) - 1); - unlink(CS_ATV_SOCKET_FILE_NAME); - - //bind sockfd & addr - ret = bind(sock, (struct sockaddr *) &srv_addr, sizeof(srv_addr)); - if (ret == -1) { - LOGE("%s, cannot bind server socket.\n", CFG_SECTION_TV); - close(sock); - unlink(CS_ATV_SOCKET_FILE_NAME); - return -1; - } - - //listen sockfd - ret = listen(sock, 1); - if (ret == -1) { - LOGE("%s, cannot listen the client connect request.\n", CFG_SECTION_TV); - close(sock); - unlink(CS_ATV_SOCKET_FILE_NAME); - return -1; - } - - return sock; -} - -static int acceptMessage(int listen_fd) -{ - int ret, com_fd; - socklen_t len; - struct sockaddr_un clt_addr; - - //have connect request use accept - len = sizeof(clt_addr); - com_fd = accept(listen_fd, (struct sockaddr *) &clt_addr, &len); - if (com_fd < 0) { - LOGE("%s, cannot accept client connect request.\n", CFG_SECTION_TV); - close(listen_fd); - unlink(CS_ATV_SOCKET_FILE_NAME); - return -1; - } - - LOGD("%s, com_fd = %d\n", CFG_SECTION_TV, com_fd); - - return com_fd; -} - -static int parse_socket_message(char *msg_str, int *para_cnt, int para_buf[]) -{ - int para_count = 0, set_mode = 0; - char *token = NULL; - - set_mode = -1; - - token = strtok(msg_str, ","); - if (token != NULL) { - if (strcasecmp(token, "quit") == 0) { - set_mode = 0; - } else if (strcasecmp(token, "SetAudioVolumeCompensationVal") == 0) { - set_mode = 1; - } else if (strcasecmp(token, "set3dmode") == 0) { - set_mode = 2; - } else if (strcasecmp(token, "setdisplaymode") == 0) { - set_mode = 3; - } - } - - if (set_mode != 1 && set_mode != 2 && set_mode != 3) { - return set_mode; - } - - para_count = 0; - - token = strtok(NULL, ","); - while (token != NULL) { - para_buf[para_count] = strtol(token, NULL, 10); - para_count += 1; - - token = strtok(NULL, ","); - } - - *para_cnt = para_count; - - return set_mode; -} - -/*static void* socket_thread_entry(void *arg) -{ - int ret = 0, listen_fd = -1, com_fd = -1, rd_len = 0; - int para_count = 0, set_mode = 0; - int tmp_val = 0; - int para_buf[16] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; - static char recv_buf[1024]; - - listen_fd = setServer(CS_ATV_SOCKET_FILE_NAME); - chmod(CS_ATV_SOCKET_FILE_NAME, 0666); - prctl(PR_SET_NAME, (unsigned long) "datv.sock.thread"); - - if (listen_fd < 0) { - return NULL; - } - - while (1) { - com_fd = acceptMessage(listen_fd); - - if (com_fd >= 0) { - //read message from client - memset((void *) recv_buf, 0, sizeof(recv_buf)); - rd_len = read(com_fd, recv_buf, sizeof(recv_buf)); - LOGD("%s, message from client (%d)) : %s\n", CFG_SECTION_TV, rd_len, recv_buf); - - set_mode = parse_socket_message(recv_buf, ¶_count, para_buf); - if (set_mode == 0) { - LOGD("%s, receive quit message, starting to quit.\n", CFG_SECTION_TV); - sprintf(recv_buf, "%s", "quiting now..."); - write(com_fd, recv_buf, strlen(recv_buf) + 1); - break; - } else if (set_mode == 1) { - ret = -1; - - if (para_count == 1) { - LOGD("%s, SetAudioVolumeCompensationVal value = %d\n", CFG_SECTION_TV, para_buf[0]); - - ret = SetAudioVolumeCompensationVal(para_buf[0]); - } else if (para_count == 2) { - LOGD("%s, SetAudioVolumeCompensationVal value = %d, type = %d\n", CFG_SECTION_TV, para_buf[0], para_buf[1]); - - ret = SetAudioVolumeCompensationVal(para_buf[0]); - - if (para_buf[1] == 1) { - tmp_val = GetAudioMasterVolume(); - ret |= SetAudioMasterVolume(tmp_val); - } - } - - sprintf(recv_buf, "%d", ret); - write(com_fd, recv_buf, strlen(recv_buf) + 1); - } else if (set_mode == 2) { - ret = -1; - - if (para_count == 1) { - LOGE("%s, mode = %d ------->\n", CFG_SECTION_TV, para_buf[0]); - - switch (para_buf[0]) { - case 4: //BT - ret = Tvin_Set3DFunction(MODE3D_BT); - break; - case 5: //LR - ret = Tvin_Set3DFunction(MODE3D_LR); - break; - case 8: // - ret = Tvin_Set3DFunction(MODE3D_DISABLE); - break; - case 0: - ret = Tvin_Set3DFunction(MODE3D_DISABLE); - break; - case 9: // - ret = Tvin_Set3DFunction(MODE3D_L_3D_TO_2D); - break; - } - if (ret == 0) { - LOGE("%s, sk_hdi_av_set_3d_mode return sucess.\n", CFG_SECTION_TV); - } else { - LOGE("%s, sk_hdi_av_set_3d_mode return error(%d).\n", CFG_SECTION_TV, ret); - } - } - - sprintf(recv_buf, "%d", ret); - write(com_fd, recv_buf, strlen(recv_buf) + 1); - - } - - close(com_fd); - com_fd = -1; - } - } - - if (com_fd >= 0) { - close(com_fd); - com_fd = -1; - } - - if (listen_fd >= 0) { - close(listen_fd); - listen_fd = -1; - } - - unlink(CS_ATV_SOCKET_FILE_NAME); - - return NULL; -}*/ - -#if !defined(SUN_LEN) -#define SUN_LEN(su) (sizeof(*(su)) - sizeof((su)->sun_path) + strlen((su)->sun_path)) -#endif - -static int connectToServer(char *file_name) -{ - int tmp_ret = 0, sock = -1; - struct sockaddr_un addr; - - if (file_name == NULL) { - LOGE("%s, file name is NULL\n", CFG_SECTION_TV); - return -1; - } - - sock = socket(AF_UNIX, SOCK_STREAM, 0); - if (sock < 0) { - LOGE("%s, socket create failed (errno = %d: %s)\n", CFG_SECTION_TV, errno, strerror(errno)); - return -1; - } - - /* connect to socket; fails if file doesn't exist */ - strcpy(addr.sun_path, file_name); // max 108 bytes - addr.sun_family = AF_UNIX; - tmp_ret = connect(sock, (struct sockaddr *) &addr, SUN_LEN(&addr)); - if (tmp_ret < 0) { - // ENOENT means socket file doesn't exist - // ECONNREFUSED means socket exists but nobody is listening - LOGE("%s, AF_UNIX connect failed for '%s': %s\n", CFG_SECTION_TV, file_name, strerror(errno)); - close(sock); - return -1; - } - - return sock; -} - -static int realSendSocketMsg(char *file_name, char *msg_str, char recv_buf[]) -{ - int sock = -1, rd_len = 0; - char tmp_buf[1024]; - - if (file_name == NULL) { - LOGE("%s, file name is NULL\n", CFG_SECTION_TV); - return -1; - } - - if (msg_str == NULL) { - LOGE("%s, msg string is NULL\n", CFG_SECTION_TV); - return -1; - } - - LOGD("%s, message to server (%d)) : %s\n", CFG_SECTION_TV, strlen(msg_str), msg_str); - - sock = connectToServer(file_name); - - if (sock >= 0) { - write(sock, msg_str, strlen(msg_str) + 1); - - if (recv_buf == NULL) { - memset((void *) tmp_buf, 0, sizeof(tmp_buf)); - rd_len = read(sock, tmp_buf, sizeof(tmp_buf)); - LOGD("%s, message from server (%d)) : %s\n", CFG_SECTION_TV, rd_len, tmp_buf); - } else { - rd_len = read(sock, recv_buf, 1024); - LOGD("%s, message from server (%d)) : %s\n", CFG_SECTION_TV, rd_len, recv_buf); - } - - close(sock); - sock = -1; - - return 0; - } - - return -1; -} - -int I2C_WriteNbyte(int i2c_no, int dev_addr, int slave_addr, int len, unsigned char data_buf[]) -{ - int tmp_ret = 0; - struct i2c_rdwr_ioctl_data ctl_data; - struct i2c_msg msg; - unsigned char msg_buf[52]; - int device_fd = -1; - - memset((void *) msg_buf, 0, 52); - - msg_buf[0] = (unsigned char) (slave_addr >> 8); - msg_buf[1] = (unsigned char) (slave_addr & 0x00ff); - - if (data_buf == NULL) { - return -1; - } - - if (len < 50) { - memcpy((void *) &msg_buf[2], data_buf, len); - } else { - LOGE("I2C_WriteNbyte len(%d) > 50, error!\n", len); - return -1; - } - - msg.addr = dev_addr; - msg.flags = I2C_M_WR; - msg.len = 2 + len; - msg.buf = msg_buf; - ctl_data.nmsgs = 1; - ctl_data.msgs = &msg; - - if (i2c_no == 1) { - device_fd = open(CS_I2C_1_DEV_PATH, O_RDWR); - if (device_fd < 0) { - LOGE("%s, Open device file %s error: %s.\n", CFG_SECTION_TV, CS_I2C_1_DEV_PATH, strerror(errno)); - return -1; - } - } else if (i2c_no == 2) { - device_fd = open(CS_I2C_2_DEV_PATH, O_RDWR); - if (device_fd < 0) { - LOGE("%s, Open device file %s error: %s.\n", CFG_SECTION_TV, CS_I2C_2_DEV_PATH, strerror(errno)); - return -1; - } - } else { - LOGE("%s, invalid i2c no (%d).\n", CFG_SECTION_TV, i2c_no); - return -1; - } - - tmp_ret = ioctl(device_fd, I2C_RDWR, &ctl_data); - - usleep(10 * 1000); - if (device_fd >= 0) { - close(device_fd); - device_fd = -1; - } - return tmp_ret; -} - -int I2C_ReadNbyte(int i2c_no, int dev_addr, int slave_addr, int len, unsigned char data_buf[]) -{ - int tmp_ret = 0; - struct i2c_rdwr_ioctl_data ctl_data; - struct i2c_msg msg; - unsigned char msg_buf[52]; - int device_fd = -1; - - memset((void *) msg_buf, 0, 52); - - if (data_buf == NULL) { - return -1; - } - - if (len < 50) { - memcpy((void *) &msg_buf[2], data_buf, len); - } else { - LOGE("I2C_WriteNbyte len(%d) > 50, error!\n", len); - return -1; - } - - msg_buf[0] = (unsigned char) (slave_addr >> 8); - msg_buf[1] = (unsigned char) (slave_addr & 0x00ff); - msg.addr = dev_addr; - msg.flags = I2C_M_WR; - msg.len = 2; - msg.buf = msg_buf; - ctl_data.nmsgs = 1; - ctl_data.msgs = &msg; - - if (i2c_no == 1) { - device_fd = open(CS_I2C_1_DEV_PATH, O_RDWR); - if (device_fd < 0) { - LOGE("%s, Open device file %s error: %s.\n", CFG_SECTION_TV, CS_I2C_1_DEV_PATH, strerror(errno)); - return -1; - } - } else if (i2c_no == 2) { - device_fd = open(CS_I2C_2_DEV_PATH, O_RDWR); - if (device_fd < 0) { - LOGE("%s, Open device file %s error: %s.\n", CFG_SECTION_TV, CS_I2C_2_DEV_PATH, strerror(errno)); - return -1; - } - } else { - LOGE("%s, invalid i2c no (%d).\n", CFG_SECTION_TV, i2c_no); - return -1; - } - - tmp_ret = ioctl(device_fd, I2C_RDWR, &ctl_data); - - msg.addr = dev_addr; - msg.flags |= I2C_M_RD; - msg.len = len; - msg.buf = data_buf; - ctl_data.nmsgs = 1; - ctl_data.msgs = &msg; - - tmp_ret = ioctl(device_fd, I2C_RDWR, &ctl_data); - - usleep(10 * 1000); - - if (device_fd >= 0) { - close(device_fd); - device_fd = -1; - } - return tmp_ret; -} - -int SetFileAttrValue(const char *fp, const char value[]) -{ - int fd = -1, ret = -1; - - pthread_mutex_lock(&file_attr_control_flag_mutex); - - fd = open(fp, O_RDWR); - - if (fd < 0) { - LOGE("open %s ERROR(%s)!!\n", fp, strerror(errno)); - pthread_mutex_unlock(&file_attr_control_flag_mutex); - return -1; - } - - ret = write(fd, value, strlen(value)); - close(fd); - - pthread_mutex_unlock(&file_attr_control_flag_mutex); - return ret; -} - -int GetFileAttrIntValue(const char *fp) -{ - int fd = -1, ret = -1; - int temp = -1; - char temp_str[32]; - - memset(temp_str, 0, 32); - - fd = open(fp, O_RDWR); - - if (fd <= 0) { - LOGE("open %s ERROR(%s)!!\n", fp, strerror(errno)); - return -1; - } - - if (read(fd, temp_str, sizeof(temp_str)) > 0) { - if (sscanf(temp_str, "%d", &temp) >= 0) { - LOGD("%s -> get %s value =%d!\n", CFG_SECTION_TV, fp, temp); - close(fd); - return temp; - } else { - LOGE("%s -> get %s value error(%s)\n", CFG_SECTION_TV, fp, strerror(errno)); - close(fd); - return -1; - } - } - - close(fd); - return -1; -} - -int *GetFileAttrIntValueStr(const char *fp) -{ - int fd = -1, ret = -1; - static int temp[4]; - char temp_str[32]; - int i = 0; - char *p = NULL; - - memset(temp_str, 0, 32); - - fd = open(fp, O_RDWR); - - if (fd <= 0) { - LOGE("open %s ERROR(%s)!!\n", fp, strerror(errno)); - return NULL; - } - - if (read(fd, temp_str, sizeof(temp_str)) > 0) { - LOGD("%s,temp_str = %s\n", CFG_SECTION_TV, temp_str); - p = strtok(temp_str, " "); - while (p != NULL) { - sscanf(p, "%d", &temp[i]); - p = strtok(NULL, " "); - i = i + 1; - } - close(fd); - return temp; - } - - close(fd); - return NULL; -} - -int Get_Fixed_NonStandard(void) -{ - return GetFileAttrIntValue("/sys/module/tvin_afe/parameters/force_nostd"); -} - -//0-turn off -//1-force non-standard -//2-force normal -int Set_Fixed_NonStandard(int value) -{ - int fd = -1, ret = -1; - char set_vale[32]; - memset(set_vale, '\0', 32); - - sprintf(set_vale, "%d", value); - - fd = open("/sys/module/tvin_afe/parameters/force_nostd", O_RDWR); - - if (fd >= 0) { - ret = write(fd, set_vale, strlen(set_vale)); - } - - if (ret <= 0) { - LOGE("%s -> set /sys/module/tvin_afe/parameters/force_nostd error(%s)!\n", CFG_SECTION_TV, strerror(errno)); - } - - close(fd); - - return ret; -} - -static void *UserPet_TreadRun(void *data __unused) -{ - while (is_turnon_user_pet_thread == true) { - if (is_user_pet_thread_start == true) { - usleep(1000 * 1000); - if (++user_counter == 0xffffffff) - user_counter = 1; - TvMisc_SetUserCounter(user_counter); - } else { - usleep(10000 * 1000); - } - } - if (user_pet_terminal == 1) { - user_counter = 0; - } else { - user_counter = 1; - } - TvMisc_SetUserCounter(user_counter); - return ((void *) 0); -} - -static int UserPet_CreateThread(void) -{ - int ret = 0; - pthread_attr_t attr; - struct sched_param param; - - is_turnon_user_pet_thread = true; - is_user_pet_thread_start = true; - - pthread_attr_init(&attr); - pthread_attr_setschedpolicy(&attr, SCHED_RR); - param.sched_priority = 1; - pthread_attr_setschedparam(&attr, ¶m); - ret = pthread_create(&UserPet_ThreadId, &attr, &UserPet_TreadRun, NULL); - pthread_attr_destroy(&attr); - return ret; -} - -static void UserPet_KillThread(void) -{ - int i = 0, dly = 600; - is_turnon_user_pet_thread = false; - is_user_pet_thread_start = false; - for (i = 0; i < 2; i++) { - usleep(dly * 1000); - } - pthread_join(UserPet_ThreadId, NULL); - UserPet_ThreadId = 0; - LOGD("%s, done.", CFG_SECTION_TV); -} - -void TvMisc_EnableWDT(bool kernelpet_disable, unsigned int userpet_enable, unsigned int kernelpet_timeout, unsigned int userpet_timeout, unsigned int userpet_reset) -{ - TvMisc_SetSystemPetCounterTimeOut(kernelpet_timeout); - TvMisc_SetSystemPetEnable(1); - if (kernelpet_disable) { - TvMisc_SetSystemPetResetEnable(0); - } else { - TvMisc_SetSystemPetResetEnable(1); - } - if (userpet_enable) { - TvMisc_SetUserCounterTimeOut(userpet_timeout); - TvMisc_SetUserPetResetEnable(userpet_reset); - UserPet_CreateThread(); - } else { - TvMisc_SetUserCounter(0); - TvMisc_SetUserPetResetEnable(0); - } -} - -void TvMisc_DisableWDT(unsigned int userpet_enable) -{ - if (userpet_enable) { - user_pet_terminal = 0; - UserPet_KillThread(); - } -} - -static int get_hardware_info(char *hardware, unsigned int *revision) -{ - char data[1024]; - int fd, n; - char *x, *hw, *rev; - - fd = open("/proc/cpuinfo", O_RDONLY); - if (fd < 0) { - return -1; - } - - n = read(fd, data, 1023); - close(fd); - if (n < 0) { - return -1; - } - - data[n] = 0; - - if (hardware != NULL) { - hw = strstr(data, "\nHardware"); - - if (hw) { - x = strstr(hw, ": "); - if (x) { - x += 2; - n = 0; - while (*x && *x != '\n' && !isspace(*x)) { - hardware[n++] = tolower(*x); - x++; - if (n == 31) { - break; - } - } - - hardware[n] = 0; - } - } - } - - if (revision != NULL) { - rev = strstr(data, "\nRevision"); - - if (rev) { - x = strstr(rev, ": "); - if (x) { - *revision = strtoul(x + 2, 0, 16); - } - } - } - - return 0; -} - -int get_hardware_name(char *hardware) -{ - int tmp_ret = 0; - - if (hardware == NULL) { - return -1; - } - - tmp_ret = get_hardware_info(hardware, NULL); - if (tmp_ret < 0) { - hardware[0] = '\0'; - } - - return 0; -} - -/*---------------delete dir---------------*/ -int TvMisc_DeleteDirFiles(const char *strPath, int flag) -{ - int status; - char tmp[256]; - switch (flag) { - case 0: - sprintf(tmp, "rm -f %s", strPath); - LOGE("%s", tmp); - system(tmp); - break; - case 1: - sprintf(tmp, "cd %s", strPath); - LOGE("%s", tmp); - status = system(tmp); - if (status > 0 || status < 0) - return -1; - sprintf(tmp, "cd %s;rm -rf *", strPath); - system(tmp); - LOGE("%s", tmp); - break; - case 2: - sprintf(tmp, "rm -rf %s", strPath); - LOGE("%s", tmp); - system(tmp); - break; - } - return 0; -} -/*---------------delete dir end-----------*/ - -#ifndef NELEM -# define NELEM(x) ((int) (sizeof(x) / sizeof((x)[0]))) -#endif - - -int Tv_Utils_CheckFs(void) -{ - FILE *f; - char mount_dev[256]; - char mount_dir[256]; - char mount_type[256]; - char mount_opts[256]; - int mount_freq; - int mount_passno; - int match; - int found_ro_fs = 0; - int data_status = 0; - int cache_status = 0; - int atv_status = 0; - int dtv_status = 0; - int param_status = 0; - int cool_reboot = 0; - int recovery_reboot = 0; - - f = fopen("/proc/mounts", "r"); - if (! f) { - /* If we can't read /proc/mounts, just give up */ - return 1; - } - - do { - match = fscanf(f, "%255s %255s %255s %255s %d %d\n", - mount_dev, mount_dir, mount_type, - mount_opts, &mount_freq, &mount_passno); - mount_dev[255] = 0; - mount_dir[255] = 0; - mount_type[255] = 0; - mount_opts[255] = 0; - if ((match == 6) && (!strncmp(mount_dev, "/dev/block", 10))) { - LOGD("%s, %s %s %s %s %d %d!", CFG_SECTION_TV, mount_dev, mount_dir, mount_type, mount_opts, mount_freq, mount_passno); - if (!strncmp(mount_dir, "/param", 6)) { - param_status |= 0x01; - } else if (!strncmp(mount_dir, "/atv", 4)) { - atv_status |= 0x01; - } else if (!strncmp(mount_dir, "/dtv", 4)) { - dtv_status |= 0x01; - } else if (!strncmp(mount_dir, "/data", 5)) { - data_status |= 0x01; - } else if (!strncmp(mount_dir, "/cache", 6)) { - cache_status |= 0x01; - } - if (strstr(mount_opts, "ro")) { - found_ro_fs += 1; - if (!strncmp(mount_dir, "/param", 6)) { - param_status |= 0x02; - } else if (!strncmp(mount_dir, "/atv", 4)) { - atv_status |= 0x02; - } else if (!strncmp(mount_dir, "/dtv", 4)) { - dtv_status |= 0x02; - } else if (!strncmp(mount_dir, "/data", 5)) { - data_status |= 0x02; - } else if (!strncmp(mount_dir, "/cache", 6)) { - cache_status |= 0x02; - } - } - } - } while (match != EOF); - - fclose(f); - - switch (param_status) { - case 0x03: - LOGW("%s, param partition is read-only!", CFG_SECTION_TV); - break; - case 0x00: - LOGW("%s, param partition can not be mounted!", CFG_SECTION_TV); - break; - default: - break; - } - switch (atv_status) { - case 0x03: - LOGW("%s, atv partition is read-only!", CFG_SECTION_TV); - cool_reboot = 1; - //android_reboot(ANDROID_RB_RESTART2, 0, "cool_reboot"); - break; - case 0x00: - LOGW("%s, atv partition can not be mounted!", CFG_SECTION_TV); - recovery_reboot = 1; - //android_reboot(ANDROID_RB_RESTART2, 0, "recovery"); - default: - break; - } - switch (dtv_status) { - case 0x03: - LOGW("%s, dtv partition is read-only!", CFG_SECTION_TV); - //android_reboot(ANDROID_RB_RESTART2, 0, "cool_reboot"); - break; - case 0x00: - LOGW("%s, dtv partition can not be mounted!", CFG_SECTION_TV); - //android_reboot(ANDROID_RB_RESTART2, 0, "recovery"); - default: - break; - } - switch (data_status) { - case 0x03: - LOGW("%s, data partition is read-only!", CFG_SECTION_TV); - cool_reboot = 1; - //android_reboot(ANDROID_RB_RESTART2, 0, "cool_reboot"); - break; - case 0x00: - LOGW("%s, data partition can not be mounted!", CFG_SECTION_TV); - recovery_reboot = 1; - //android_reboot(ANDROID_RB_RESTART2, 0, "recovery"); - break; - default: - break; - } - switch (cache_status) { - case 0x03: - LOGW("%s, cache partition is read-only!", CFG_SECTION_TV); - cool_reboot = 1; - //android_reboot(ANDROID_RB_RESTART2, 0, "cool_reboot"); - break; - case 0x00: - LOGW("%s, cache partition can not be mounted!", CFG_SECTION_TV); - recovery_reboot = 1; - //android_reboot(ANDROID_RB_RESTART2, 0, "recovery"); - break; - default: - break; - } - if (cool_reboot == 1) { - android_reboot(ANDROID_RB_RESTART2, 0, "cool_reboot"); - } - if (recovery_reboot == 1) { - android_reboot(ANDROID_RB_RESTART2, 0, "recovery"); - } - return found_ro_fs; -} - - -int Tv_Utils_SetFileAttrStr(const char *file_path, char val_str_buf[]) -{ - FILE *tmpfp = NULL; - - tmpfp = fopen(file_path, "w"); - if (tmpfp == NULL) { - LOGE("%s, write open file %s error(%s)!!!\n", CFG_SECTION_TV, file_path, strerror(errno)); - return -1; - } - - fputs(val_str_buf, tmpfp); - - fclose(tmpfp); - tmpfp = NULL; - - return 0; -} - -int Tv_Utils_GetFileAttrStr(const char *file_path, int buf_size, char val_str_buf[]) -{ - FILE *tmpfp = NULL; - - tmpfp = fopen(file_path, "r"); - if (tmpfp == NULL) { - LOGE("%s, read open file %s error(%s)!!!\n", CFG_SECTION_TV, file_path, strerror(errno)); - val_str_buf[0] = '\0'; - return -1; - } - - fgets(val_str_buf, buf_size, tmpfp); - - fclose(tmpfp); - tmpfp = NULL; - - return 0; -} - -//check file exist or not -bool Tv_Utils_IsFileExist(const char *file_name) -{ - struct stat tmp_st; - - return stat(file_name, &tmp_st) == 0; -} - -#define CC_EDID_SIZE (256) -#define CS_VGA_EDID_BUF_DATA_CFG_NAME "ssm.vga.edidbuf.data" -/* -static unsigned char customer_edid_buf[CC_EDID_SIZE + 4]; - -static unsigned char mDefHDMIEdidBuf[CC_EDID_SIZE] = { - //256 bytes - 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x4d, 0x79, 0x02, 0x2c, 0x01, 0x01, 0x01, 0x01, //0x00~0x0F - 0x01, 0x15, 0x01, 0x03, 0x80, 0x85, 0x4b, 0x78, 0x0a, 0x0d, 0xc9, 0xa0, 0x57, 0x47, 0x98, 0x27, //0x10~0x1F - 0x12, 0x48, 0x4c, 0x21, 0x08, 0x00, 0x81, 0x80, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //0x20~0x2F - 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x3a, 0x80, 0x18, 0x71, 0x38, 0x2d, 0x40, 0x58, 0x2c, //0x30~0x3F - 0x45, 0x00, 0x30, 0xeb, 0x52, 0x00, 0x00, 0x1e, 0x01, 0x1d, 0x00, 0x72, 0x51, 0xd0, 0x1e, 0x20, //0x40~0x4F - 0x6e, 0x28, 0x55, 0x00, 0x30, 0xeb, 0x52, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x53, //0x50~0x5F - 0x6b, 0x79, 0x77, 0x6f, 0x72, 0x74, 0x68, 0x20, 0x54, 0x56, 0x0a, 0x20, 0x00, 0x00, 0x00, 0xfd, //0x60~0x6F - 0x00, 0x30, 0x3e, 0x0e, 0x46, 0x0f, 0x00, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x01, 0x3e, //0x70~0x7F - 0x02, 0x03, 0x38, 0xf0, 0x53, 0x1f, 0x10, 0x14, 0x05, 0x13, 0x04, 0x20, 0x22, 0x3c, 0x3e, 0x12, //0x80~0x8F - 0x16, 0x03, 0x07, 0x11, 0x15, 0x02, 0x06, 0x01, 0x23, 0x09, 0x07, 0x01, 0x83, 0x01, 0x00, 0x00, //0x90~0x9F - 0x78, 0x03, 0x0c, 0x00, 0x10, 0x00, 0x88, 0x3c, 0x2f, 0xd0, 0x8a, 0x01, 0x02, 0x03, 0x04, 0x01, //0xA0~0xAF - 0x40, 0x00, 0x7f, 0x20, 0x30, 0x70, 0x80, 0x90, 0x76, 0xe2, 0x00, 0xfb, 0x02, 0x3a, 0x80, 0xd0, //0xB0~0xBF - 0x72, 0x38, 0x2d, 0x40, 0x10, 0x2c, 0x45, 0x80, 0x30, 0xeb, 0x52, 0x00, 0x00, 0x1e, 0x01, 0x1d, //0xC0~0xCF - 0x00, 0xbc, 0x52, 0xd0, 0x1e, 0x20, 0xb8, 0x28, 0x55, 0x40, 0x30, 0xeb, 0x52, 0x00, 0x00, 0x1e, //0xD0~0xDF - 0x01, 0x1d, 0x80, 0xd0, 0x72, 0x1c, 0x16, 0x20, 0x10, 0x2c, 0x25, 0x80, 0x30, 0xeb, 0x52, 0x00, //0xE0~0xEF - 0x00, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4, //0xF0~0xFF -}; -*/ -static unsigned char mVGAEdidDataBuf[CC_EDID_SIZE]; -void monitor_info_set_date ( unsigned char *edidbuf ) -{ - char prop_value[PROPERTY_VALUE_MAX]; - char tmp[4]; - struct tm *p; - int week = 0; - - memset ( prop_value, '\0', PROPERTY_VALUE_MAX ); - - property_get ( "ro.build.date.utc", prop_value, "VERSION_ERROR" ); - - time_t timep = atoi ( prop_value ); - - p = localtime ( &timep ); - - mktime ( p ); - - strftime ( prop_value, PROPERTY_VALUE_MAX, "%W.", p ); - - week = atoi ( prop_value ); - - edidbuf[16] = week; - edidbuf[17] = ( 1900 + p->tm_year ) - 1990; - - LOGD ( "###############%s##############", CFG_SECTION_TV ); - LOGD ( "Week number is %d", week ); - LOGD ( "%d %02d %02d", 1900 + p->tm_year, 1 + p->tm_mon, p->tm_mday ); - LOGD ( "###############%s##############", CFG_SECTION_TV ); -} - - -void monitor_info_set_imagesize ( unsigned char *edidbuf ) -{ - //panel size info for edid: - //39' : max_horizontal = 86; max_vertical = 48; - //42' : max_horizontal = 93; max_vertical = 52; - //47' : max_horizontal = 104; max_vertical = 60; - //50' : max_horizontal = 110; max_vertical = 62; - //55' : max_horizontal = 121; max_vertical = 71; - int max_horizontal = 104; //47' - int max_vertical = 60; //47' - - edidbuf[21] = max_horizontal; - edidbuf[22] = max_vertical; - - LOGD ( "imagesize max_horizontal %d max_vertical %d", max_horizontal, max_vertical ); -} - - - -void monitor_info_name_init ( unsigned char *edidbuf ) -{ - int i = 0; - - for ( i = 90; i < 108; i++ ) { - edidbuf[i] = 0; - } - - edidbuf[93] = 252; -} - -void monitor_info_set_name ( unsigned char *edidbuf ) -{ - int i = 0; - int config_value_len; - const char *config_value; - unsigned char str_manufacturer_name[14]; - config_value = config_get_str ( CFG_SECTION_TV, "tvin.hdmiedid.name", "null" ); - - if ( strcmp ( config_value, "null" ) != 0 ) { - config_value_len = strlen ( config_value ); - - if ( config_value_len < 13 ) { - for ( i = 0; i < config_value_len; ++i ) { - str_manufacturer_name[i] = config_value[i]; - } - - for ( i = config_value_len; i < 13; ++i ) { - str_manufacturer_name[i] = ' '; - } - } else { - for ( i = 0; i < 13; ++i ) { - str_manufacturer_name[i] = config_value[i]; - } - } - - } - - for ( i = 0; i < 13; i++ ) { - edidbuf[95 + i] = str_manufacturer_name[i]; - } -} - -void monitor_info_edid_checksum ( unsigned char *edidbuf ) -{ - int sum = 0, i = 0; - - for ( i = 0; i < 127; i++ ) { - sum += edidbuf[i]; - } - - sum = ( 256 - ( sum % 256 ) ) % 256; - edidbuf[127] = sum; - - LOGD ( "checksum is 0x%x,so testBuf[127] = 0x%x", sum, edidbuf[127] ); -} - -int reboot_sys_by_fbc_edid_info() -{ - int ret = -1; - int fd = -1; - int edid_info_len = 256; - unsigned char fbc_edid_info[edid_info_len]; - int env_different_as_cur = 0; - char outputmode_prop_value[256]; - char lcd_reverse_prop_value[256]; - - LOGD("get edid info from fbc!"); - memset(outputmode_prop_value, '\0', 256); - memset(lcd_reverse_prop_value, '\0', 256); - property_get(UBOOTENV_OUTPUTMODE, outputmode_prop_value, "null" ); - property_get("ubootenv.var.lcd_reverse", lcd_reverse_prop_value, "null" ); - - fd = open("/sys/class/amhdmitx/amhdmitx0/edid_info", O_RDWR); - if (fd < 0) { - LOGW("open edid node error\n"); - return -1; - } - ret = read(fd, fbc_edid_info, edid_info_len); - if (ret < 0) { - LOGW("read edid node error\n"); - return -1; - } - - if ((0xfb == fbc_edid_info[250]) && (0x0c == fbc_edid_info[251])) { - LOGD("RX is FBC!"); - // set outputmode env - ret = 0;//is Fbc - switch (fbc_edid_info[252] & 0x0f) { - case 0x0: - if (0 != strcmp(outputmode_prop_value, "1080p") && - 0 != strcmp(outputmode_prop_value, "1080p50hz") - ) { - if (0 == env_different_as_cur) { - env_different_as_cur = 1; - } - property_set(UBOOTENV_OUTPUTMODE, "1080p"); - } - break; - case 0x1: - if (0 != strcmp(outputmode_prop_value, "4k2k60hz420") && - 0 != strcmp(outputmode_prop_value, "4k2k50hz420") - ) { - if (0 == env_different_as_cur) { - env_different_as_cur = 1; - } - property_set(UBOOTENV_OUTPUTMODE, "4k2k60hz420"); - } - break; - case 0x2: - if (0 != strcmp(outputmode_prop_value, "1366*768")) { - if (0 == env_different_as_cur) { - env_different_as_cur = 1; - } - property_set(UBOOTENV_OUTPUTMODE, "1366*768"); - } - break; - default: - break; - } - - // set RX 3D Info - //switch((fbc_edid_info[252]>>4)&0x0f) - - // set lcd_reverse env - switch (fbc_edid_info[253]) { - case 0x0: - if (0 != strcmp(lcd_reverse_prop_value, "0")) { - if (0 == env_different_as_cur) { - env_different_as_cur = 1; - } - property_set("ubootenv.var.lcd_reverse", "0"); - } - break; - case 0x1: - if (0 != strcmp(lcd_reverse_prop_value, "1")) { - if (0 == env_different_as_cur) { - env_different_as_cur = 1; - } - property_set("ubootenv.var.lcd_reverse", "1"); - } - break; - default: - break; - } - } - close(fd); - fd = -1; - //ret = -1; - if (1 == env_different_as_cur) { - LOGW("env change , reboot system\n"); - system("reboot"); - } - return ret; -} - -int reboot_sys_by_fbc_uart_panel_info(CFbcCommunication *fbc) -{ - int ret = -1; - char outputmode_prop_value[256]; - char lcd_reverse_prop_value[256]; - int env_different_as_cur = 0; - int panel_reverse = -1; - int panel_outputmode = -1; - - - char panel_model[64] = {0}; - - if (fbc == NULL) { - LOGE("there is no fbc!!!\n"); - return -1; - } - - fbc->cfbc_Get_FBC_Get_PANel_INFO(COMM_DEV_SERIAL, panel_model); - if (0 == panel_model[0]) { - LOGD("device is not fbc\n"); - return -1; - } - LOGD("device is fbc, get panel info from fbc!\n"); - memset(outputmode_prop_value, '\0', 256); - memset(lcd_reverse_prop_value, '\0', 256); - property_get(UBOOTENV_OUTPUTMODE, outputmode_prop_value, "null" ); - property_get("ubootenv.var.lcd_reverse", lcd_reverse_prop_value, "null" ); - - fbc->cfbc_Get_FBC_PANEL_REVERSE(COMM_DEV_SERIAL, &panel_reverse); - fbc->cfbc_Get_FBC_PANEL_OUTPUT(COMM_DEV_SERIAL, &panel_outputmode); - LOGD("panel_reverse = %d, panel_outputmode = %d\n", panel_reverse, panel_outputmode); - LOGD("panel_output prop = %s, panel reverse prop = %s\n", outputmode_prop_value, lcd_reverse_prop_value); - switch (panel_outputmode) { - case 0x0: - if (0 != strcmp(outputmode_prop_value, "1080p") && - 0 != strcmp(outputmode_prop_value, "1080p50hz") - ) { - LOGD("panel_output changed to 1080p\n"); - if (0 == env_different_as_cur) { - env_different_as_cur = 1; - } - property_set(UBOOTENV_OUTPUTMODE, "1080p"); - } - break; - case 0x1: - if (0 != strcmp(outputmode_prop_value, "4k2k60hz420") && - 0 != strcmp(outputmode_prop_value, "4k2k50hz420") - ) { - if (0 == env_different_as_cur) { - env_different_as_cur = 1; - } - property_set(UBOOTENV_OUTPUTMODE, "4k2k60hz420"); - } - break; - case 0x2: - if (0 != strcmp(outputmode_prop_value, "1366*768")) { - if (0 == env_different_as_cur) { - env_different_as_cur = 1; - } - property_set(UBOOTENV_OUTPUTMODE, "1366*768"); - } - break; - default: - break; - } - - // set RX 3D Info - //switch((fbc_edid_info[252]>>4)&0x0f) - - // set lcd_reverse env - switch (panel_reverse) { - case 0x0: - if (0 != strcmp(lcd_reverse_prop_value, "0")) { - LOGD("panel_reverse changed to 0\n"); - if (0 == env_different_as_cur) { - env_different_as_cur = 1; - } - property_set("ubootenv.var.lcd_reverse", "0"); - } - break; - case 0x1: - if (0 != strcmp(lcd_reverse_prop_value, "1")) { - if (0 == env_different_as_cur) { - env_different_as_cur = 1; - } - property_set("ubootenv.var.lcd_reverse", "1"); - } - break; - default: - break; - } - - ret = -1; - if (1 == env_different_as_cur) { - LOGW("env change , reboot system\n"); - system("reboot"); - } - return 0; -} - -static pid_t pidof(const char *name) -{ - DIR *dir; - struct dirent *ent; - char *endptr; - char tmp_buf[512]; - - if (!(dir = opendir("/proc"))) { - LOGE("%s, can't open /proc, %s", __FUNCTION__, strerror(errno)); - return -1; - } - - while ((ent = readdir(dir)) != NULL) { - /* if endptr is not a null character, the directory is not - * entirely numeric, so ignore it */ - long lpid = strtol(ent->d_name, &endptr, 10); - if (*endptr != '\0') { - continue; - } - - /* try to open the cmdline file */ - snprintf(tmp_buf, sizeof(tmp_buf), "/proc/%ld/cmdline", lpid); - FILE *fp = fopen(tmp_buf, "r"); - - if (fp) { - if (fgets(tmp_buf, sizeof(tmp_buf), fp) != NULL) { - /* check the first token in the file, the program name */ - char *first = strtok(tmp_buf, " "); - if (!strcmp(first, name)) { - fclose(fp); - closedir(dir); - return (pid_t) lpid; - } - } - fclose(fp); - } - } - - closedir(dir); - return -1; -} - - - -int GetPlatformHaveDDFlag() -{ - const char *config_value; - - config_value = config_get_str(CFG_SECTION_TV, "platform.havedd", "null"); - if (strcmp(config_value, "true") == 0 || strcmp(config_value, "1") == 0) { - return 1; - } - - return 0; -} - -int GetPlatformProjectInfoSrc() -{ - const char *config_value; - - config_value = config_get_str(CFG_SECTION_TV, "platform.projectinfo.src", "null"); - if (strcmp(config_value, "null") == 0 || strcmp(config_value, "prop") == 0) { - return 0; - } else if (strcmp(config_value, "emmckey") == 0) { - return 1; - } else if (strcmp(config_value, "fbc_ver") == 0) { - return 2; - } - - return 0; -} - -static unsigned int mCrc32Table[256]; - -static void initCrc32Table() -{ - int i, j; - unsigned int Crc; - for (i = 0; i < 256; i++) { - Crc = i; - for (j = 0; j < 8; j++) { - if (Crc & 1) - Crc = (Crc >> 1) ^ 0xEDB88320; - else - Crc >>= 1; - } - mCrc32Table[i] = Crc; - } -} - -unsigned int CalCRC32(unsigned int crc, const unsigned char *ptr, unsigned int buf_len) -{ - static const unsigned int s_crc32[16] = { 0, 0x1db71064, 0x3b6e20c8, 0x26d930ac, 0x76dc4190, 0x6b6b51f4, 0x4db26158, 0x5005713c, - 0xedb88320, 0xf00f9344, 0xd6d6a3e8, 0xcb61b38c, 0x9b64c2b0, 0x86d3d2d4, 0xa00ae278, 0xbdbdf21c - }; - unsigned int crcu32 = crc; - //if (buf_len < 0) - // return 0; - if (!ptr) return 0; - crcu32 = ~crcu32; - while (buf_len--) { - unsigned char b = *ptr++; - crcu32 = (crcu32 >> 4) ^ s_crc32[(crcu32 & 0xF) ^ (b & 0xF)]; - crcu32 = (crcu32 >> 4) ^ s_crc32[(crcu32 & 0xF) ^ (b >> 4)]; - } - return ~crcu32; -} - -#define CC_HEAD_CHKSUM_LEN (9) -#define CC_VERSION_LEN (5) - -static int check_projectinfo_data_valid(char *data_str, int chksum_head_len, int ver_len) -{ - int tmp_len = 0, tmp_ver = 0; - char *endp = NULL; - unsigned long src_chksum = 0, cal_chksum = 0; - char tmp_buf[129] = { 0 }; - - if (data_str != NULL) { - tmp_len = strlen(data_str); - if (tmp_len > chksum_head_len + ver_len) { - cal_chksum = CalCRC32(0, (unsigned char *)(data_str + chksum_head_len), tmp_len - chksum_head_len); - memcpy(tmp_buf, data_str, chksum_head_len); - tmp_buf[chksum_head_len] = 0; - src_chksum = strtoul(tmp_buf, &endp, 16); - if (cal_chksum == src_chksum) { - memcpy(tmp_buf, data_str + chksum_head_len, ver_len); - if ((tmp_buf[0] == 'v' || tmp_buf[0] == 'V') && isxdigit(tmp_buf[1]) && isxdigit(tmp_buf[2]) && isxdigit(tmp_buf[3])) { - tmp_ver = strtoul(tmp_buf + 1, &endp, 16); - if (tmp_ver <= 0) { - LOGD("%s, project_info data version error!!!\n", __FUNCTION__); - return -1; - } - } else { - LOGD("%s, project_info data version error!!!\n", __FUNCTION__); - return -1; - } - - return tmp_ver; - } else { - LOGD("%s, cal_chksum = %x\n", __FUNCTION__, (unsigned int)cal_chksum); - LOGD("%s, src_chksum = %x\n", __FUNCTION__, (unsigned int)src_chksum); - } - } - - LOGD("%s, project_info data error!!!\n", __FUNCTION__); - return -1; - } - - LOGD("%s, project_info data is NULL!!!\n", __FUNCTION__); - return -1; -} - -static int gFBCPrjInfoRDPass = 0; -static char gFBCPrjInfoBuf[1024] = {0}; - -static int GetProjectInfoOriData(char data_str[], CFbcCommunication *fbcIns) -{ - int src_type = GetPlatformProjectInfoSrc(); - - if (src_type == 0) { - //memset(data_str, '\0', sizeof(data_str));//sizeof pointer has issue - getBootEnv("ubootenv.var.project_info", data_str, (char *)"null"); - if (strcmp(data_str, "null") == 0) { - LOGE("%s, get project info data error!!!\n", __FUNCTION__); - return -1; - } - - return 0; - } else if (src_type == 1) { - return -1; - } else if (src_type == 2) { - int i = 0, tmp_len = 0, tmp_val = 0, item_cnt = 0; - int tmp_rd_fail_flag = 0; - unsigned int cal_chksum = 0; - char sw_version[64]; - char build_time[64]; - char git_version[64]; - char git_branch[64]; - char build_name[64]; - char tmp_buf[512] = {0}; - - if (fbcIns != NULL) { - if (gFBCPrjInfoRDPass == 0) { - memset((void *)gFBCPrjInfoBuf, 0, sizeof(gFBCPrjInfoBuf)); - } - - if (gFBCPrjInfoRDPass == 1) { - strcpy(data_str, gFBCPrjInfoBuf); - LOGD("%s, rd once just return, data_str = %s\n", __FUNCTION__, data_str); - return 0; - } - - if (fbcIns->cfbc_Get_FBC_MAINCODE_Version(COMM_DEV_SERIAL, sw_version, build_time, git_version, git_branch, build_name) == 0) { - if (sw_version[0] == '1' || sw_version[0] == '2') { - strcpy(build_name, "2"); - - strcpy(tmp_buf, "v001,fbc_"); - strcat(tmp_buf, build_name); - strcat(tmp_buf, ",4k2k60hz420,no_rev,"); - strcat(tmp_buf, "HV550QU2-305"); - strcat(tmp_buf, ",8o8w,0,0"); - cal_chksum = CalCRC32(0, (unsigned char *)tmp_buf, strlen(tmp_buf)); - sprintf(data_str, "%08x,%s", cal_chksum, tmp_buf); - LOGD("%s, data_str = %s\n", __FUNCTION__, data_str); - } else { - tmp_val = 0; - if (fbcIns->cfbc_Get_FBC_project_id(COMM_DEV_SERIAL, &tmp_val) == 0) { - sprintf(build_name, "fbc_%d", tmp_val); - } else { - tmp_rd_fail_flag = 1; - strcpy(build_name, "fbc_0"); - LOGD("%s, get project id from fbc error!!!\n", __FUNCTION__); - } - - strcpy(tmp_buf, "v001,"); - strcat(tmp_buf, build_name); - strcat(tmp_buf, ",4k2k60hz420,no_rev,"); - - memset(git_branch, 0, sizeof(git_branch)); - if (fbcIns->cfbc_Get_FBC_Get_PANel_INFO(COMM_DEV_SERIAL, git_branch) == 0) { - strcat(tmp_buf, git_branch); - } else { - tmp_rd_fail_flag = 1; - strcat(tmp_buf, build_name); - LOGD("%s, get panel info from fbc error!!!\n", __FUNCTION__); - } - - strcat(tmp_buf, ",8o8w,0,0"); - cal_chksum = CalCRC32(0, (unsigned char *)tmp_buf, strlen(tmp_buf)); - sprintf(data_str, "%08x,%s", cal_chksum, tmp_buf); - LOGD("%s, data_str = %s\n", __FUNCTION__, data_str); - - if (tmp_rd_fail_flag == 0) { - gFBCPrjInfoRDPass = 1; - strcpy(gFBCPrjInfoBuf, data_str); - } - } - - return 0; - } - - return -1; - } - } - - return -1; -} - -static int handle_prj_info_by_ver(int ver, int item_ind, char *item_str, project_info_t *proj_info_ptr) -{ - if (ver == 1) { - if (item_ind == 0) { - strncpy(proj_info_ptr->version, item_str, CC_PROJECT_INFO_ITEM_MAX_LEN - 1); - } else if (item_ind == 1) { - strncpy(proj_info_ptr->panel_type, item_str, CC_PROJECT_INFO_ITEM_MAX_LEN - 1); - } else if (item_ind == 2) { - strncpy(proj_info_ptr->panel_outputmode, item_str, CC_PROJECT_INFO_ITEM_MAX_LEN - 1); - } else if (item_ind == 3) { - strncpy(proj_info_ptr->panel_rev, item_str, CC_PROJECT_INFO_ITEM_MAX_LEN - 1); - } else if (item_ind == 4) { - strncpy(proj_info_ptr->panel_name, item_str, CC_PROJECT_INFO_ITEM_MAX_LEN - 1); - } else if (item_ind == 5) { - strncpy(proj_info_ptr->amp_curve_name, item_str, CC_PROJECT_INFO_ITEM_MAX_LEN - 1); - } - } else { - if (item_ind == 0) { - strncpy(proj_info_ptr->version, item_str, CC_PROJECT_INFO_ITEM_MAX_LEN - 1); - } else if (item_ind == 1) { - strncpy(proj_info_ptr->panel_type, item_str, CC_PROJECT_INFO_ITEM_MAX_LEN - 1); - } else if (item_ind == 2) { - strncpy(proj_info_ptr->panel_name, item_str, CC_PROJECT_INFO_ITEM_MAX_LEN - 1); - } else if (item_ind == 3) { - strncpy(proj_info_ptr->panel_outputmode, item_str, CC_PROJECT_INFO_ITEM_MAX_LEN - 1); - } else if (item_ind == 4) { - strncpy(proj_info_ptr->panel_rev, item_str, CC_PROJECT_INFO_ITEM_MAX_LEN - 1); - } else if (item_ind == 5) { - strncpy(proj_info_ptr->amp_curve_name, item_str, CC_PROJECT_INFO_ITEM_MAX_LEN - 1); - } - } - - return 0; -} - -int GetProjectInfo(project_info_t *proj_info_ptr, CFbcCommunication *fbcIns) -{ - int i = 0, tmp_ret = 0, tmp_val = 0, tmp_len = 0; - int item_cnt = 0, handle_prj_info_data_flag = 0; - char *token = NULL; - const char *strDelimit = ","; - char tmp_buf[1024] = { 0 }; - char data_str[1024] = { 0 }; - - if (GetProjectInfoOriData(data_str, fbcIns) < 0) { - return -1; - } - - memset((void *)proj_info_ptr->version, 0, CC_PROJECT_INFO_ITEM_MAX_LEN); - memset((void *)proj_info_ptr->panel_type, 0, CC_PROJECT_INFO_ITEM_MAX_LEN); - memset((void *)proj_info_ptr->panel_outputmode, 0, CC_PROJECT_INFO_ITEM_MAX_LEN); - memset((void *)proj_info_ptr->panel_rev, 0, CC_PROJECT_INFO_ITEM_MAX_LEN); - memset((void *)proj_info_ptr->panel_name, 0, CC_PROJECT_INFO_ITEM_MAX_LEN); - memset((void *)proj_info_ptr->amp_curve_name, 0, CC_PROJECT_INFO_ITEM_MAX_LEN); - - //check project info data is valid - handle_prj_info_data_flag = check_projectinfo_data_valid(data_str, CC_HEAD_CHKSUM_LEN, CC_VERSION_LEN); - - //handle project info data - if (handle_prj_info_data_flag > 0) { - item_cnt = 0; - memset((void *)tmp_buf, 0, sizeof(tmp_buf)); - strncpy(tmp_buf, data_str + CC_HEAD_CHKSUM_LEN, sizeof(tmp_buf) - 1); - token = strtok(tmp_buf, strDelimit); - while (token != NULL) { - handle_prj_info_by_ver(handle_prj_info_data_flag, item_cnt, token, proj_info_ptr); - - token = strtok(NULL, strDelimit); - item_cnt += 1; - } - - return 0; - } - - return -1; -} - -#if ANDROID_PLATFORM_SDK_VERSION == 19 -int getBootEnv(const char *key, char *value, char *def_val) -{ - return property_get(key, value, def_val); -} - -void setBootEnv(const char *key, const char *value) -{ - return property_set(key, value); -} -#endif - -#if ANDROID_PLATFORM_SDK_VERSION >= 21 - -#include <binder/IServiceManager.h> -#include <utils/threads.h> -#include <systemcontrol/ISystemControlService.h> - -class DeathNotifier: public IBinder::DeathRecipient { -public: - DeathNotifier() - { - } - - void binderDied(const wp<IBinder> &who __unused) - { - ALOGW("system_control died!"); - } -}; - -static sp<ISystemControlService> amSystemControlService; -static sp<DeathNotifier> amDeathNotifier; -static Mutex amLock; - -static const sp<ISystemControlService> &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; - ALOGW("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); - } - ALOGE_IF(amSystemControlService == 0, "no System Control Service!?"); - - return amSystemControlService; -} - -int getBootEnv(const char *key, char *value, char *def_val) -{ - const sp<ISystemControlService> &sws = getSystemControlService(); - if (sws != 0) { - String16 v; - if (sws->getBootEnv(String16(key), v)) { - strcpy(value, String8(v).string()); - return 0; - } - } - - strcpy(value, def_val); - return -1; -} - -void setBootEnv(const char *key, const char *value) -{ - const sp<ISystemControlService> &sws = getSystemControlService(); - if (sws != 0) { - sws->setBootEnv(String16(key), String16(value)); - } -} -#endif diff --git a/tvapi/libtv/tvutils/tvutils.h b/tvapi/libtv/tvutils/tvutils.h deleted file mode 100644 index 8805144..0000000 --- a/tvapi/libtv/tvutils/tvutils.h +++ b/dev/null @@ -1,103 +0,0 @@ -#ifndef __TV_MISC_H__ -#define __TV_MISC_H__ - -#include "../tv/CFbcCommunication.h" -#define CC_MIN_ADC_CHANNEL_VAL (0) -#define CC_MAX_ADC_CHANNEL_VAL (5) - -#define CC_I2C_BUS_ON (0) -#define CC_I2C_BUS_OFF (1) - -#define CPQDB_DB_SIZE_ID "tv.db.size.id" - -struct erase_info_user { - uint32_t start; - uint32_t length; -}; - -extern int *GetFileAttrIntValueStr(const char *fp); -extern int ReadADCSpecialChannelValue(int adc_channel_num); -extern int Tv_MiscRegs(const char *cmd); - -extern int TvMisc_SetLVDSSSC(int val); -extern int TvMisc_SetUserCounterTimeOut(int timeout); -extern int TvMisc_SetUserCounter(int count); -extern int TvMisc_SetUserPetResetEnable(int enable); -extern int TvMisc_SetSystemPetResetEnable(int enable); -extern int TvMisc_SetSystemPetEnable(int enable); -extern int TvMisc_SetSystemPetCounter(int count); -extern void TvMisc_EnableWDT(bool kernelpet_disable, unsigned int userpet_enable, unsigned int kernelpet_timeout, unsigned int userpet_timeout, unsigned int userpet_reset); -extern void TvMisc_DisableWDT(unsigned int userpet_enable); -extern int I2C_WriteNbyte(int i2c_no, int dev_addr, int slave_addr, int len, unsigned char data_buf[]); -extern int I2C_ReadNbyte(int i2c_no, int dev_addr, int slave_addr, int len, unsigned char data_buf[]); -extern int GetTvDBDefineSize(); -extern int SetFileAttrValue(const char *fp, const char value[]); -extern int GetFileAttrIntValue(const char *fp); - -extern int Get_Fixed_NonStandard(void); -extern int Set_Fixed_NonStandard(int value); - -extern int get_hardware_name(char *hardware); - -extern int TvMisc_DeleteDirFiles(const char *strPath, int flag); - -extern int cfg_get_one_item(const char *key_str, const char *strDelimit, int item_index, char cfg_str[]); -extern int Tv_Utils_CheckFs(void); -extern int Tv_Utils_SetFileAttrStr(const char *file_path, char val_str_buf[]); -extern int Tv_Utils_GetFileAttrStr(const char *file_path, int buf_size, char val_str_buf[]); -extern bool Tv_Utils_IsFileExist(const char *file_name); -extern void monitor_info_name_init ( unsigned char *edidbuf ); -extern void monitor_info_set_name ( unsigned char *edidbuf ); -extern void monitor_info_set_imagesize ( unsigned char *edidbuf ); -extern void monitor_info_edid_checksum ( unsigned char *edidbuf ); -extern int reboot_sys_by_fbc_edid_info(); -extern int reboot_sys_by_fbc_uart_panel_info(CFbcCommunication *fbc = NULL); -extern int GetPlatformHaveDDFlag(); - -#define CC_PROJECT_INFO_ITEM_MAX_LEN (64) - -typedef struct project_info_s { - char version[CC_PROJECT_INFO_ITEM_MAX_LEN]; - char panel_type[CC_PROJECT_INFO_ITEM_MAX_LEN]; - char panel_outputmode[CC_PROJECT_INFO_ITEM_MAX_LEN]; - char panel_rev[CC_PROJECT_INFO_ITEM_MAX_LEN]; - char panel_name[CC_PROJECT_INFO_ITEM_MAX_LEN]; - char amp_curve_name[CC_PROJECT_INFO_ITEM_MAX_LEN]; -} project_info_t; - -extern unsigned int CalCRC32(unsigned int crc, const unsigned char *ptr, unsigned int buf_len); -extern int GetProjectInfo(project_info_t *proj_info_ptr, CFbcCommunication *fbcIns = NULL); -extern int getBootEnv(const char *key, char *value, char *def_val); -extern void setBootEnv(const char *key, const char *value); - -//extern void SSMRewriteEdidInfo ( unsigned char *edidbuf ); -//extern int HandleEdid ( int op_type, int op_direct, unsigned char edid_buf[], unsigned char def_buf[] ); -//extern int SSMSetHdmiEdid(); -#define AML_DBG_REGS_IOC_MAGIC 'R' - -typedef struct aml_debug_reg_s { - unsigned int addr; - unsigned int val; - unsigned char mode; -} aml_debug_reg_t; - -typedef struct aml_debug_bit_s { - unsigned int addr; - unsigned int val; - unsigned int start; - unsigned int len; -} aml_debug_bit_t; - -template<typename T1, typename T2> -int ArrayCopy(T1 dst_buf[], T2 src_buf[], int copy_size) -{ - int i = 0; - - for (i = 0; i < copy_size; i++) { - dst_buf[i] = src_buf[i]; - } - - return 0; -}; - -#endif //__TV_MISC_H__ diff --git a/tvapi/libtv/tvutils/zepoll.cpp b/tvapi/libtv/tvutils/zepoll.cpp deleted file mode 100644 index 56f6553..0000000 --- a/tvapi/libtv/tvutils/zepoll.cpp +++ b/dev/null @@ -1,88 +0,0 @@ -#include "zepoll.h" - - -Epoll::Epoll(int _max, int maxevents): max(_max), - epoll_fd(-1), - epoll_timeout(-1), - epoll_maxevents(maxevents), - backEvents(0) -{ - -} - -Epoll::~Epoll() -{ - if (isValid()) { - close(epoll_fd); - } - delete[] backEvents; -} - - -inline -bool Epoll::isValid() const -{ - return epoll_fd > 0; -} - -void Epoll::setTimeout(int timeout) -{ - epoll_timeout = timeout; -} - -inline -void Epoll::setMaxEvents(int maxevents) -{ - epoll_maxevents = maxevents; -} - -inline -const epoll_event *Epoll::events() const -{ - return backEvents; -} - - - -int Epoll::create() -{ - epoll_fd = ::epoll_create(max); - if (isValid()) { - backEvents = new epoll_event[epoll_maxevents]; - } - return epoll_fd; -} - -int Epoll::add(int fd, epoll_event *event) -{ - if (isValid()) { - return ::epoll_ctl(epoll_fd, ADD, fd, event); - } - return -1; - -} - -int Epoll::mod(int fd, epoll_event *event) -{ - if (isValid()) { - return ::epoll_ctl(epoll_fd, MOD, fd, event); - } - return -1; - -} - -int Epoll::del(int fd, epoll_event *event) -{ - if (isValid()) { - return ::epoll_ctl(epoll_fd, DEL, fd, event); - } - return -1; -} - -int Epoll::wait() -{ - if (isValid()) { - return ::epoll_wait(epoll_fd, backEvents, epoll_maxevents, epoll_timeout); - } - return -1; -} diff --git a/tvapi/libtv/tvutils/zepoll.h b/tvapi/libtv/tvutils/zepoll.h deleted file mode 100644 index 3fc6856..0000000 --- a/tvapi/libtv/tvutils/zepoll.h +++ b/dev/null @@ -1,48 +0,0 @@ - -#ifndef EPOLL_H -#define EPOLL_H - -#include <sys/epoll.h> -#include <unistd.h> - - -/** - * @brief The Epoll class 对epoll的封装 - */ -class Epoll { -public: - /** - * - */ - enum EPOLL_OP {ADD = EPOLL_CTL_ADD, MOD = EPOLL_CTL_MOD, DEL = EPOLL_CTL_DEL}; - /** - * 最大的连接数和最大的回传事件数 - */ - Epoll(int _max = 30, int maxevents = 20); - ~Epoll(); - int create(); - int add(int fd, epoll_event *event); - int mod(int fd, epoll_event *event); - int del(int fd, epoll_event *event); - void setTimeout(int timeout); - void setMaxEvents(int maxevents); - int wait(); - const epoll_event *events() const; - const epoll_event &operator[](int index) - { - return backEvents[index]; - } -private: - bool isValid() const; - int max; - int epoll_fd; - int epoll_timeout; - int epoll_maxevents; - epoll_event *backEvents; -}; - - - - -#endif //EPOLL_H - diff --git a/tvapi/libtv/version/version.cpp b/tvapi/libtv/version/version.cpp deleted file mode 100644 index 8e8e82a..0000000 --- a/tvapi/libtv/version/version.cpp +++ b/dev/null @@ -1,94 +0,0 @@ -#include <stdio.h> -#include <string.h> -#include <android/log.h> - -#include "version.h" - -static char gitversionstr[256] = "N/A"; - -static int tvservice_version_info_init(void) -{ - static int info_is_inited = 0; - int dirty_num = 0; - - if (info_is_inited > 0) { - return 0; - } - info_is_inited++; - -#ifdef HAVE_VERSION_INFO - -#ifdef LIBTVSERVICE_GIT_UNCOMMIT_FILE_NUM -#if LIBTVSERVICE_GIT_UNCOMMIT_FILE_NUM>0 - dirty_num = LIBTVSERVICE_GIT_UNCOMMIT_FILE_NUM; -#endif -#endif - -#ifdef LIBTVSERVICE_GIT_VERSION - if (dirty_num > 0) { - snprintf(gitversionstr, 250, "%s-with-%d-dirty-files", LIBTVSERVICE_GIT_VERSION, dirty_num); - } else { - snprintf(gitversionstr, 250, "%s", LIBTVSERVICE_GIT_VERSION); - } -#endif - -#endif - - return 0; -} - -const char *tvservice_get_git_version_info(void) -{ - tvservice_version_info_init(); - return gitversionstr; -} - -const char *tvservice_get_last_chaned_time_info(void) -{ -#ifdef HAVE_VERSION_INFO -#ifdef LIBTVSERVICE_LAST_CHANGED - return LIBTVSERVICE_LAST_CHANGED; -#endif -#endif - return " Unknow "; -} - -const char *tvservice_get_git_branch_info(void) -{ -#ifdef HAVE_VERSION_INFO -#ifdef LIBTVSERVICE_GIT_BRANCH - return LIBTVSERVICE_GIT_BRANCH; -#endif -#endif - return " Unknow "; -} - -const char *tvservice_get_build_time_info(void) -{ -#ifdef HAVE_VERSION_INFO -#ifdef LIBTVSERVICE_BUILD_TIME - return LIBTVSERVICE_BUILD_TIME; -#endif -#endif - return " Unknow "; -} - -const char *tvservice_get_build_name_info(void) -{ -#ifdef HAVE_VERSION_INFO -#ifdef LIBTVSERVICE_BUILD_NAME - return LIBTVSERVICE_BUILD_NAME; -#endif -#endif - return " Unknow "; -} - -const char *tvservice_get_board_version_info(void) -{ -#ifdef HAVE_VERSION_INFO -#ifdef TVAPI_BOARD_VERSION - return TVAPI_BOARD_VERSION; -#endif -#endif - return " Unknow "; -} diff --git a/tvapi/libtv/version/version.h b/tvapi/libtv/version/version.h deleted file mode 100644 index e3259cb..0000000 --- a/tvapi/libtv/version/version.h +++ b/dev/null @@ -1,11 +0,0 @@ -#ifndef __LIBTVSERVICE_VERSION_H__ -#define __LIBTVSERVICE_VERSION_H__ - -extern const char *tvservice_get_git_version_info(void); -extern const char *tvservice_get_last_chaned_time_info(void); -extern const char *tvservice_get_git_branch_info(void); -extern const char *tvservice_get_build_time_info(void); -extern const char *tvservice_get_build_name_info(void); -extern const char *tvservice_get_board_version_info(void); - -#endif //__LIBTVSERVICE_VERSION_H__ diff --git a/tvapi/libtv/vpp/CPQdb.cpp b/tvapi/libtv/vpp/CPQdb.cpp deleted file mode 100644 index f60802d..0000000 --- a/tvapi/libtv/vpp/CPQdb.cpp +++ b/dev/null @@ -1,1974 +0,0 @@ -/* - * CPQdb.cpp - * - * d on: 2011-12-13 - * Author: casey - * - * change 2015.04 - * showbo - */ - -#define LOG_TAG "CPQdb" - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <sys/stat.h> -#include <errno.h> -#include "CPQdb.h" -#include "../tvutils/tvutils.h" -#include "../tvconfig/tvconfig.h" - -#if (PQ_NO_ANDROID == 0) -#include <android/log.h> -#include "CTvLog.h" -#endif - -#if (PQ_NO_ANDROID == 1) -using namespace std; -#endif - -//#define CPQDB_DEBUG - -#define BRIGHTNESS_ID 0 -#define CONTRAST_ID 1 -#define SATURATION_ID 1 -#define HUE_ID 0 -#define SHARPNESS_ID 1 - -//static char *str_buf[256]; - -#define ID_FIELD "TableID" -#define NR_LEVEL_NAME "NRLevel" -#define CM_LEVEL_NAME "CMLevel" -#define LEVEL_NAME "Level" -#define ADC_SETTING "ADC_Settings" -#define CVD2_SETTING "CVD2_Settings" -#define PORT "Port" -#define FORMAT "Format" - -#define CC_LINE_MAX_LEN (1024) - -#define LOG_TAG "CPQdb" -//#define CPQDB_DEBUG - - -/*int get_pq_from_file(const char *file_name, const char *screen_size, char *key_str_buf[]) { - FILE *fp = NULL; - int flag = -1; - char *str = NULL; - char r_line_buf[CC_LINE_MAX_LEN]; - - if (file_name == NULL || screen_size == NULL || key_str_buf == NULL) { - return -1; - } - - fp = fopen(file_name, "r"); - if (fp == NULL) { - LOGE("%s: open file \"%s\" error(%s).\n", "TV", file_name, strerror(errno)); - return -1; - } - - while (fgets(r_line_buf, CC_LINE_MAX_LEN, fp)) { - LOGD("%s, fgets_buf = %s\n","TV", r_line_buf); - if (NULL != strstr(r_line_buf, screen_size)) { - LOGD("%s, screen_size_buf = %s\n","TV", r_line_buf); - str = (char*)malloc(strlen(r_line_buf)); - memset(str, 0, strlen(str)); - if (NULL != str) { - strcpy(str, r_line_buf); - key_str_buf[0] = str; - LOGD("%s, key_str_buf[0] = %s\n","TV", key_str_buf[0]); - } - flag = 0; - break; - } - } - - if (flag != 0) - key_str_buf[0] = NULL; - - fclose(fp); - fp = NULL; - - return flag; - }*/ - -/*int getFileSizeSystemCall(char * strFileName) - { - struct stat temp; - stat(strFileName, &temp); - return temp.st_size; - }*/ - -CPqData::CPqData() -{ - int i = 0, j = 0; - - for (i = 0; i < 15; i++) { - pq_bri_data[i].TotalNode = 0; - pq_bri_data[i].NodeValue = 0; - pq_bri_data[i].IndexValue = 0; - pq_bri_data[i].RegValue = 0; - pq_bri_data[i].step = 0; - - pq_con_data[i].TotalNode = 0; - pq_con_data[i].NodeValue = 0; - pq_con_data[i].IndexValue = 0; - pq_con_data[i].RegValue = 0; - pq_con_data[i].step = 0; - - pq_sat_data[i].TotalNode = 0; - pq_sat_data[i].NodeValue = 0; - pq_sat_data[i].IndexValue = 0; - pq_sat_data[i].RegValue = 0; - pq_sat_data[i].step = 0; - - pq_hue_data[i].TotalNode = 0; - pq_hue_data[i].NodeValue = 0; - pq_hue_data[i].IndexValue = 0; - pq_hue_data[i].RegValue = 0; - pq_hue_data[i].step = 0; - } - - for (i = 0; i < 10; i++) { - pq_sharpness_reg_data[i].length = 0; - pq_sharpness_reg_data_1[i].length = 0; - for (j = 0; j < 50; j++) { - pq_sharpness_reg_data[i].reg_data[j].TotalNode = 0; - pq_sharpness_reg_data_1[i].reg_data[j].TotalNode = 0; - pq_sharpness_reg_data[i].reg_data[j].Value.type = 0; - pq_sharpness_reg_data_1[i].reg_data[j].Value.type = 0; - pq_sharpness_reg_data[i].reg_data[j].Value.addr = 0; - pq_sharpness_reg_data_1[i].reg_data[j].Value.addr = 0; - pq_sharpness_reg_data[i].reg_data[j].Value.mask = 0; - pq_sharpness_reg_data_1[i].reg_data[j].Value.mask = 0; - pq_sharpness_reg_data[i].reg_data[j].Value.val = 0; - pq_sharpness_reg_data_1[i].reg_data[j].Value.val = 0; - pq_sharpness_reg_data[i].reg_data[j].NodeValue = 0; - pq_sharpness_reg_data_1[i].reg_data[j].NodeValue = 0; - pq_sharpness_reg_data[i].reg_data[j].IndexValue = 0; - pq_sharpness_reg_data_1[i].reg_data[j].IndexValue = 0; - pq_sharpness_reg_data[i].reg_data[j].step = 0; - pq_sharpness_reg_data_1[i].reg_data[j].step = 0; - } - } -} - -CPqData::~CPqData() -{ -} - -int CPqData::openPqDB(const char *db_path) -{ - int rval; - project_info_t tmp_info; - char SYSTEM_PQ[128] = { 0 }; - char tmp_buf[128] = { 0 }; - - strcpy(PQ_DB_PATH, db_path); - strcpy(SYSTEM_PQ, "/system/etc/pq.db"); - - if (GetProjectInfo(&tmp_info) == 0) { - strcpy(tmp_buf, "/system/etc/"); - strcat(tmp_buf, tmp_info.panel_type); - strcat(tmp_buf, ".db"); - if (access(tmp_buf, 0) == 0) { - strncpy(SYSTEM_PQ, tmp_buf, sizeof(SYSTEM_PQ) - 1); - } - } - - LOGD("openPqDB path = %s = %s", db_path, PQ_DB_PATH); - if (access(PQ_DB_PATH, 0) < 0) { - CFile file(SYSTEM_PQ); - if (file.copyTo(PQ_DB_PATH) != 0) { - LOGE("%s, copy file \"%s\" to \"%s\" error", __FUNCTION__, SYSTEM_PQ, PQ_DB_PATH); - return -1; - } else { - LOGD("%s, copy file \"%s\" to \"%s\" ok", __FUNCTION__, SYSTEM_PQ, PQ_DB_PATH); - } - } - - closeDb(); - rval = openDb(PQ_DB_PATH); - - char *err; - bool isOk = integrityCheck(); - if (!isOk) { - CFile file(SYSTEM_PQ); - if (file.copyTo(PQ_DB_PATH) != 0) { - LOGE("%s, copy file = %s , error", __FUNCTION__, SYSTEM_PQ); - return -1; - } else { - closeDb(); - rval = openDb(PQ_DB_PATH); - LOGD("%s, copy file = %s , ok", __FUNCTION__, SYSTEM_PQ); - } - } - return rval; -} -int CPqData::reopenDB() -{ - int rval = openDb(PQ_DB_PATH); - return rval; -} - -int CPqData::getRegValues(const char *table_name, tvin_port_t source, tvin_sig_fmt_t signal, - is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt __unused, am_regs_t *regs) -{ - CSqlite::Cursor c_tablelist, c_reg_list; - int index_am_reg = 0; - char sqlmaster[256]; - int mode = is2dOr3d;//Check2Dor3D(status, trans_fmt); - if (table_name == NULL || !strlen(table_name)) { - LOGE("%s, table_name is null\n", __FUNCTION__); - return index_am_reg; - } - - getSqlParams(__FUNCTION__, sqlmaster, - "select TableName from %s where " - "TVIN_PORT = %d and " - "TVIN_SIG_FMT = %d and " - "TVIN_TRANS_FMT = %d ;", table_name, source, signal, mode); - this->select(sqlmaster, c_tablelist); - if (c_tablelist.moveToFirst()) { //for table list - do { - getSqlParams(__FUNCTION__, sqlmaster, - "select RegType, RegAddr, RegMask, RegValue from %s;", - c_tablelist.getString(0).string()); - this->select(sqlmaster, c_reg_list); - - if (c_reg_list.moveToFirst()) { //reg list for each table - int index_type = 0;//c_reg_list.getColumnIndex("RegType"); - int index_addr = 1;//c_reg_list.getColumnIndex("RegAddr"); - int index_mask = 2;//c_reg_list.getColumnIndex("RegMask"); - int index_val = 3;//c_reg_list.getColumnIndex("RegValue"); - do { - regs->am_reg[index_am_reg].type = c_reg_list.getUInt(index_type); - regs->am_reg[index_am_reg].addr = c_reg_list.getUInt(index_addr); - regs->am_reg[index_am_reg].mask = c_reg_list.getUInt(index_mask); - regs->am_reg[index_am_reg].val = c_reg_list.getUInt(index_val); - index_am_reg++; - } while (c_reg_list.moveToNext()); - } - } while (c_tablelist.moveToNext()); - } - // - regs->length = index_am_reg; - LOGD("%s, length = %d", __FUNCTION__, regs->length); - return index_am_reg; -} - -int CPqData::getRegValuesByValue(const char *name, const char *f_name, const char *f2_name, - const int val, const int val2, am_regs_t *regs) -{ - CSqlite::Cursor c_reg_list; - char sqlmaster[256]; - int rval = -1; - //first get table name - if ((strlen(f2_name) == 0) && (val2 == 0)) - getSqlParams(__FUNCTION__, sqlmaster, - "select RegType, RegAddr, RegMask, RegValue from %s where %s = %d;", name, f_name, - val); - else - getSqlParams(__FUNCTION__, sqlmaster, - "select RegType, RegAddr, RegMask, RegValue from %s where %s = %d and %s = %d;", - name, f_name, val, f2_name, val2); - - rval = this->select(sqlmaster, c_reg_list); - int count = c_reg_list.getCount(); - if (count > REGS_MAX_NUMBER) { - LOGD("%s, regs is too more, in pq.db count = %d", __FUNCTION__, count); - return -1; - } - int index_am_reg = 0; - if (c_reg_list.moveToFirst()) { //reg list for each table - int index_type = 0;//c_reg_list.getColumnIndex("RegType"); - int index_addr = 1;//c_reg_list.getColumnIndex("RegAddr"); - int index_mask = 2;//c_reg_list.getColumnIndex("RegMask"); - int index_val = 3;//c_reg_list.getColumnIndex("RegValue"); - do { - regs->am_reg[index_am_reg].type = c_reg_list.getUInt(index_type); - regs->am_reg[index_am_reg].addr = c_reg_list.getUInt(index_addr); - regs->am_reg[index_am_reg].mask = c_reg_list.getUInt(index_mask); - regs->am_reg[index_am_reg].val = c_reg_list.getUInt(index_val); - index_am_reg++; - } while (c_reg_list.moveToNext()); - } else - rval = -1; - // - regs->length = index_am_reg; - LOGD("%s, length = %d", __FUNCTION__, regs->length); - return rval; -} - -int CPqData::getRegValuesByValue_long(const char *name, const char *f_name, const char *f2_name, - const int val, const int val2, am_regs_t *regs, am_regs_t *regs_1) -{ - CSqlite::Cursor c_reg_list; - char sqlmaster[256]; - int rval = -1; - //first get table name - if ((strlen(f2_name) == 0) && (val2 == 0)) - getSqlParams(__FUNCTION__, sqlmaster, - "select RegType, RegAddr, RegMask, RegValue from %s where %s = %d;", name, f_name, - val); - else - getSqlParams(__FUNCTION__, sqlmaster, - "select RegType, RegAddr, RegMask, RegValue from %s where %s = %d and %s = %d;", - name, f_name, val, f2_name, val2); - - rval = this->select(sqlmaster, c_reg_list); - - int index_am_reg = 0; - int count = c_reg_list.getCount(); - if (count > 1024) { - LOGD("%s, regs is too more, in pq.db count = %d", __FUNCTION__, count); - return -1; - } - if (c_reg_list.moveToFirst()) { //reg list for each table - int index_type = 0;//c_reg_list.getColumnIndex("RegType"); - int index_addr = 1;//c_reg_list.getColumnIndex("RegAddr"); - int index_mask = 2;//c_reg_list.getColumnIndex("RegMask"); - int index_val = 3;//c_reg_list.getColumnIndex("RegValue"); - do { - if (index_am_reg < 512) { - regs->am_reg[index_am_reg].type = c_reg_list.getUInt(index_type); - regs->am_reg[index_am_reg].addr = c_reg_list.getUInt(index_addr); - regs->am_reg[index_am_reg].mask = c_reg_list.getUInt(index_mask); - regs->am_reg[index_am_reg].val = c_reg_list.getUInt(index_val); - } else if (index_am_reg >= 512 && index_am_reg < 1024) { - regs_1->am_reg[index_am_reg - 512].type = c_reg_list.getUInt(index_type); - regs_1->am_reg[index_am_reg - 512].addr = c_reg_list.getUInt(index_addr); - regs_1->am_reg[index_am_reg - 512].mask = c_reg_list.getUInt(index_mask); - regs_1->am_reg[index_am_reg - 512].val = c_reg_list.getUInt(index_val); - } else { - } - index_am_reg++; - } while (c_reg_list.moveToNext()); - } else - rval = -1; - // - if (count < 512) { - regs->length = index_am_reg; - } else if (index_am_reg >= 512 && index_am_reg < 1024) { - regs->length = 512; - regs_1->length = index_am_reg - 512; - } - LOGD("%s, length = %d", __FUNCTION__, index_am_reg); - return rval; -} - -int CPqData::PQ_GetBaseColorParams(vpp_color_basemode_t basemode, tvin_port_t source_port, - tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, - tvin_trans_fmt_t trans_fmt __unused, am_regs_t *regs) -{ - CSqlite::Cursor c; - char sqlmaster[256]; - int mode = is2dOr3d;//Check2Dor3D(status, trans_fmt); - int rval = -1; - getSqlParams(__FUNCTION__, sqlmaster, - "select TableName from GeneralColormanagementTable where " - "TVIN_PORT = %d and " - "TVIN_SIG_FMT = %d and " - "TVIN_TRANS_FMT = %d ;", source_port, sig_fmt, mode); - - this->select(sqlmaster, c); - - if (c.moveToFirst()) { - int index_TableName = 0;//c.getColumnIndex("TableName"); - rval = getRegValuesByValue(c.getString(index_TableName), CM_LEVEL_NAME, "", (int) basemode, - 0, regs); - } - return rval; -} - -int CPqData::PQ_GetCM2Params(vpp_color_management2_t basemode, tvin_port_t source_port, - tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, - tvin_trans_fmt_t trans_fmt __unused, am_regs_t *regs) -{ - CSqlite::Cursor c; - char sqlmaster[256]; - int mode = is2dOr3d;//Check2Dor3D(status, trans_fmt); - int rval = -1; - if (source_port >= TVIN_PORT_CVBS0 && source_port <= TVIN_PORT_CVBS7) { - if (source_port != TVIN_PORT_CVBS3) { - source_port = TVIN_PORT_CVBS1; - } - } else if (source_port >= TVIN_PORT_HDMI0 && source_port <= TVIN_PORT_HDMI7) { - source_port = TVIN_PORT_HDMI0; - } else if (source_port > TVIN_PORT_DTV || source_port < TVIN_PORT_NULL) { - source_port = TVIN_PORT_MPEG0; - } - - if (sig_fmt >= TVIN_SIG_FMT_MAX) { - sig_fmt = TVIN_SIG_FMT_NULL; - } - - getSqlParams(__FUNCTION__, sqlmaster, "select TableName from GeneralCM2Table where " - "TVIN_PORT = %d and " - "TVIN_SIG_FMT = %d and " - "TVIN_TRANS_FMT = %d ;", source_port, sig_fmt, mode); - - rval = this->select(sqlmaster, c); - - if (c.moveToFirst()) { - int index_TableName = 0;//c.getColumnIndex("TableName"); - rval = getRegValuesByValue(c.getString(index_TableName), CM_LEVEL_NAME, "", (int) basemode, - 0, regs); - } - return rval; -} - -int CPqData::PQ_GetNR2Params(vpp_noise_reduction2_mode_t nr_mode, tvin_port_t source_port, - tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, - tvin_trans_fmt_t trans_fmt __unused, am_regs_t *regs) -{ - CSqlite::Cursor c; - char sqlmaster[256]; - int mode = is2dOr3d;//Check2Dor3D(status, trans_fmt); - int rval = -1; - - if (source_port >= TVIN_PORT_CVBS0 && source_port <= TVIN_PORT_CVBS7) { - if (source_port != TVIN_PORT_CVBS3) { - source_port = TVIN_PORT_CVBS1; - } - } else if (source_port >= TVIN_PORT_HDMI0 && source_port <= TVIN_PORT_HDMI7) { - source_port = TVIN_PORT_HDMI0; - } else if (source_port > TVIN_PORT_DTV || source_port < TVIN_PORT_NULL) { - source_port = TVIN_PORT_MPEG0; - } - - getSqlParams(__FUNCTION__, sqlmaster, "select TableName from GeneralNR2Table where " - "TVIN_PORT = %d and " - "TVIN_SIG_FMT = %d and " - "TVIN_TRANS_FMT = %d ;", source_port, sig_fmt, mode); - - rval = this->select(sqlmaster, c); - - if (c.moveToFirst()) { - int index_TableName = 0;//c.getColumnIndex("TableName"); - rval = getRegValuesByValue(c.getString(index_TableName), LEVEL_NAME, "", (int) nr_mode, 0, - regs); - } - return rval; -} - -int CPqData::PQ_GetXVYCCParams(vpp_xvycc_mode_t xvycc_mode, tvin_port_t source_port, - tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, - tvin_trans_fmt_t trans_fmt __unused, am_regs_t *regs, - am_regs_t *regs_1) -{ - CSqlite::Cursor c; - char sqlmaster[256]; - int mode = is2dOr3d;//Check2Dor3D(status, trans_fmt); - int rval = -1; - - if (source_port >= TVIN_PORT_CVBS0 && source_port <= TVIN_PORT_CVBS7) { - if (source_port != TVIN_PORT_CVBS3) { - source_port = TVIN_PORT_CVBS1; - } - } else if (source_port >= TVIN_PORT_HDMI0 && source_port <= TVIN_PORT_HDMI7) { - source_port = TVIN_PORT_HDMI0; - } else if (source_port > TVIN_PORT_DTV || source_port < TVIN_PORT_NULL) { - source_port = TVIN_PORT_MPEG0; - } - - getSqlParams(__FUNCTION__, sqlmaster, "select TableName from GeneralXVYCCTable where " - "TVIN_PORT = %d and " - "TVIN_SIG_FMT = %d and " - "TVIN_TRANS_FMT = %d ;", source_port, sig_fmt, mode); - - rval = this->select(sqlmaster, c); - - if (c.moveToFirst()) { - int index_TableName = 0;//c.getColumnIndex("TableName"); - rval = getRegValuesByValue_long(c.getString(index_TableName), LEVEL_NAME, "", - (int) xvycc_mode, 0, regs, regs_1); - } - return rval; -} - -int CPqData::PQ_GetMCDIParams(vpp_mcdi_mode_t mcdi_mode, tvin_port_t source_port, - tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, - tvin_trans_fmt_t trans_fmt __unused, am_regs_t *regs) -{ - CSqlite::Cursor c; - char sqlmaster[256]; - int mode = is2dOr3d;//Check2Dor3D(status, trans_fmt); - int rval = -1; - - if (source_port >= TVIN_PORT_CVBS0 && source_port <= TVIN_PORT_CVBS7) { - if (source_port != TVIN_PORT_CVBS3) { - source_port = TVIN_PORT_CVBS1; - } - } else if (source_port >= TVIN_PORT_HDMI0 && source_port <= TVIN_PORT_HDMI7) { - source_port = TVIN_PORT_HDMI0; - } else if (source_port > TVIN_PORT_DTV || source_port < TVIN_PORT_NULL) { - source_port = TVIN_PORT_MPEG0; - } - - getSqlParams(__FUNCTION__, sqlmaster, "select TableName from GeneralMCDITable where " - "TVIN_PORT = %d and " - "TVIN_SIG_FMT = %d and " - "TVIN_TRANS_FMT = %d ;", source_port, sig_fmt, mode); - - rval = this->select(sqlmaster, c); - - if (c.moveToFirst()) { - int index_TableName = 0;//c.getColumnIndex("TableName"); - rval = getRegValuesByValue(c.getString(index_TableName), LEVEL_NAME, "", (int) mcdi_mode, - 0, regs); - } - return rval; -} - -int CPqData::PQ_GetDeblockParams(vpp_deblock_mode_t deb_mode, tvin_port_t source_port, - tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, - tvin_trans_fmt_t trans_fmt __unused, am_regs_t *regs) -{ - CSqlite::Cursor c; - char sqlmaster[256]; - int mode = is2dOr3d;//Check2Dor3D(status, trans_fmt); - int rval = -1; - - getSqlParams(__FUNCTION__, sqlmaster, "select TableName from GeneralDeblockTable where " - "TVIN_PORT = %d and " - "TVIN_SIG_FMT = %d and " - "TVIN_TRANS_FMT = %d ;", source_port, sig_fmt, is2dOr3d); - - rval = this->select(sqlmaster, c); - - if (c.moveToFirst()) { - rval = getRegValuesByValue(c.getString(0), LEVEL_NAME, "", (int)deb_mode, 0, regs); - } - return rval; -} - -int CPqData::PQ_GetColorTemperatureParams(vpp_color_temperature_mode_t Tempmode, - tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, tvin_trans_fmt_t trans_fmt, - tcon_rgb_ogo_t *params) -{ - CSqlite::Cursor c; - char sqlmaster[256]; - - int rval = -1; - - //default - params->en = 1; - params->r_pre_offset = 0; - params->g_pre_offset = 0; - params->b_pre_offset = 0; - params->r_gain = 1024; - params->g_gain = 1024; - params->b_gain = 1024; - params->r_post_offset = 0; - params->g_post_offset = 0; - params->b_post_offset = 0; - - getSqlParams(__FUNCTION__, sqlmaster, "select TableName from GeneralWhiteBalanceTable where " - "TVIN_PORT = %d and " - "TVIN_SIG_FMT = %d and " - "TVIN_TRANS_FMT = %d;", source_port, sig_fmt, trans_fmt); - - rval = this->select(sqlmaster, c); - - if (c.moveToFirst()) { - int index_TableName = 0;//c.getColumnIndex("TableName"); - getSqlParams( - __FUNCTION__, - sqlmaster, - "select Enable, R_Pre_Offset, G_Pre_Offset, B_Pre_Offset, R_Gain, G_Gain, B_Gain, R_Post_Offset, G_Post_Offset, B_Post_Offset from %s where " - "Level = %d and def = 0;", c.getString(index_TableName).string(), - (int) Tempmode); - - rval = this->select(sqlmaster, c); - - if (c.moveToFirst()) { - params->en = c.getInt(0);//index 0 - params->r_pre_offset = c.getInt(1); - params->g_pre_offset = c.getInt(2); - params->b_pre_offset = c.getInt(3); - params->r_gain = c.getInt(4); - params->g_gain = c.getInt(5); - params->b_gain = c.getInt(6); - params->r_post_offset = c.getInt(7); - params->g_post_offset = c.getInt(8); - params->b_post_offset = c.getInt(9);//index 9 - } - } - return rval; -} -int CPqData::PQ_SetColorTemperatureParams(vpp_color_temperature_mode_t Tempmode, - tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, tvin_trans_fmt_t trans_fmt, - tcon_rgb_ogo_t params) -{ - CSqlite::Cursor c; - char sqlmaster[256]; - char sql[512]; - - int rval = -1; - - getSqlParams(__FUNCTION__, sqlmaster, "select TableName from GeneralWhiteBalanceTable where " - "TVIN_PORT = %d and " - "TVIN_SIG_FMT = %d and " - "TVIN_TRANS_FMT = %d;", source_port, sig_fmt, trans_fmt); - - rval = this->select(sqlmaster, c); - - if (c.moveToFirst()) { - int index_TableName = 0;//c.getColumnIndex("TableName"); - getSqlParams( - __FUNCTION__, - sql, - "update %s set Enable = %d, " - "R_Pre_Offset = %d, G_Pre_Offset = %d, B_Pre_Offset = %d, R_Gain = %d, G_Gain = %d, B_Gain = %d, " - "R_Post_Offset = %d, G_Post_Offset = %d, B_Post_Offset = %d where Level = %d and def = 0;", - c.getString(index_TableName).string(), params.en, params.r_pre_offset, - params.g_pre_offset, params.b_pre_offset, params.r_gain, params.g_gain, - params.b_gain, params.r_post_offset, params.g_post_offset, params.b_post_offset, - Tempmode); - - rval = this->exeSql(sql); - } - return rval; -} - -int CPqData::PQ_ResetAllColorTemperatureParams(void) -{ - CSqlite::Cursor c; - char sqlmaster[512]; - - int rval = -1; - - getSqlParams(__FUNCTION__, sqlmaster, - "select distinct TableName from GeneralWhiteBalanceTable ;"); - - rval = this->select(sqlmaster, c); - - if (c.moveToFirst()) { - int index_TableName = 0;//c.getColumnIndex("TableName"); - do { //delete - getSqlParams( - __FUNCTION__, - sqlmaster, - "delete from %s where def = 0;" - "insert into %s( Level , Enable , R_Pre_Offset, G_Pre_Offset, B_Pre_Offset, R_Gain, G_Gain, B_Gain, R_Post_Offset, G_Post_Offset, B_Post_Offset, def ) " - "select Level, Enable, R_Pre_Offset, G_Pre_Offset, B_Pre_Offset, R_Gain, G_Gain, B_Gain, R_Post_Offset, G_Post_Offset, B_Post_Offset, 0 from %s where def = 1;", - c.getString(index_TableName).string(), c.getString(index_TableName).string(), - c.getString(index_TableName).string()); - rval = this->exeSql(sqlmaster); - } while (c.moveToNext()); - } - return rval; -} - -int CPqData::PQ_GetDNLPParams(tvin_port_t source_port, tvin_sig_fmt_t fmt, is_3d_type_t is2dOr3d, - tvin_trans_fmt_t trans_fmt __unused, ve_dnlp_t *params, - ve_dnlp_table_t *newParams, int *dnlpFlag) -{ - CSqlite::Cursor c; - char sqlmaster[256]; - int mode = is2dOr3d;//Check2Dor3D(status, trans_fmt); - int rval = -1; - //default - params->en = 0; - params->rt = VE_DNLP_RT_0S; - params->rl = VE_DNLP_RL_01; - params->black = VE_DNLP_EXT_00; - params->white = VE_DNLP_EXT_00; - - mode = is2dOr3d;//Check2Dor3D(status, trans_fmt);//(status << 16)|trans_fmt; - - getSqlParams(__FUNCTION__, sqlmaster, "select TableName from GeneralDNLPTable where " - "TVIN_PORT = %d and " - "TVIN_SIG_FMT = %d and " - "TVIN_TRANS_FMT = %d ;", source_port, fmt, mode); - - rval = this->select(sqlmaster, c); - - if (c.moveToFirst()) { - int index_TableName = 0;//c.getColumnIndex("TableName"); - getSqlParams(__FUNCTION__, sqlmaster, "select value from %s ", - c.getString(index_TableName).string()); - - rval = this->select(sqlmaster, c); - int count = c.getCount(); - if (count == 1) { - int val; - c.moveToFirst(); - val = c.getInt(0);//index 0 - *dnlpFlag = 0; - params->en = (val & 0xf0000000) >> 28; - params->rt = (ve_dnlp_rt_e)((val & 0x0f000000) >> 24); - params->rl = (ve_dnlp_rl_e)((val & 0x00ff0000) >> 16); - params->black = (ve_dnlp_ext_e)((val & 0x0000ff00) >> 8); - params->white = (ve_dnlp_ext_e)((val & 0x000000ff) >> 0); - } else if (count > 1) { - c.moveToFirst(); - c.moveToNext(); - *dnlpFlag = 1; - newParams->en = c.getInt(0); - c.moveToNext(); - newParams->method = c.getInt(0); - c.moveToNext(); - newParams->cliprate = c.getInt(0); - c.moveToNext(); - newParams->lowrange = c.getInt(0); - c.moveToNext(); - newParams->hghrange = c.getInt(0); - c.moveToNext(); - newParams->lowalpha = c.getInt(0); - c.moveToNext(); - newParams->midalpha = c.getInt(0); - c.moveToNext(); - newParams->hghalpha = c.getInt(0); - c.moveToNext(); - newParams->adj_level = c.getInt(0); - c.moveToNext(); - newParams->new_adj_level = c.getInt(0); - c.moveToNext(); - newParams->new_mvreflsh = c.getInt(0); - c.moveToNext(); - newParams->new_gmma_rate = c.getInt(0); - c.moveToNext(); - newParams->new_lowalpha = c.getInt(0); - c.moveToNext(); - newParams->new_hghalpha = c.getInt(0); - c.moveToNext(); - newParams->new_sbgnbnd = c.getInt(0); - c.moveToNext(); - newParams->new_sendbnd = c.getInt(0); - c.moveToNext(); - newParams->new_clashBgn = c.getInt(0); - c.moveToNext(); - newParams->new_clashEnd = c.getInt(0); - c.moveToNext(); - newParams->new_cliprate = c.getInt(0); - c.moveToNext(); - newParams->new_mtdbld_rate = c.getInt(0); - c.moveToNext(); - newParams->new_blkgma_rate = c.getInt(0); - } - } - return rval; -} - -int CPqData::PQ_SetNoLineAllBrightnessParams(tv_source_input_type_t source_type, int osd0, - int osd25, int osd50, int osd75, int osd100) -{ - return SetNonlinearMapping(TVPQ_DATA_BRIGHTNESS, source_type, osd0, osd25, osd50, osd75, osd100); -} - -int CPqData::PQ_GetNoLineAllBrightnessParams(tv_source_input_type_t source_type, int *osd0, - int *osd25, int *osd50, int *osd75, int *osd100) -{ - int osdvalue[5] = { 0 }; - int rval; - rval = GetNonlinearMappingByOSDFac(TVPQ_DATA_BRIGHTNESS, source_type, osdvalue); - *osd0 = osdvalue[0]; - *osd25 = osdvalue[1]; - *osd50 = osdvalue[2]; - *osd75 = osdvalue[3]; - *osd100 = osdvalue[4]; - if (rval) { - LOGE("PQ_GetNoLineAllBrightnessParams Error %d\n", rval); - } - return rval; - -} - -int CPqData::PQ_GetBrightnessParams(tvin_port_t source_port, tvin_sig_fmt_t sig_fmt __unused, - is_3d_type_t is2dOr3d __unused, tvin_trans_fmt_t trans_fmt __unused, - int level, int *params) -{ - int val; - - GetNonlinearMapping(TVPQ_DATA_BRIGHTNESS, source_port, level, &val); - *params = CaculateLevelParam(pq_bri_data, bri_nodes, val); - return 0; - -} - -int CPqData::PQ_SetBrightnessParams(tvin_port_t source_port __unused, tvin_sig_fmt_t sig_fmt __unused, - is_3d_type_t is2dOr3d __unused, tvin_trans_fmt_t trans_fmt __unused, - int level __unused, int params __unused) -{ - return 0; -} - -int CPqData::PQ_SetNoLineAllContrastParams(tv_source_input_type_t source_type, int osd0, int osd25, - int osd50, int osd75, int osd100) -{ - return SetNonlinearMapping(TVPQ_DATA_CONTRAST, source_type, osd0, osd25, osd50, osd75, osd100); -} - -int CPqData::PQ_GetNoLineAllContrastParams(tv_source_input_type_t source_type, int *osd0, - int *osd25, int *osd50, int *osd75, int *osd100) -{ - int osdvalue[5] = { 0 }; - int rval; - rval = GetNonlinearMappingByOSDFac(TVPQ_DATA_CONTRAST, source_type, osdvalue); - *osd0 = osdvalue[0]; - *osd25 = osdvalue[1]; - *osd50 = osdvalue[2]; - *osd75 = osdvalue[3]; - *osd100 = osdvalue[4]; - if (rval) { - LOGE("PQ_GetNoLineAllContrastParams Error %d\n", rval); - } - return rval; -} - -int CPqData::PQ_GetContrastParams(tvin_port_t source_port, tvin_sig_fmt_t sig_fmt __unused, - is_3d_type_t is2dOr3d __unused, tvin_trans_fmt_t trans_fmt __unused, - int level, int *params) -{ - int val; - - GetNonlinearMapping(TVPQ_DATA_CONTRAST, source_port, level, &val); - *params = CaculateLevelParam(pq_con_data, con_nodes, val); - return 0; -} - -int CPqData::PQ_SetContrastParams(tvin_port_t source_port __unused, tvin_sig_fmt_t sig_fmt __unused, - is_3d_type_t is2dOr3d __unused, tvin_trans_fmt_t trans_fmt __unused, - int level __unused, int params __unused) -{ - return 0; -} - -int CPqData::PQ_SetNoLineAllSaturationParams(tv_source_input_type_t source_type, int osd0, - int osd25, int osd50, int osd75, int osd100) -{ - return SetNonlinearMapping(TVPQ_DATA_SATURATION, source_type, osd0, osd25, osd50, osd75, osd100); -} - -int CPqData::PQ_GetNoLineAllSaturationParams(tv_source_input_type_t source_type, int *osd0, - int *osd25, int *osd50, int *osd75, int *osd100) -{ - int osdvalue[5] = { 0 }; - int rval; - rval = GetNonlinearMappingByOSDFac(TVPQ_DATA_SATURATION, source_type, osdvalue); - *osd0 = osdvalue[0]; - *osd25 = osdvalue[1]; - *osd50 = osdvalue[2]; - *osd75 = osdvalue[3]; - *osd100 = osdvalue[4]; - if (rval) { - LOGE("PQ_GetNoLineAllSaturationParams Error %d\n", rval); - } - return rval; -} - -int CPqData::PQ_GetSaturationParams(tvin_port_t source_port, tvin_sig_fmt_t sig_fmt __unused, - is_3d_type_t is2dOr3d __unused, tvin_trans_fmt_t trans_fmt __unused, - int level, int *params) -{ - int val; - - GetNonlinearMapping(TVPQ_DATA_SATURATION, source_port, level, &val); - *params = CaculateLevelParam(pq_sat_data, sat_nodes, val); - return 0; -} - -int CPqData::PQ_SetSaturationParams(tvin_port_t source_port __unused, tvin_sig_fmt_t sig_fmt __unused, - is_3d_type_t is2dOr3d __unused, tvin_trans_fmt_t trans_fmt __unused, - int level __unused, int params __unused) -{ - return 0; -} - -int CPqData::PQ_SetNoLineAllHueParams(tv_source_input_type_t source_type, int osd0, int osd25, - int osd50, int osd75, int osd100) -{ - return SetNonlinearMapping(TVPQ_DATA_HUE, source_type, osd0, osd25, osd50, osd75, osd100); -} - -int CPqData::PQ_GetNoLineAllHueParams(tv_source_input_type_t source_type, int *osd0, int *osd25, - int *osd50, int *osd75, int *osd100) -{ - int osdvalue[5] = { 0 }; - int rval; - rval = GetNonlinearMappingByOSDFac(TVPQ_DATA_HUE, source_type, osdvalue); - *osd0 = osdvalue[0]; - *osd25 = osdvalue[1]; - *osd50 = osdvalue[2]; - *osd75 = osdvalue[3]; - *osd100 = osdvalue[4]; - if (rval) { - LOGE("PQ_GetNoLineAllHueParams Error %d\n", rval); - } - return rval; -} - -int CPqData::PQ_GetHueParams(tvin_port_t source_port, tvin_sig_fmt_t sig_fmt __unused, - is_3d_type_t is2dOr3d __unused, tvin_trans_fmt_t trans_fmt __unused, - int level, int *params) -{ - int val; - - GetNonlinearMapping(TVPQ_DATA_HUE, source_port, level, &val); - *params = CaculateLevelParam(pq_hue_data, hue_nodes, val); - return 0; -} - -int CPqData::PQ_SetHueParams(tvin_port_t source_port __unused, tvin_sig_fmt_t sig_fmt __unused, - is_3d_type_t is2dOr3d __unused, tvin_trans_fmt_t trans_fmt __unused, - int level __unused, int params __unused) -{ - return 0; -} - -int CPqData::PQ_SetNoLineAllSharpnessParams(tv_source_input_type_t source_type, int osd0, - int osd25, int osd50, int osd75, int osd100) -{ - return SetNonlinearMapping(TVPQ_DATA_SHARPNESS, source_type, osd0, osd25, osd50, osd75, osd100); -} - -int CPqData::PQ_GetNoLineAllSharpnessParams(tv_source_input_type_t source_type, int *osd0, - int *osd25, int *osd50, int *osd75, int *osd100) -{ - int osdvalue[5] = { 0 }; - int rval; - rval = GetNonlinearMappingByOSDFac(TVPQ_DATA_SHARPNESS, source_type, osdvalue); - *osd0 = osdvalue[0]; - *osd25 = osdvalue[1]; - *osd50 = osdvalue[2]; - *osd75 = osdvalue[3]; - *osd100 = osdvalue[4]; - if (rval) { - LOGE("PQ_GetNoLineAllSharpnessParams Error %d\n", rval); - } - return rval; -} - -int CPqData::PQ_GetSharpnessParams(tvin_port_t source_port, tvin_sig_fmt_t sig_fmt __unused, - is_3d_type_t is2dOr3d __unused, tvin_trans_fmt_t trans_fmt __unused, - int level, am_regs_t *regs, am_regs_t *regs_l) -{ - int val; - - GetNonlinearMapping(TVPQ_DATA_SHARPNESS, source_port, level, &val); - LOGD("val = %d\n", val); - *regs = CaculateLevelRegsParam(pq_sharpness_reg_data, val, 0); - if (sha_diff_flag == 6) { - *regs_l = CaculateLevelRegsParam(pq_sharpness_reg_data_1, val, 1); - } - return 0; -} - -int CPqData::PQ_GetPLLParams(tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, am_regs_t *regs) -{ - int ret = -1; - int i = 0; - - ret = getRegValuesByValue(ADC_SETTING, PORT, FORMAT, source_port, sig_fmt, regs); -#ifdef CPQDB_DEBUG - if (ret == 0) { - for (i = 0; i < regs->length; i++) { - LOGD("%s, =================================================", "TV"); - LOGD("%s, regData.am_reg[%d].type = %d", "TV", i, regs->am_reg[i].type); - LOGD("%s, regData.am_reg[%d].addr = %d", "TV", i, regs->am_reg[i].addr); - LOGD("%s, regData.am_reg[%d].mask = %d", "TV", i, regs->am_reg[i].mask); - LOGD("%s, regData.am_reg[%d].val = %d", "TV", i, regs->am_reg[i].val); - } - } -#endif - if (regs->am_reg[0].val == 0 && regs->am_reg[1].val == 0 && regs->am_reg[2].val == 0 - && regs->am_reg[3].val == 0) { - LOGE("%s,db's value is all zeros, that's not OK!!!\n", "TV"); - return -1; - } - return ret; -} - -int CPqData::PQ_GetCVD2Params(tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, am_regs_t *regs) -{ - int ret = -1; - int i = 0; - ret = getRegValuesByValue(CVD2_SETTING, PORT, FORMAT, source_port, sig_fmt, regs); -#ifdef CPQDB_DEBUG - if (ret == 0) { - for (i = 0; i < regs->length; i++) { - LOGD("%s, =================================================", "TV"); - LOGD("%s, regData.am_reg[%d].type = %d", "TV", i, regs->am_reg[i].type); - LOGD("%s, regData.am_reg[%d].addr = %d", "TV", i, regs->am_reg[i].addr); - LOGD("%s, regData.am_reg[%d].mask = %d", "TV", i, regs->am_reg[i].mask); - LOGD("%s, regData.am_reg[%d].val = %d", "TV", i, regs->am_reg[i].val); - } - } -#endif - if (regs->am_reg[0].val == 0 && regs->am_reg[1].val == 0 && regs->am_reg[2].val == 0 - && regs->am_reg[3].val == 0) { - LOGE("%s,db's value is all zeros, that's not OK!!!\n", "TV"); - return -1; - } - - return ret; -} - -int CPqData::PQ_SetSharpnessParams(tvin_port_t source_port __unused, tvin_sig_fmt_t sig_fmt __unused, - is_3d_type_t is2dOr3d __unused, tvin_trans_fmt_t trans_fmt __unused, - int level __unused, am_regs_t regs __unused) -{ - return 0; -} - -int CPqData::PQ_SetNoLineAllVolumeParams(tv_source_input_type_t source_type, int osd0, int osd25, - int osd50, int osd75, int osd100) -{ - return SetNonlinearMapping(TVPQ_DATA_VOLUME, source_type, osd0, osd25, osd50, osd75, osd100); -} - -int CPqData::PQ_GetNoLineAllVolumeParams(tv_source_input_type_t source_type, int *osd0, int *osd25, - int *osd50, int *osd75, int *osd100) -{ - int osdvalue[5] = { 0 }; - int rval; - rval = GetNonlinearMappingByOSDFac(TVPQ_DATA_VOLUME, source_type, osdvalue); - *osd0 = osdvalue[0]; - *osd25 = osdvalue[1]; - *osd50 = osdvalue[2]; - *osd75 = osdvalue[3]; - *osd100 = osdvalue[4]; - if (rval) { - LOGE("PQ_GetNoLineAllSharpnessParams Error %d\n", rval); - } - return rval; -} - -int CPqData::PQ_SetVolumeParams(tvin_port_t source_port __unused, tvin_sig_fmt_t sig_fmt __unused, - is_3d_type_t is2dOr3d __unused, tvin_trans_fmt_t trans_fmt __unused, - int level __unused, int params __unused) -{ - return 0; -} - -int CPqData::PQ_ResetAllNoLineParams(void) -{ - int rval; - char sqlmaster[256]; - char *err = NULL; - - getSqlParams( - __FUNCTION__, - sqlmaster, - "delete from NonlinearMapping; " - "insert into NonlinearMapping(TVIN_PORT, Item_ID, Level, Value) select TVIN_PORT, Item_ID, Level, Value from NonlinearMapping_Default;"); - - rval = this->exeSql(sqlmaster); - return rval; -} - -int CPqData::PQ_GetNoiseReductionParams(vpp_noise_reduction_mode_t nr_mode, - tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, - tvin_trans_fmt_t trans_fmt __unused, int *params) -{ - CSqlite::Cursor c; - char sqlmaster[256]; - int mode = is2dOr3d;//Check2Dor3D(status, trans_fmt); - int rval = -1; - - getSqlParams(__FUNCTION__, sqlmaster, "select TableName from GeneralNoiseReductionTable where " - "TVIN_PORT = %d and " - "TVIN_SIG_FMT = %d and " - "TVIN_TRANS_FMT = %d ;", source_port, sig_fmt, mode); - - rval = this->select(sqlmaster, c); - - if (c.moveToFirst()) { - int index_TableName = 0;//c.getColumnIndex("TableName"); - getSqlParams(__FUNCTION__, sqlmaster, "select NRValue from %s where NRLevel = %d;", - c.getString(index_TableName).string(), (int) nr_mode); - - rval = this->select(sqlmaster, c); - - if (c.moveToFirst()) { - *params = c.getInt(0); - } - } - return rval; -} - -int CPqData::PQ_SetNoiseReductionParams(vpp_noise_reduction_mode_t nr_mode __unused, - tvin_port_t source_port __unused, tvin_sig_fmt_t sig_fmt __unused, - is_3d_type_t is2dOr3d __unused, - tvin_trans_fmt_t trans_fmt __unused, int *params __unused) -{ - return 0; -} - -int CPqData::PQ_GetOverscanParams(tv_source_input_type_t source_type, tvin_sig_fmt_t fmt, - is_3d_type_t is2dOr3d, - tvin_trans_fmt_t trans_fmt __unused, vpp_display_mode_t dmode __unused, - tvin_cutwin_t *cutwin_t) -{ - CSqlite::Cursor c; - char sqlmaster[256]; - int mode = is2dOr3d;//Check2Dor3D(status, trans_fmt); - int rval = -1; - - cutwin_t->hs = 0; - cutwin_t->he = 0; - cutwin_t->vs = 0; - cutwin_t->ve = 0; - - getSqlParams(__FUNCTION__, sqlmaster, "select Hs, He, Vs, Ve from OVERSCAN where " - "TVIN_PORT = %d and " - "TVIN_SIG_FMT = %d and " - "TVIN_TRANS_FMT = %d ;", source_type, fmt, mode); - - rval = this->select(sqlmaster, c); - - if (c.moveToFirst()) { - cutwin_t->hs = c.getInt(0); - cutwin_t->he = c.getInt(1); - cutwin_t->vs = c.getInt(2); - cutwin_t->ve = c.getInt(3); - } - return rval; -} -int CPqData::PQ_SetOverscanParams(tv_source_input_type_t source_type, tvin_sig_fmt_t fmt, - is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt __unused, tvin_cutwin_t cutwin_t) -{ - CSqlite::Cursor c; - char sqlmaster[256]; - int mode = is2dOr3d;//Check2Dor3D(status, trans_fmt); - int rval = -1; - - getSqlParams( - __FUNCTION__, - sqlmaster, - "select * from OVERSCAN where TVIN_PORT = %d and TVIN_SIG_FMT = %d and TVIN_TRANS_FMT = %d;", - source_type, fmt, mode); - - rval = this->select(sqlmaster, c); - - if (c.moveToFirst()) { - getSqlParams( - __FUNCTION__, - sqlmaster, - "update OVERSCAN set Hs = %d, He = %d, Vs = %d, Ve = %d where TVIN_PORT = %d and TVIN_SIG_FMT = %d and TVIN_TRANS_FMT = %d;", - cutwin_t.hs, cutwin_t.he, cutwin_t.vs, cutwin_t.ve, source_type, fmt, mode); - } else { - getSqlParams( - __FUNCTION__, - sqlmaster, - "Insert into OVERSCAN(TVIN_PORT, TVIN_SIG_FMT, TVIN_TRANS_FMT, Hs, He, Vs, Ve) values(%d, %d, %d ,%d ,%d, %d, %d);", - source_type, fmt, mode, cutwin_t.hs, cutwin_t.he, cutwin_t.vs, cutwin_t.ve); - } - rval = this->exeSql(sqlmaster); - - return rval; -} - -int CPqData::PQ_ResetAllOverscanParams(void) -{ - int rval; - char sqlmaster[256]; - - getSqlParams( - __FUNCTION__, - sqlmaster, - "delete from OVERSCAN; insert into OVERSCAN(TVIN_PORT, TVIN_SIG_FMT, TVIN_TRANS_FMT, hs, he, vs, ve) select TVIN_PORT, TVIN_SIG_FMT, TVIN_TRANS_FMT, hs, he, vs, ve from OVERSCAN_default;"); - rval = this->exeSql(sqlmaster); - - return rval; -} - -int CPqData::PQ_GetPQModeParams(tv_source_input_type_t source_type, vpp_picture_mode_t pq_mode, - vpp_pq_para_t *params) -{ - CSqlite::Cursor c; - char sqlmaster[256]; - - int rval = -1; - - getSqlParams(__FUNCTION__, sqlmaster, - "select Brightness, Contrast, Saturation, Hue, Sharpness, Backlight, NR from Picture_Mode where " - "TVIN_PORT = %d and " - "Mode = %d ;", source_type, pq_mode); - - rval = this->select(sqlmaster, c); - - if (c.moveToFirst()) { - params->brightness = c.getInt(0); - params->contrast = c.getInt(1); - params->saturation = c.getInt(2); - params->hue = c.getInt(3); - params->sharpness = c.getInt(4); - params->backlight = c.getInt(5); - params->nr = c.getInt(6); - } - return rval; -} - -int CPqData::PQ_SetPQModeParams(tv_source_input_type_t source_type, vpp_picture_mode_t pq_mode, - vpp_pq_para_t *params) -{ - int rval; - char sql[256]; - - getSqlParams( - __FUNCTION__, - sql, - "update Picture_Mode set Brightness = %d, Contrast = %d, Saturation = %d, Hue = %d, Sharpness = %d, Backlight = %d, NR= %d " - " where TVIN_PORT = %d and Mode = %d;", params->brightness, params->contrast, - params->saturation, params->hue, params->sharpness, params->backlight, params->nr, - source_type, pq_mode); - rval = this->exeSql(sql); - return 0; -} - -int CPqData::PQ_SetPQModeParamsByName(const char *name, tv_source_input_type_t source_type, - vpp_picture_mode_t pq_mode, vpp_pq_para_t *params) -{ - int rval; - char sql[256]; - - getSqlParams(__FUNCTION__, sql, - "insert into %s(TVIN_PORT, Mode, Brightness, Contrast, Saturation, Hue, Sharpness, Backlight, NR)" - " values(%d,%d,%d,%d,%d,%d,%d,%d,%d);", name, source_type, pq_mode, - params->brightness, params->contrast, params->saturation, params->hue, - params->sharpness, params->backlight, params->nr); - - rval = this->exeSql(sql); - return 0; -} - -int CPqData::PQ_ResetAllPQModeParams(void) -{ - int rval; - char sqlmaster[256]; - - getSqlParams( - __FUNCTION__, - sqlmaster, - "delete from picture_mode; insert into picture_mode(TVIN_PORT, Mode, Brightness, Contrast, Saturation, Hue, Sharpness, Backlight, NR) select TVIN_PORT, Mode, Brightness, Contrast, Saturation, Hue, Sharpness, Backlight, NR from picture_mode_default;"); - - rval = this->exeSql(sqlmaster); - return rval; -} - -int CPqData::PQ_GetGammaSpecialTable(int gammaValue, const char *f_name, - tcon_gamma_table_t *gamma_value) -{ - CSqlite::Cursor c; - char sqlmaster[256]; - int rval = -1; - - getSqlParams(__FUNCTION__, sqlmaster, "select %s from GAMMA_%d", f_name, gammaValue); - - rval = this->select(sqlmaster, c); - - if (c.moveToFirst()) { - int index = 0; - do { - gamma_value->data[index] = c.getInt(0); - index++; - } while (c.moveToNext()); - } - return rval; -} - -int CPqData::PQ_GetGammaTableR(int panel_id, tvin_port_t source_port, tvin_sig_fmt_t fmt, - tcon_gamma_table_t *gamma_r) -{ - return PQ_GetGammaTable(panel_id, source_port, fmt, "Red", gamma_r); -} - -int CPqData::PQ_GetGammaTableG(int panel_id, tvin_port_t source_port, tvin_sig_fmt_t fmt, - tcon_gamma_table_t *gamma_g) -{ - return PQ_GetGammaTable(panel_id, source_port, fmt, "Green", gamma_g); -} - -int CPqData::PQ_GetGammaTableB(int panel_id, tvin_port_t source_port, tvin_sig_fmt_t fmt, - tcon_gamma_table_t *gamma_b) -{ - return PQ_GetGammaTable(panel_id, source_port, fmt, "Blue", gamma_b); -} - -int CPqData::PQ_GetGammaTable(int panel_id, tvin_port_t source_port, tvin_sig_fmt_t fmt, - const char *f_name, tcon_gamma_table_t *val) -{ - CSqlite::Cursor c; - char sqlmaster[256]; - int rval = -1; - - panel_id = panel_id; - - getSqlParams(__FUNCTION__, sqlmaster, "select TableName from GeneralGammaTable where " - "TVIN_PORT = %d and " - "TVIN_SIG_FMT = %d;", source_port, fmt); - - rval = this->select(sqlmaster, c); - if (c.moveToFirst()) { - int index_TableName = 0;//c.getColumnIndex("TableName"); - getSqlParams(__FUNCTION__, sqlmaster, "select %s from %s;", f_name, - c.getString(index_TableName).string()); - - rval = this->select(sqlmaster, c); - if (c.moveToFirst()) { - int index = 0; - do { - val->data[index] = c.getInt(0); - index++; - } while (c.moveToNext()); - } - } - return rval; -} - -int CPqData::PQ_GetVGAAjustPara(tvin_sig_fmt_t vga_fmt, tvafe_vga_parm_t *adjparam) -{ - CSqlite::Cursor c; - char sqlmaster[256]; - int rval = -1; - - adjparam->clk_step = 0; - adjparam->phase = 0; - adjparam->hpos_step = 0; - adjparam->vpos_step = 0; - adjparam->vga_in_clean = 0; - - getSqlParams( - __FUNCTION__, - sqlmaster, - "select Clk, Phase, HPos, VPos, Vga_in_clean from VGA_AutoParams where TVIN_SIG_FMT = %d", - vga_fmt); - - rval = this->select(sqlmaster, c); - - if (c.moveToFirst()) { - adjparam->clk_step = c.getInt(0); - adjparam->phase = c.getInt(1); - adjparam->hpos_step = c.getInt(2); - adjparam->vpos_step = c.getInt(3); - adjparam->vga_in_clean = c.getInt(4); - } - return rval; -} - -int CPqData::PQ_SetVGAAjustPara(tvin_sig_fmt_t vga_fmt, tvafe_vga_parm_t adjparam) -{ - CSqlite::Cursor c; - char sql[256]; - int rval = -1; - - getSqlParams(__FUNCTION__, sql, "select * from VGA_AutoParams where TVIN_SIG_FMT = %d;", - vga_fmt); - - rval = this->select(sql, c); - - if (c.moveToFirst()) { - getSqlParams( - __FUNCTION__, - sql, - "Insert into VGA_AutoParams(TVIN_SIG_FMT, Clk, Phase, HPos, VPos, Vga_in_clean) values(%d, %d, %d ,%d ,%d, %d);", - vga_fmt, adjparam.clk_step, adjparam.phase, adjparam.hpos_step, adjparam.vpos_step, - adjparam.vga_in_clean); - } else { - getSqlParams( - __FUNCTION__, - sql, - "update VGA_AutoParams set Clk = %d, Phase = %d, HPos = %d, VPos = %d, Vga_in_clean = %d where TVIN_SIG_FMT = %d;", - adjparam.clk_step, adjparam.phase, adjparam.hpos_step, adjparam.vpos_step, - adjparam.vga_in_clean, vga_fmt); - } - rval = this->exeSql(sql); - return rval; -} - -int CPqData::CaculateLevelParam(tvpq_data_t *pq_data, int nodes, int level) -{ - int i; - - for (i = 0; i < nodes; i++) { - if (level < pq_data[i].IndexValue) { - break; - } - } - - if (i == 0) { - return pq_data[i].RegValue; - } else if (i == nodes) { - return pq_data[i - 1].RegValue; - } else { - return pq_data[i - 1].RegValue + (level - pq_data[i - 1].IndexValue) * pq_data[i - 1].step; - } -} - -am_regs_t CPqData::CaculateLevelRegsParam(tvpq_sharpness_regs_t *pq_regs, int level, int flag) -{ - am_regs_t regs; - int i; - int *pq_nodes = NULL; - if (flag && sha_diff_flag == 6) { - pq_nodes = &sha_nodes_1; - } else { - pq_nodes = &sha_nodes; - } - - for (i = 0; i < *pq_nodes; i++) { - if (level < pq_regs[i].reg_data[0].IndexValue) { - break; - } - } - - if (i == 0) { - regs.length = pq_regs[i].length; - for (int j = 0; j < pq_regs[i].length; j++) { - regs.am_reg[j].type = pq_regs[i].reg_data[j].Value.type; - regs.am_reg[j].addr = pq_regs[i].reg_data[j].Value.addr; - regs.am_reg[j].mask = pq_regs[i].reg_data[j].Value.mask; - regs.am_reg[j].val = pq_regs[i].reg_data[j].Value.val; - } - - } else if (i == *pq_nodes) { - regs.length = pq_regs[i - 1].length; - for (int j = 0; j < pq_regs[i - 1].length; j++) { - regs.am_reg[j].type = pq_regs[i - 1].reg_data[j].Value.type; - regs.am_reg[j].addr = pq_regs[i - 1].reg_data[j].Value.addr; - regs.am_reg[j].mask = pq_regs[i - 1].reg_data[j].Value.mask; - regs.am_reg[j].val = pq_regs[i - 1].reg_data[j].Value.val; - } - } else { - regs.length = pq_regs[i - 1].length; - for (int j = 0; j < pq_regs[i - 1].length; j++) { - regs.am_reg[j].type = pq_regs[i - 1].reg_data[j].Value.type; - regs.am_reg[j].addr = pq_regs[i - 1].reg_data[j].Value.addr; - regs.am_reg[j].mask = pq_regs[i - 1].reg_data[j].Value.mask; - regs.am_reg[j].val = pq_regs[i - 1].reg_data[j].Value.val + (level - - pq_regs[i - 1].reg_data[j].IndexValue) * pq_regs[i - 1].reg_data[j].step; - } - } - - return regs; -} - -int CPqData::GetNonlinearMapping(tvpq_data_type_t data_type, tvin_port_t source_port, int level, - int *params) -{ - CSqlite::Cursor c; - char sqlmaster[256]; - int rval = -1; - - tv_source_input_type_t type; - //showboz - type = CTvin::Tvin_SourcePortToSourceInputType(source_port);//??? - - getSqlParams(__FUNCTION__, sqlmaster, "select Value from NonlinearMapping where " - "TVIN_PORT = %d and " - "Item_ID = %d and " - "Level = %d ;", type, data_type, level); - - rval = this->select(sqlmaster, c); - - if (c.moveToFirst()) { - *params = c.getInt(0); - } - return rval; -} - -int CPqData::GetNonlinearMappingByOSDFac(tvpq_data_type_t data_type, - tv_source_input_type_t source_type, int *params) -{ - CSqlite::Cursor c; - char sqlmaster[256]; - int rval = -1; - - getSqlParams(__FUNCTION__, sqlmaster, "select Value from NonlinearMapping where " - "TVIN_PORT = %d and " - "Item_ID = %d and (" - "Level = 0 or Level = 25 or Level = 50 or Level = 75 or Level = 100);", source_type, - data_type); - - rval = this->select(sqlmaster, c); - - if (c.moveToFirst()) { - params[0] = c.getInt(0); - params[1] = c.getInt(1); - params[2] = c.getInt(2); - params[3] = c.getInt(3); - params[4] = c.getInt(4); - } - return rval; -} - -int CPqData::SetNonlinearMapping(tvpq_data_type_t data_type, tv_source_input_type_t source_type, - int osd0, int osd25, int osd50, int osd75, int osd100) -{ - - int rval; - char *err = NULL; - int osdvalue[101]; - double step[4]; - char sql[256]; - - step[0] = (osd25 - osd0) / 25.0; - step[1] = (osd50 - osd25) / 25.0; - step[2] = (osd75 - osd50) / 25.0; - step[3] = (osd100 - osd75) / 25.0; - - for (int i = 0; i <= 100; i++) { - if (i == 0) { - osdvalue[i] = osd0; - } else if ((i > 0) && (i <= 25)) { - osdvalue[i] = osd0 + (int) (i * step[0]); - } else if ((i > 25) && (i <= 50)) { - osdvalue[i] = osd25 + (int) ((i - 25) * step[1]); - } else if ((i > 50) && (i <= 75)) { - osdvalue[i] = osd50 + (int) ((i - 50) * step[2]); - } else if ((i > 75) && (i <= 100)) { - osdvalue[i] = osd75 + (int) ((i - 75) * step[3]); - } - getSqlParams( - __FUNCTION__, - sql, - "update NonLinearMapping set Value = %d where TVIN_PORT = %d and Item_ID = %d and Level = %d ;", - osdvalue[i], source_type, data_type, i); - if (!(this->exeSql(sql))) { - return -1; - } - } - return 0; -} - -int CPqData::SetNonlinearMappingByName(const char *name, tvpq_data_type_t data_type, - tv_source_input_type_t source_type, int osd0, int osd25, int osd50, int osd75, int osd100) -{ - int rval; - char *err = NULL; - int osdvalue[101]; - double step[4]; - char sql[256]; - - step[0] = (osd25 - osd0) / 25.0; - step[1] = (osd50 - osd25) / 25.0; - step[2] = (osd75 - osd50) / 25.0; - step[3] = (osd100 - osd75) / 25.0; - - for (int i = 0; i <= 100; i++) { - if (i == 0) { - osdvalue[i] = osd0; - } else if ((i > 0) && (i <= 25)) { - osdvalue[i] = osd0 + (int) (i * step[0]); - } else if ((i > 25) && (i <= 50)) { - osdvalue[i] = osd25 + (int) ((i - 25) * step[1]); - } else if ((i > 50) && (i <= 75)) { - osdvalue[i] = osd50 + (int) ((i - 50) * step[2]); - } else if ((i > 75) && (i <= 100)) { - osdvalue[i] = osd75 + (int) ((i - 75) * step[3]); - } - memset(sql, '\0', 256); - getSqlParams(__FUNCTION__, sql, - "insert into %s(TVIN_PORT, Item_ID, Level, Value) values(%d,%d,%d,%d);", name, - source_type, data_type, i, osdvalue[i]); - if (!(this->exeSql(sql))) { - return -1; - } - } - return 0; -} - -int CPqData::getSharpnessFlag() -{ - return sha_diff_flag; -} - -int CPqData::loadSharpnessData(char *sqlmaster, char *table_name) -{ - LOGD("%s, table_name: %s, sqlmaster: %s\n", __FUNCTION__, table_name, sqlmaster); - CSqlite::Cursor c; - int rval; - int *pq_nodes = NULL; - int temp_flag = 0; - - if (!strncmp("Sharpness_0", table_name, 11)) {//for gxtvbb:Sharpness_0_*** - sha_diff_flag = sha_diff_flag | 2; - pq_nodes = &sha_nodes; - temp_flag = 2; - } else if (!strncmp("Sharpness_1", table_name, 11)) {//for gxtvbb:Sharpness_1_*** - sha_diff_flag = sha_diff_flag | 4; - pq_nodes = &sha_nodes_1; - temp_flag = 4; - } else {//for g9:Sharpness_G9_*** - sha_diff_flag = 1; - pq_nodes = &sha_nodes; - temp_flag = 1; - } - LOGD("%s, sha_diff_flag: %d, temp_flag: %d\n", __FUNCTION__, sha_diff_flag, temp_flag); - - rval = this->select(sqlmaster, c); - int length = 0; - int index = 0; - if ((temp_flag == 1) || (temp_flag == 2)) { - if (c.moveToFirst()) { - *pq_nodes = c.getInt(0);//TotalNode? - length = c.getCount() / (*pq_nodes); - for (int i = 0; i < *pq_nodes; i++) { - pq_sharpness_reg_data[i].length = length; - } - do { - pq_sharpness_reg_data[index / length].reg_data[index % length].TotalNode - = c.getInt(0); - pq_sharpness_reg_data[index / length].reg_data[index % length].NodeValue - = c.getInt(1); - pq_sharpness_reg_data[index / length].reg_data[index % length].Value.type - = c.getUInt(2); - pq_sharpness_reg_data[index / length].reg_data[index % length].Value.addr - = c.getUInt(3); - pq_sharpness_reg_data[index / length].reg_data[index % length].Value.mask - = c.getUInt(4); - pq_sharpness_reg_data[index / length].reg_data[index % length].IndexValue - = c.getInt(5); - pq_sharpness_reg_data[index / length].reg_data[index % length].Value.val - = c.getUInt(6); - pq_sharpness_reg_data[index / length].reg_data[index % length].step = c.getF(7); - index++; - } while (c.moveToNext()); - } - } else if (temp_flag == 4) { - if (c.moveToFirst()) { - *pq_nodes = c.getInt(0);//TotalNode? - length = c.getCount() / (*pq_nodes); - for (int i = 0; i < *pq_nodes; i++) { - pq_sharpness_reg_data_1[i].length = length; - } - do { - pq_sharpness_reg_data_1[index / length].reg_data[index % length].TotalNode - = c.getInt(0); - pq_sharpness_reg_data_1[index / length].reg_data[index % length].NodeValue - = c.getInt(1); - pq_sharpness_reg_data_1[index / length].reg_data[index % length].Value.type - = c.getUInt(2); - pq_sharpness_reg_data_1[index / length].reg_data[index % length].Value.addr - = c.getUInt(3); - pq_sharpness_reg_data_1[index / length].reg_data[index % length].Value.mask - = c.getUInt(4); - pq_sharpness_reg_data_1[index / length].reg_data[index % length].IndexValue - = c.getInt(5); - pq_sharpness_reg_data_1[index / length].reg_data[index % length].Value.val - = c.getUInt(6); - pq_sharpness_reg_data_1[index / length].reg_data[index % length].step = c.getF(7); - index++; - } while (c.moveToNext()); - } - } - return rval; -} - -int CPqData::LoadPQData(tvpq_data_type_t data_type, tvin_port_t source_port, - tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, int flag) -{ - CSqlite::Cursor c; - int rval; - char sqlmaster[256]; - char table_name[128]; - int mode = is2dOr3d; - tvpq_data_t *pq_data = NULL; - int *pq_nodes = NULL; - - trans_fmt = trans_fmt; - switch (data_type) { - case TVPQ_DATA_BRIGHTNESS: - getSqlParams(__FUNCTION__, sqlmaster, - "select TableName from GeneralContrastBrightnessTable where " - "TVIN_PORT = %d and " - "TVIN_SIG_FMT = %d and " - "TVIN_TRANS_FMT = %d and " - "%s = %d;", source_port, sig_fmt, mode, ID_FIELD, BRIGHTNESS_ID); - pq_data = pq_bri_data; - pq_nodes = &bri_nodes; - break; - case TVPQ_DATA_CONTRAST: - getSqlParams(__FUNCTION__, sqlmaster, - "select TableName from GeneralContrastBrightnessTable where " - "TVIN_PORT = %d and " - "TVIN_SIG_FMT = %d and " - "TVIN_TRANS_FMT = %d and " - "%s = %d;", source_port, sig_fmt, mode, ID_FIELD, CONTRAST_ID); - pq_data = pq_con_data; - pq_nodes = &con_nodes; - break; - case TVPQ_DATA_HUE: - getSqlParams(__FUNCTION__, sqlmaster, - "select TableName from GeneralSaturationHueTable where " - "TVIN_PORT = %d and " - "TVIN_SIG_FMT = %d and " - "TVIN_TRANS_FMT = %d and " - "%s = %d;", source_port, sig_fmt, mode, ID_FIELD, HUE_ID); - pq_data = pq_hue_data; - pq_nodes = &hue_nodes; - break; - case TVPQ_DATA_SATURATION: - getSqlParams(__FUNCTION__, sqlmaster, - "select TableName from GeneralSaturationHueTable where " - "TVIN_PORT = %d and " - "TVIN_SIG_FMT = %d and " - "TVIN_TRANS_FMT = %d and " - "%s = %d;", source_port, sig_fmt, mode, ID_FIELD, SATURATION_ID); - pq_data = pq_sat_data; - pq_nodes = &sat_nodes; - break; - case TVPQ_DATA_SHARPNESS: - //sprintf(sqlmaster, "select TableName from GeneralSharpnessTable where " - getSqlParams(__FUNCTION__, sqlmaster, - "select TableName from GeneralSharpnessG9Table where " - "TVIN_PORT = %d and " - "TVIN_SIG_FMT = %d and " - "TVIN_TRANS_FMT = %d and " - "%s = %d;", source_port, sig_fmt, mode, ID_FIELD, SHARPNESS_ID); - pq_data = NULL; - pq_nodes = &sha_nodes; - break; - default: - break; - } - - rval = this->select(sqlmaster, c); - - if (c.moveToFirst()) { - switch (data_type) { - case TVPQ_DATA_BRIGHTNESS: - case TVPQ_DATA_CONTRAST: - case TVPQ_DATA_HUE: - case TVPQ_DATA_SATURATION: - getSqlParams( - __FUNCTION__, - sqlmaster, - "select TotalNode, NodeNumber, IndexValue, RegValue, StepUp from %s order by NodeNumber asc;", - c.getString(0).string()); - break; - case TVPQ_DATA_SHARPNESS: - do { - getSqlParams(__FUNCTION__, sqlmaster, - "select TotalNode, NodeNumber, RegType, RegAddr, RegMask," - "IndexValue, RegValue, StepUp from %s order by NodeNumber asc;", - c.getString(0).string()); - c.getString(table_name, 0); - rval = loadSharpnessData(sqlmaster, table_name); - } while (c.moveToNext()); - return rval; - default: - break; - } - } - - rval = this->select(sqlmaster, c); - - if (c.moveToFirst()) { - if (data_type != TVPQ_DATA_SHARPNESS) { - int index = 0; - do { - pq_data[index].TotalNode = c.getInt(0); - pq_data[index].NodeValue = c.getInt(1); - pq_data[index].IndexValue = c.getInt(2); - pq_data[index].RegValue = c.getInt(3); - pq_data[index].step = c.getF(4); - if (flag == 1) { - if (data_type == TVPQ_DATA_BRIGHTNESS) { - LOGD("%s, bri pq_data[%d].RegValue = %d\n", "TV", index, - pq_data[index].RegValue); - pq_data[index].RegValue -= 64; - LOGD("%s, bri pq_data[%d].RegValue + 64 = %d\n", "TV", index, - pq_data[index].RegValue); - } else if (data_type == TVPQ_DATA_CONTRAST) { - LOGD("%s, con pq_data[%d].RegValue = %d\n", "TV", index, - pq_data[index].RegValue); - pq_data[index].RegValue += 64; - LOGD("%s, con pq_data[%d].RegValue + 64 = %d\n", "TV", index, - pq_data[index].RegValue); - } - } - index++; - } while (c.moveToNext()); - *pq_nodes = index; - } - } - - return rval; -} - -int CPqData::LoadAllPQData(tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, - tvin_trans_fmt_t trans_fmt, int flag) -{ - int rval = -1; - rval = LoadPQData(TVPQ_DATA_BRIGHTNESS, source_port, sig_fmt, is2dOr3d, trans_fmt, flag); - if (rval) { - return rval; - } - rval = LoadPQData(TVPQ_DATA_CONTRAST, source_port, sig_fmt, is2dOr3d, trans_fmt, flag); - if (rval) { - return rval; - } - rval = LoadPQData(TVPQ_DATA_SATURATION, source_port, sig_fmt, is2dOr3d, trans_fmt, -1); - if (rval) { - return rval; - } - rval = LoadPQData(TVPQ_DATA_HUE, source_port, sig_fmt, is2dOr3d, trans_fmt, -1); - if (rval) { - return rval; - } - rval = LoadPQData(TVPQ_DATA_SHARPNESS, source_port, sig_fmt, is2dOr3d, trans_fmt, -1); - if (rval) { - return rval; - } - return rval; -} - -typedef enum initial_type_e { - TYPE_PMode = 0, - TYPE_PMode_Default, - TYPE_Nonlinear, - TYPE_NonLinear_Default, - TYPE_VGA_AUTO, - TYPE_OVERSCAN, -} initial_type_t; - -const char *Pmode_name[6] = { "Picture_Mode", "Picture_Mode_Default", "NonlinearMapping", - "NonlinearMapping_Default", "VGA_AutoParams", "OVERSCAN" - }; - -void CPqData::initialTable(int type) -{ - vpp_pq_para_t pmode_default; - - pmode_default.backlight = 100; - pmode_default.brightness = 50; - pmode_default.contrast = 50; - pmode_default.hue = 50; - pmode_default.nr = 0; - pmode_default.saturation = 50; - pmode_default.sharpness = 50; - - switch (type) { - case TYPE_PMode: - case TYPE_PMode_Default: - for (int i = 0; i < 6; i++) { - for (int j = 0; j < 4; j++) { - PQ_SetPQModeParamsByName(Pmode_name[type], (tv_source_input_type_t) i, - (vpp_picture_mode_t) j, &pmode_default); - } - } - break; - case TYPE_Nonlinear: - case TYPE_NonLinear_Default: - for (int i = 0; i < 6; i++) { - for (int j = 0; j < 5; j++) { - SetNonlinearMappingByName(Pmode_name[type], (tvpq_data_type_t) j, - (tv_source_input_type_t) i, 0, (int) 255 / 4.0, (int) 255 * 2 / 4.0, - (int) 255 * 3 / 4.0, 255); - } - } - break; - case TYPE_VGA_AUTO: - break; - case TYPE_OVERSCAN: - break; - } -} - -/* - void CPqData::transferFixTable() - { - char sql[256]; - char *err = NULL; - char **rsltReg = NULL; - int rval, rows, columns; - unsigned int tvin, sig, trans; - char tablename[256]; - - sprintf(sql, "Select TVIN_PORT, TVIN_SIG_FMT, TVIN_TRANS_FMT, TableName from GeneralSharpnessTable where TableID = 0;"); - - rval = sqlite3_get_table(DB, sql, &rsltReg, &rows, &columns, &err); - - if (rval) { - if (rsltReg != NULL) { - sqlite3_free_table(rsltReg); - rsltReg = NULL; - } - if (err != NULL) { - sqlite3_free(err); - err = NULL; - } - return; - } else { - for (int i = 1; i <= rows; i++) { - memset(sql, '\0', 256); - - sscanf(rsltReg[i * columns], "%u", &tvin); - sscanf(rsltReg[i * columns + 1], "%u", &sig); - sscanf(rsltReg[i * columns + 2], "%u", &trans); - sscanf(rsltReg[i * columns + 3], "%s", tablename); - - sprintf(sql, "insert into GeneralCommonTable(TVIN_PORT, TVIN_SIG_FMT, TVIN_TRANS_FMT, TableID, TableName) values(%d,%d,%d,0,\"%s\");", - tvin, sig, trans, tablename); - rval = sqlite3_exec(DB, sql, NULL, NULL, &err); - if (rval) { - if (err != NULL) { - sqlite3_free(err); - err = NULL; - } - return; - } - if (err != NULL) { - sqlite3_free(err); - err = NULL; - } - } - memset(sql, '\0', 256); - sprintf(sql, "delete from GeneralSharpnessTable where TableID = 0;"); - rval = sqlite3_exec(DB, sql, NULL, NULL, &err); - if (rval) { - if (err != NULL) { - sqlite3_free(err); - err = NULL; - } - return; - } - if (err != NULL) { - sqlite3_free(err); - err = NULL; - } - } - } - */ - -int CPqData::replacePqDb(const char *newFilePath) -{ - - CFile::delFile( PQ_DB_PATH); - if (newFilePath == NULL) { - return 0; - } else { - LOGD("path = %s", newFilePath); - CFile file(newFilePath); - int ret = file.copyTo(PQ_DB_PATH); - system("sync"); - return ret; - } -} - -int CPqData::PQ_GetPhaseArray(am_phase_t *am_phase) -{ - CSqlite::Cursor c; - int iOutRet = 0; - char sqlmaster[256]; - getSqlParams(__FUNCTION__, sqlmaster, "select Phase from Phase order by Format ASC; "); - - this->select(sqlmaster, c); - int nums = 0; - am_phase->length = c.getCount(); - if (c.moveToFirst()) { - do { - am_phase->phase[nums] = c.getInt(0);//col index is 0[Phase] - nums++; - } while (c.moveToNext()); - } - // - return nums; -} - diff --git a/tvapi/libtv/vpp/CPQdb.h b/tvapi/libtv/vpp/CPQdb.h deleted file mode 100644 index 300494a..0000000 --- a/tvapi/libtv/vpp/CPQdb.h +++ b/dev/null @@ -1,180 +0,0 @@ -/* - * CPQdb.h - * - * Created on: 2011-12-13 - * Author: casey - */ - -#ifndef CPQDB_H_ -#define CPQDB_H_ - -#define PQ_NO_ANDROID 0 - - -#if (PQ_NO_ANDROID == 1) -#include "sqlite3.h" -#else -#include "../../sqlite/dist/sqlite3.h" -#endif -#include "tvutils/CFile.h" -#include "../tvin/CTvin.h" -#include "CVpp.h" -#include "tvutils/CSqlite.h" - -#define SQL_DEBUG 0 -#define getSqlParams(func, buffer, args...) \ - do{\ - sprintf(buffer, ##args);\ - if(SQL_DEBUG){\ - LOGD("getSqlParams for %s\n", func);\ - LOGD("%s = %s\n",#buffer, buffer);\ - }\ - }while(0) - - -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 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; - -typedef struct tvpq_nonlinear_s { - int osd0; - int osd25; - int osd50; - int osd75; - int osd100; -} tvpq_nonlinear_t; - - -class CPqData: public CSqlite { -public: - CPqData(); - ~CPqData(); - int PQ_GetColorDemoParams(vpp_color_demomode_t demomode, void *params); - int PQ_GetBaseColorParams(vpp_color_basemode_t basemode, tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, am_regs_t *regs); - int PQ_GetCM2Params(vpp_color_management2_t basemode, tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, am_regs_t *regs); - int PQ_GetNR2Params(vpp_noise_reduction2_mode_t basemode, tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, am_regs_t *regs); - int PQ_GetXVYCCParams(vpp_xvycc_mode_t xvycc_mode, tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, am_regs_t *regs, am_regs_t *regs_1); - int PQ_GetMCDIParams(vpp_mcdi_mode_t mcdi_mode, tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, am_regs_t *regs); - int PQ_GetDeblockParams(vpp_deblock_mode_t mode, tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, am_regs_t *regs); - int PQ_ColorTemperatureRGBogo2Params(void *params, tcon_rgb_ogo_t rgb_ogo); - int PQ_ColorTemperatureParams2RGBogo(tcon_rgb_ogo_t *rgb_ogo, void *params); - int PQ_GetColorTemperatureParams(vpp_color_temperature_mode_t Tempmode, tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, tvin_trans_fmt_t trans_fmt, - tcon_rgb_ogo_t *params); - int PQ_SetColorTemperatureParams(vpp_color_temperature_mode_t Tempmode, tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, tvin_trans_fmt_t trans_fmt, - tcon_rgb_ogo_t params); - int PQ_ResetAllColorTemperatureParams(void); - int PQ_GetBacklightParams(tvin_port_t source_port, int level, int *params); - int PQ_SetBacklightParams(tvin_port_t source_port, int level, int params); - int PQ_SetNoLineAllBrightnessParams(tv_source_input_type_t source_type, int osd0, int osd25, int osd50, int osd75, int osd100); - int PQ_GetNoLineAllBrightnessParams(tv_source_input_type_t source_type, int *osd0, int *osd25, int *osd50, int *osd75, int *osd100); - int PQ_GetBrightnessParams(tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, int level, int *params); - int PQ_SetBrightnessParams(tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, int level, int params); - int PQ_SetNoLineAllContrastParams(tv_source_input_type_t source_type, int osd0, int osd25, int osd50, int osd75, int osd100); - int PQ_GetNoLineAllContrastParams(tv_source_input_type_t source_type, int *osd0, int *osd25, int *osd50, int *osd75, int *osd100); - int PQ_GetContrastParams(tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, int level, int *params); - int PQ_SetContrastParams(tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, int level, int params); - int PQ_SetNoLineAllSaturationParams(tv_source_input_type_t source_type, int osd0, int osd25, int osd50, int osd75, int osd100); - int PQ_GetNoLineAllSaturationParams(tv_source_input_type_t source_type, int *osd0, int *osd25, int *osd50, int *osd75, int *osd100); - int PQ_GetSaturationParams(tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, int level, int *params); - int PQ_SetSaturationParams(tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, int level, int params); - int PQ_SetNoLineAllHueParams(tv_source_input_type_t source_type, int osd0, int osd25, int osd50, int osd75, int osd100); - int PQ_GetNoLineAllHueParams(tv_source_input_type_t source_type, int *osd0, int *osd25, int *osd50, int *osd75, int *osd100); - int PQ_GetHueParams(tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, int level, int *params); - int PQ_SetHueParams(tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, int level, int params); - int PQ_SetNoLineAllSharpnessParams(tv_source_input_type_t source_type, int osd0, int osd25, int osd50, int osd75, int osd100); - int PQ_GetNoLineAllSharpnessParams(tv_source_input_type_t source_type, int *osd0, int *osd25, int *osd50, int *osd75, int *osd100); - int PQ_GetSharpnessParams(tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, int level, am_regs_t *regs, am_regs_t *regs_l); - int PQ_SetSharpnessParams(tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, int level, am_regs_t regs); - int PQ_SetNoLineAllVolumeParams(tv_source_input_type_t source_type, int osd0, int osd25, int osd50, int osd75, int osd100); - int PQ_GetNoLineAllVolumeParams(tv_source_input_type_t source_type, int *osd0, int *osd25, int *osd50, int *osd75, int *osd100); - int PQ_GetVolumeParams(tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, int *length, int *params); - int PQ_SetVolumeParams(tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, int level, int params); - int PQ_ResetAllNoLineParams(void); - int PQ_GetNoiseReductionParams(vpp_noise_reduction_mode_t nr_mode, tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, int *params); - int PQ_SetNoiseReductionParams(vpp_noise_reduction_mode_t nr_mode, tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, int *params); - int PQ_GetDNLPParams(tvin_port_t source_port, tvin_sig_fmt_t fmt, is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, ve_dnlp_t *params, ve_dnlp_table_t *newParams, int *dnlpFlag); - int PQ_GetBlackExtParams(tv_source_input_type_t source_type, tvin_sig_fmt_t fmt, is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, ve_bext_t *params); - int PQ_GetOverscanParams(tv_source_input_type_t source_type, tvin_sig_fmt_t fmt, is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, vpp_display_mode_t dmode, tvin_cutwin_t *cutwin_t); - int PQ_SetOverscanParams(tv_source_input_type_t source_type, tvin_sig_fmt_t fmt, is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, tvin_cutwin_t cutwin_t); - int PQ_ResetAllOverscanParams(void); - int PQ_GetPQModeParams(tv_source_input_type_t source_type, vpp_picture_mode_t pq_mode, vpp_pq_para_t *params); - int PQ_SetPQModeParams(tv_source_input_type_t source_type, vpp_picture_mode_t pq_mode, vpp_pq_para_t *params); - int PQ_ResetAllPQModeParams(void); - int PQ_GetGammaTableR(int panel_id, tvin_port_t source_port, tvin_sig_fmt_t fmt, tcon_gamma_table_t *gamma_r); - int PQ_GetGammaTableG(int panel_id, tvin_port_t source_port, tvin_sig_fmt_t fmt, tcon_gamma_table_t *gamma_g); - int PQ_GetGammaTableB(int panel_id, tvin_port_t source_port, tvin_sig_fmt_t fmt, tcon_gamma_table_t *gamma_b); - int PQ_GetGammaSpecialTable(int gammaValue, const char *f_name, tcon_gamma_table_t *gamma_r); - int PQ_GetVGAAjustPara(tvin_sig_fmt_t vga_fmt, tvafe_vga_parm_t *adjparam); - int PQ_SetVGAAjustPara(tvin_sig_fmt_t vga_fmt, tvafe_vga_parm_t adjparam); - int PQ_GetPhaseArray(am_phase_t *am_phase); - int PQ_GetPLLParams(tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, am_regs_t *regs); - int PQ_GetCVD2Params(tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, am_regs_t *regs); - - int openPqDB(const char *); - int closeDB(); - int reopenDB(); - int getRegValues(const char *table_name, tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, am_regs_t *regs); - int getRegValuesByValue(const char *name, const char *f_name, const char *f2_name, const int val, const int val2, am_regs_t *regs); - int getRegValuesByValue_long(const char *name, const char *f_name, const char *f2_name, const int val, const int val2, am_regs_t *regs, am_regs_t *regs_1); - int LoadAllPQData(tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, int flag); - void initialTable(int type); - void transferFixTable(); - int replacePqDb(const char *newFilePath); - int getSharpnessFlag(); - -private: - int CaculateLevelParam(tvpq_data_t *pq_data, int nodes, int level); - am_regs_t CaculateLevelRegsParam(tvpq_sharpness_regs_t *pq_regs, int level, int flag); - int GetNonlinearMapping(tvpq_data_type_t data_type, tvin_port_t source_port, int level, int *params); - int GetNonlinearMappingByOSDFac(tvpq_data_type_t data_type, tv_source_input_type_t source_type, int *params); - int SetNonlinearMapping(tvpq_data_type_t data_type, tv_source_input_type_t source_type, int osd0, int osd25, int osd50, int osd75, int osd100); - int LoadPQData(tvpq_data_type_t data_type, tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, is_3d_type_t is2dOr3d, tvin_trans_fmt_t trans_fmt, int flag); - int loadSharpnessData(char *sqlmaster, char *table_name); - int PQ_GetGammaTable(int panel_id, tvin_port_t source_port, tvin_sig_fmt_t fmt, const char *f_name, tcon_gamma_table_t *val); - int SetNonlinearMappingByName(const char *name, tvpq_data_type_t data_type, tv_source_input_type_t source_type, int osd0, int osd25, int osd50, int osd75, int osd100); - int PQ_SetPQModeParamsByName(const char *name, tv_source_input_type_t source_type, vpp_picture_mode_t pq_mode, vpp_pq_para_t *params); - - tvpq_data_t pq_bri_data[15]; - tvpq_data_t pq_con_data[15]; - tvpq_data_t pq_sat_data[15]; - tvpq_data_t pq_hue_data[15]; - tvpq_sharpness_regs_t pq_sharpness_reg_data[10]; - tvpq_sharpness_regs_t pq_sharpness_reg_data_1[10]; - int bri_nodes; - int con_nodes; - int hue_nodes; - int sat_nodes; - int sha_nodes; - int sha_nodes_1; - int sha_diff_flag; - char PQ_DB_PATH[256]; -}; -#endif diff --git a/tvapi/libtv/vpp/CVpp.cpp b/tvapi/libtv/vpp/CVpp.cpp deleted file mode 100644 index 7a69b4e..0000000 --- a/tvapi/libtv/vpp/CVpp.cpp +++ b/dev/null @@ -1,3779 +0,0 @@ -#define LOG_TAG "CVpp" - -#include "CVpp.h" -#include <CTvLog.h> -#include "../tvsetting/CTvSetting.h" -#include "../tvutils/tvutils.h" -#include <cutils/properties.h> -#include "CPQdb.h" -#include <math.h> -#include <stdio.h> -#include <unistd.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <sys/ioctl.h> -#include <fcntl.h> -#include <string.h> -#include <pthread.h> -#include <errno.h> -#include <dlfcn.h> -#include "CTvLog.h" -#include "../tvconfig/tvconfig.h" -#include "CAv.h" - -CVpp *CVpp::mInstance; -CVpp *CVpp::getInstance() -{ - if (NULL == mInstance) mInstance = new CVpp(); - return mInstance; -} - -CVpp::CVpp() -{ - vpp_amvideo_fd = -1; - vpp_amvideo_3d_fd = -1; - mpPqData = new CPqData(); -} - -CVpp::~CVpp() -{ - if (mpPqData != NULL) { - delete mpPqData; - mpPqData = NULL; - } -} - -int CVpp::Vpp_Init(const char *pq_db_path) -{ - LOGD("Vpp_Init pq_db_path = %s", pq_db_path); - if (mpPqData->openPqDB(pq_db_path)) { - LOGW("%s, open pq failed!", __FUNCTION__); - } else { - LOGD("%s, open pq success!", __FUNCTION__); - } - - int ret = -1; - int backlight = 100; - int offset_r = 0, offset_g = 0, offset_b = 0, gain_r = 1024, gain_g = 1024, gain_b = 1024; - - Vpp_GetVppConfig(); - - ret = VPP_OpenModule(); - backlight = GetBacklight(SOURCE_TYPE_TV); - - if (mbVppCfg_backlight_init) { - backlight = (backlight + 100) * 255 / 200; - - if (backlight < 127 || backlight > 255) { - backlight = 255; - } - } - - SetBacklight(backlight, SOURCE_TYPE_TV, 0); - - if (SSMReadNonStandardValue() & 1) { - Set_Fixed_NonStandard(0); //close - } else { - Set_Fixed_NonStandard(2); //open - } - - LoadVppSettings(SOURCE_TYPE_MPEG, TVIN_SIG_FMT_NULL, INDEX_2D, TVIN_TFMT_2D); - - return ret; -} - -int CVpp::Vpp_Uninit(void) -{ - Vpp_ResetLastVppSettingsSourceType(); - VPP_CloseModule(); - mpPqData->closeDb(); - return 0; -} -CPqData *CVpp::getPqData() -{ - return mpPqData; -} - -int CVpp::doSuspend() -{ - return mpPqData->closeDb(); -} - -int CVpp::doResume() -{ - return mpPqData->reopenDB(); -} -int CVpp::VPP_OpenModule(void) -{ - - if (vpp_amvideo_fd < 0) { - vpp_amvideo_fd = open(VPP_DEV_PATH, O_RDWR); - - LOGD("~~~open~~~##VPP_OpenModule##VPP_DEV_PATH : %s##", VPP_DEV_PATH); - - if (vpp_amvideo_fd < 0) { - LOGE("Open vpp module, error(%s)!\n", strerror(errno)); - return -1; - } - } - - if (vpp_amvideo_3d_fd < 0) { - vpp_amvideo_3d_fd = open(VPP_3D_DEV_PATH, O_RDWR); - LOGD("~~~open~~~##VPP_OpenModule##VPP_3D_DEV_PATH : %s##", VPP_3D_DEV_PATH); - - if (vpp_amvideo_3d_fd < 0) { - LOGE("Open vpp 3d module, error(%s)!\n", strerror(errno)); - return -1; - } - } - - return vpp_amvideo_fd; -} - -int CVpp::VPP_CloseModule(void) -{ - if (vpp_amvideo_fd >= 0) { - close ( vpp_amvideo_fd); - vpp_amvideo_fd = -1; - } - - if (vpp_amvideo_3d_fd >= 0) { - close ( vpp_amvideo_3d_fd); - vpp_amvideo_3d_fd = -1; - } - - return 0; -} - -int CVpp::VPP_DeviceIOCtl(int request, ...) -{ - int tmp_ret = -1; - va_list ap; - void *arg; - va_start(ap, request); - arg = va_arg ( ap, void * ); - va_end(ap); - tmp_ret = ioctl(vpp_amvideo_fd, request, arg); - return tmp_ret; -} - -int CVpp::Vpp_LoadRegs(am_regs_t regs) -{ - LOGD("~~~VPP_DeviceIOCtl~~~##Vpp_LoadRegs##AMVECM_IOC_LOAD_REG##"); - - int count_retry = 20; - int rt = 0; - while (count_retry) { - rt = VPP_DeviceIOCtl(AMVECM_IOC_LOAD_REG, ®s); - if (rt < 0) { - LOGE("%s, error(%s), errno(%d)\n", __FUNCTION__, strerror(errno), errno); - if (errno == EBUSY) { - LOGE("%s, %s, retry...\n", __FUNCTION__, strerror(errno)); - count_retry--; - continue; - } - break; - } - break; - } - - return rt; -} - -int CVpp::isPreviewWindow() -{ - char prop_value[PROPERTY_VALUE_MAX] = {0}; - property_get("tv.is.preview.window", prop_value, "false"); - LOGD("%s, prop tv.is.preview.window is \"%s\".\n", __FUNCTION__, prop_value); - return (strcmp(prop_value, "true") == 0) ? 1 : 0; -} - -int CVpp::LoadVppSettings(tv_source_input_type_t source_type, tvin_sig_fmt_t sig_fmt, - is_3d_type_t is3d, tvin_trans_fmt_t trans_fmt) -{ - int val = 0, ret = -1; - vpp_color_temperature_mode_t temp_mode = VPP_COLOR_TEMPERATURE_MODE_STANDARD; - vpp_picture_mode_t pqmode = VPP_PICTURE_MODE_STANDARD; - vpp_display_mode_t dispmode = VPP_DISPLAY_MODE_169; - vpp_noise_reduction_mode_t nr_mode = VPP_NOISE_REDUCTION_MODE_MID; - tvin_port_t source_port = CTvin::Tvin_GetSourcePortBySourceType(source_type); - - if ((vpp_setting_last_source_type == source_type) && (vpp_setting_last_sig_fmt == sig_fmt) - /*&& ( vpp_setting_last_3d_status == status showbo mark)*/ - && (vpp_setting_last_trans_fmt == trans_fmt)) { - return -1; - } - - nr_mode = GetNoiseReductionMode(source_type); - ret |= Vpp_SetNoiseReductionMode(nr_mode, source_type, source_port, sig_fmt, is3d, trans_fmt); - ret |= Vpp_SetXVYCCMode(VPP_XVYCC_MODE_STANDARD, source_type, source_port, sig_fmt, is3d, - trans_fmt); - ret |= Vpp_SetMCDIMode(VPP_MCDI_MODE_STANDARD, source_type, source_port, sig_fmt, is3d, - trans_fmt); - ret |= Vpp_SetDeblockMode(VPP_DEBLOCK_MODE_MIDDLE, source_port, sig_fmt, is3d, trans_fmt); - - Vpp_LoadDI(source_type, sig_fmt, is3d, trans_fmt); - Vpp_LoadBasicRegs(source_type, sig_fmt, is3d, trans_fmt); - Vpp_LoadGamma(source_type, sig_fmt); - - ret |= Vpp_SetBaseColorMode(GetBaseColorMode(), source_port, sig_fmt, is3d, trans_fmt); - - if (isPreviewWindow()) { - temp_mode = GetColorTemperature(SOURCE_TYPE_MPEG); - if (temp_mode == VPP_COLOR_TEMPERATURE_MODE_USER) { - ret |= Vpp_SetColorTemperatureUser(temp_mode, SOURCE_TYPE_MPEG); - } else { - CheckColorTemperatureParamAlldata(TVIN_PORT_HDMI0, sig_fmt, trans_fmt); // check colortmp backup data - ret |= Vpp_SetColorTemperature(temp_mode, SOURCE_TYPE_MPEG, source_port, sig_fmt, trans_fmt); - } - } else { - temp_mode = GetColorTemperature(source_type); - if (temp_mode == VPP_COLOR_TEMPERATURE_MODE_USER) { - ret |= Vpp_SetColorTemperatureUser(temp_mode, source_type); - } else { - CheckColorTemperatureParamAlldata(TVIN_PORT_HDMI0, sig_fmt, trans_fmt); // check colortmp backup data - ret |= Vpp_SetColorTemperature(temp_mode, source_type, source_port, sig_fmt, trans_fmt); - } - } - - pqmode = GetPQMode(source_type); - ret |= Vpp_SetPQMode(pqmode, source_type, source_port, sig_fmt, is3d, trans_fmt); - - ret |= SetDNLP(source_type, source_port, sig_fmt, is3d, trans_fmt); - - vpp_setting_last_source_type = source_type; - vpp_setting_last_sig_fmt = sig_fmt; - //showbo mark vpp_setting_last_3d_status = status; - vpp_setting_last_trans_fmt = trans_fmt; - - return 0; -} - -int CVpp::Vpp_GetVppConfig(void) -{ - const char *config_value; - - config_value = config_get_str(CFG_SECTION_TV, "vpp.pqmode.depend.bklight", "null"); - if (strcmp(config_value, "enable") == 0) { - mbVppCfg_pqmode_depend_bklight = true; - } else { - mbVppCfg_pqmode_depend_bklight = false; - } - - config_value = config_get_str(CFG_SECTION_TV, "vpp.color.temp.bysource", "enable"); - if (strcmp(config_value, "enable") == 0) { - mbVppCfg_colortemp_by_source = true; - } else { - mbVppCfg_colortemp_by_source = true; - } - - config_value = config_get_str(CFG_SECTION_TV, "vpp.panoroma.switch", "null"); - if (strcmp(config_value, "enable") == 0) { - mbVppCfg_panorama_switch = true; - } else { - mbVppCfg_panorama_switch = false; - } - - config_value = config_get_str(CFG_SECTION_TV, "vpp.backlight.reverse", "null"); - if (strcmp(config_value, "enable") == 0) { - mbVppCfg_backlight_reverse = true; - } else { - mbVppCfg_backlight_reverse = false; - } - - config_value = config_get_str(CFG_SECTION_TV, "vpp.backlight.init", "null"); - if (strcmp(config_value, "enable") == 0) { - mbVppCfg_backlight_init = true; - } else { - mbVppCfg_backlight_init = false; - } - - config_value = config_get_str(CFG_SECTION_TV, "vpp.pqwithout.hue", "null"); - if (strcmp(config_value, "enable") == 0) { - mbVppCfg_pqmode_without_hue = true; - } else { - mbVppCfg_pqmode_without_hue = false; - } - - config_value = config_get_str(CFG_SECTION_TV, "vpp.hue.reverse", "null"); - if (strcmp(config_value, "enable") == 0) { - mbVppCfg_hue_reverse = true; - } else { - mbVppCfg_hue_reverse = false; - } - - config_value = config_get_str(CFG_SECTION_TV, "vpp.gamma.onoff", "null"); - if (strcmp(config_value, "disable") == 0) { - mbVppCfg_gamma_onoff = true; - } else { - mbVppCfg_gamma_onoff = false; - } - - config_value = config_get_str(CFG_SECTION_TV, "vpp.whitebalance.same_param", "null"); - if (strcmp(config_value, "enable") == 0) { - mbVppCfg_whitebalance_sameparam = true; - } else { - mbVppCfg_whitebalance_sameparam = false; - } - - config_value = config_get_str(CFG_SECTION_TV, "vpp.new.cm", "disable"); - if (strcmp(config_value, "enable") == 0) { - mbVppCfg_new_cm = true; - } else { - mbVppCfg_new_cm = false; - } - - config_value = config_get_str(CFG_SECTION_TV, "vpp.new.nr", "disable"); - if (strcmp(config_value, "enable") == 0) { - mbVppCfg_new_nr = true; - } else { - mbVppCfg_new_nr = false; - } - - return 0; -} - -int CVpp::Vpp_LoadDI(tv_source_input_type_t source_type, tvin_sig_fmt_t sig_fmt, - is_3d_type_t is3d, tvin_trans_fmt_t trans_fmt) -{ - am_regs_t regs; - int ret = -1; - tvin_port_t source_port = CTvin::Tvin_GetSourcePortBySourceType(source_type); - if (mpPqData->getRegValues("GeneralDITable", source_port, sig_fmt, is3d, trans_fmt, ®s) > 0) { - if (Vpp_LoadRegs(regs) < 0) { - LOGE("%s, Vpp_LoadRegs failed!\n", __FUNCTION__); - } else { - ret = 0; - } - } else { - LOGE("%s getRegValues failed!\n", "Vpp_LoadDI"); - } - return ret; -} - -int CVpp::Vpp_LoadBasicRegs(tv_source_input_type_t source_type, tvin_sig_fmt_t sig_fmt, - is_3d_type_t is3d, tvin_trans_fmt_t trans_fmt) -{ - am_regs_t regs; - int ret = -1, enableFlag = -1; - - tvin_port_t source_port = CTvin::Tvin_GetSourcePortBySourceType(source_type); - - if (mpPqData->getRegValues("GeneralCommonTable", source_port, sig_fmt, is3d, trans_fmt, ®s) > 0) { - if (Vpp_LoadRegs(regs) < 0) { - LOGE("%s, Vpp_LoadRegs failed!\n", __FUNCTION__); - } else { - ret = 0; - } - } else { - LOGE("%s getRegValues failed!\n", "Vpp_LoadBasicRegs"); - } - - if (mpPqData->LoadAllPQData(source_port, sig_fmt, is3d, trans_fmt, enableFlag) == 0) { - ret = 0; - } else { - LOGE("%s, getPQData failed!\n", "Vpp_LoadBasicRegs"); - ret = -1; - } - - return ret; -} - -int CVpp::Vpp_ResetLastVppSettingsSourceType(void) -{ - vpp_setting_last_source_type = SOURCE_TYPE_MAX; - vpp_setting_last_sig_fmt = TVIN_SIG_FMT_MAX; - //showbo mark vpp_setting_last_3d_status = STATUS3D_MAX; - vpp_setting_last_trans_fmt = TVIN_TFMT_3D_MAX; - return 0; -} - -int CVpp::VPP3D_DeviceIOCtl(int request, ...) -{ - int tmp_ret = -1; - va_list ap; - void *arg; - - if (vpp_amvideo_3d_fd >= 0) { - va_start(ap, request); - arg = va_arg ( ap, void * ); - va_end(ap); - - tmp_ret = ioctl(vpp_amvideo_3d_fd, request, arg); - return tmp_ret; - } - - return -1; -} - -int CVpp::Vpp_GetPQModeValue(tv_source_input_type_t source_type, vpp_picture_mode_t pq_mode, - vpp_pq_para_t *pq_para) -{ - vpp_pq_para_t parms; - vpp_picture_mode_t real_pq_mode; - - if (pq_para == NULL) { - return -1; - } - - if (pq_mode == VPP_PICTURE_MODE_MOVIE) { - real_pq_mode = VPP_PICTURE_MODE_SOFT; - } else if (pq_mode == VPP_PICTURE_MODE_COLORFUL) { - real_pq_mode = VPP_PICTURE_MODE_BRIGHT; - } else { - real_pq_mode = pq_mode; - } - if (mpPqData->PQ_GetPQModeParams(source_type, real_pq_mode, pq_para) == 0) { - if (mbVppCfg_pqmode_without_hue) { - SSMReadHue(source_type, &(pq_para->hue)); - } - if (pq_mode == VPP_PICTURE_MODE_MOVIE) { - pq_para->brightness -= 10; - pq_para->contrast -= 10; - pq_para->saturation -= 10; - pq_para->sharpness -= 10; - } else if (pq_mode == VPP_PICTURE_MODE_COLORFUL) { - pq_para->brightness += 10; - pq_para->contrast += 10; - pq_para->saturation += 10; - pq_para->sharpness += 10; - } else { - } - - } else { - LOGE("%s, PQ_GetPQModeParams failed!\n", "Vpp_GetPQModeValue"); - return -1; - } - - return 0; -} - -int CVpp::Vpp_SetPQParams(tv_source_input_type_t source_type, vpp_picture_mode_t pq_mode, - vpp_pq_para_t pq_para, tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, is_3d_type_t is3d, - tvin_trans_fmt_t trans_fmt) -{ - int ret = 0, brightness = 50, contrast = 50, saturation = 50, hue = 50, sharnpess = 50; - am_regs_t regs, regs_l; - int level; - - if (pq_para.brightness >= 0 && pq_para.brightness <= 100) { - if (mpPqData->PQ_GetBrightnessParams(source_port, sig_fmt, is3d, trans_fmt, - pq_para.brightness, &brightness) == 0) { - } else { - LOGE("%s, PQ_GetBrightnessParams error!\n", "Vpp_SetPQParams"); - } - - ret |= VPP_SetVideoBrightness(brightness); - } - - if (pq_para.contrast >= 0 && pq_para.contrast <= 100) { - if (mpPqData->PQ_GetContrastParams(source_port, sig_fmt, is3d, trans_fmt, pq_para.contrast, - &contrast) == 0) { - } else { - LOGE("%s, PQ_GetBrightnessParams error!\n", "Vpp_SetPQParams"); - } - - ret |= VPP_SetVideoContrast(contrast); - } - - if (pq_para.saturation >= 0 && pq_para.saturation <= 100) { - if (mpPqData->PQ_GetSaturationParams(source_port, sig_fmt, is3d, trans_fmt, - pq_para.saturation, &saturation) == 0) { - - if (mbVppCfg_hue_reverse) { - pq_para.hue = 100 - pq_para.hue; - } else { - pq_para.hue = pq_para.hue; - } - - if (mpPqData->PQ_GetHueParams(source_port, sig_fmt, is3d, trans_fmt, pq_para.hue, &hue) - == 0) { - if ((source_type == SOURCE_TYPE_TV || source_type == SOURCE_TYPE_AV) && (sig_fmt - == TVIN_SIG_FMT_CVBS_NTSC_M || sig_fmt == TVIN_SIG_FMT_CVBS_NTSC_443)) { - } else { - hue = 0; - } - } else { - LOGE("%s, PQ_GetHueParams error!\n", "Vpp_SetPQParams"); - } - } else { - LOGE("%s, PQ_GetSaturationParams error!\n", "Vpp_SetPQParams"); - } - - ret |= VPP_SetVideoSaturationHue(saturation, hue); - } - - if (pq_para.sharpness >= 0 && pq_para.sharpness <= 100) { - level = pq_para.sharpness; - - if (mpPqData->PQ_GetSharpnessParams(source_port, sig_fmt, is3d, trans_fmt, level, ®s, - ®s_l) == 0) { - if (Vpp_LoadRegs(regs) < 0) { - LOGE("%s, load reg for sharpness0 failed!\n", __FUNCTION__); - } - if (mpPqData->getSharpnessFlag() == 6 && Vpp_LoadRegs(regs_l) < 0) { - LOGE("%s, load reg for sharpness1 failed!\n", __FUNCTION__); - } - } else { - LOGE("%s, PQ_GetSharpnessParams failed!\n", __FUNCTION__); - } - } - - if (pq_mode == VPP_PICTURE_MODE_MOVIE) { - ret |= SetColorTemperature(VPP_COLOR_TEMPERATURE_MODE_WARM, source_type, 1); - } else if (pq_mode == VPP_PICTURE_MODE_COLORFUL) { - ret |= SetColorTemperature(VPP_COLOR_TEMPERATURE_MODE_COLD, source_type, 1); - } - - return ret; -} - -int CVpp::Vpp_SetPQMode(vpp_picture_mode_t pq_mode, 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) -{ - vpp_pq_para_t pq_para; - int ret = -1; - - if (pq_mode == VPP_PICTURE_MODE_USER) { - ret = SSMReadBrightness(source_type, &pq_para.brightness); - ret = SSMReadContrast(source_type, &pq_para.contrast); - ret = SSMReadSaturation(source_type, &pq_para.saturation); - ret = SSMReadHue(source_type, &pq_para.hue); - ret = SSMReadSharpness(source_type, &pq_para.sharpness); - } /*else if (pq_mode == VPP_PICTURE_MODE_MOVIE) { - ret = Vpp_GetPQModeValue ( source_type, VPP_PICTURE_MODE_SOFT, &pq_para ); - pq_para.brightness -=10; - pq_para.contrast -=10; - pq_para.saturation -=10; - pq_para.sharpness -=10; - } else if (pq_mode == VPP_PICTURE_MODE_COLORFUL) { - ret = Vpp_GetPQModeValue ( source_type, VPP_PICTURE_MODE_BRIGHT, &pq_para ); - pq_para.brightness +=10; - pq_para.contrast +=10; - pq_para.saturation +=10; - pq_para.sharpness +=10; - }*/else { - ret = Vpp_GetPQModeValue(source_type, pq_mode, &pq_para); - } - - ret |= Vpp_SetPQParams(source_type, pq_mode, pq_para, source_port, sig_fmt, is3d, trans_fmt); - - return ret; -} - -int CVpp::SavePQMode(vpp_picture_mode_t pq_mode, tv_source_input_type_t source_type) -{ - vpp_pq_para_t pq_para; - int ret = -1; - int tmp_pic_mode = 0; - - tmp_pic_mode = (int) pq_mode; - ret = SSMSavePictureMode(source_type, tmp_pic_mode); - return ret; -} - -int CVpp::SetPQMode(vpp_picture_mode_t pq_mode, tv_source_input_type_t source_type, - tvin_sig_fmt_t sig_fmt, tvin_trans_fmt_t trans_fmt, is_3d_type_t is3d, int is_save) -{ - tvin_port_t source_port = CTvin::Tvin_GetSourcePortBySourceType(source_type); - - if (0 == Vpp_SetPQMode(pq_mode, source_type, source_port, sig_fmt, is3d, trans_fmt)) { - if (is_save == 1) { - return SavePQMode(pq_mode, source_type); - } else { - return 0; - } - } - - LOGE("%s, failed!", "SetPQMode"); - return -1; -} - -vpp_picture_mode_t CVpp::GetPQMode(tv_source_input_type_t source_type) -{ - vpp_picture_mode_t data = VPP_PICTURE_MODE_STANDARD; - int tmp_pic_mode = 0; - - SSMReadPictureMode(source_type, &tmp_pic_mode); - data = (vpp_picture_mode_t) tmp_pic_mode; - - if (data < VPP_PICTURE_MODE_STANDARD || data >= VPP_PICTURE_MODE_MAX) { - data = VPP_PICTURE_MODE_STANDARD; - } - - return data; -} - -int CVpp::Vpp_SetColorDemoMode(vpp_color_demomode_t demomode) -{ - cm_regmap_t regmap; - unsigned long *temp_regmap; - int i = 0; - int tmp_demo_mode = 0; - vpp_display_mode_t displaymode = VPP_DISPLAY_MODE_MODE43; - - switch (demomode) { - case VPP_COLOR_DEMO_MODE_YOFF: - temp_regmap = DemoColorYOffRegMap; - break; - - case VPP_COLOR_DEMO_MODE_COFF: - temp_regmap = DemoColorCOffRegMap; - break; - - case VPP_COLOR_DEMO_MODE_GOFF: - temp_regmap = DemoColorGOffRegMap; - break; - - case VPP_COLOR_DEMO_MODE_MOFF: - temp_regmap = DemoColorMOffRegMap; - break; - - case VPP_COLOR_DEMO_MODE_ROFF: - temp_regmap = DemoColorROffRegMap; - break; - - case VPP_COLOR_DEMO_MODE_BOFF: - temp_regmap = DemoColorBOffRegMap; - break; - - case VPP_COLOR_DEMO_MODE_RGBOFF: - temp_regmap = DemoColorRGBOffRegMap; - break; - - case VPP_COLOR_DEMO_MODE_YMCOFF: - temp_regmap = DemoColorYMCOffRegMap; - break; - - case VPP_COLOR_DEMO_MODE_ALLOFF: - temp_regmap = DemoColorALLOffRegMap; - break; - - case VPP_COLOR_DEMO_MODE_ALLON: - default: - if (displaymode == VPP_DISPLAY_MODE_MODE43) { - temp_regmap = DemoColorSplit4_3RegMap; - } else { - temp_regmap = DemoColorSplitRegMap; - } - - break; - } - - for (i = 0; i < CM_REG_NUM; i++) { - regmap.reg[i] = temp_regmap[i]; - } - - if (VPP_SetCMRegisterMap(®map) == 0) { - tmp_demo_mode = demomode; - LOGD("%s, demomode[%d] success.", "Vpp_SetColorDemoMode", demomode); - return 0; - } - - LOGE("%s, demomode[%d] failed.", "Vpp_SetColorDemoMode", demomode); - return -1; -} - -int CVpp::Vpp_SetBaseColorMode(vpp_color_basemode_t basemode, tvin_port_t source_port, - tvin_sig_fmt_t sig_fmt, is_3d_type_t is3d, tvin_trans_fmt_t trans_fmt) -{ - int ret = -1; - am_regs_t regs; - LOGD("%s.\n", "Vpp_SetBaseColorMode"); - - if (mbVppCfg_new_cm) { - if (mpPqData->PQ_GetCM2Params((vpp_color_management2_t) basemode, source_port, sig_fmt, - is3d, trans_fmt, ®s) == 0) { - ret = Vpp_LoadRegs(regs); - } else { - LOGE("PQ_GetCM2Params failed!\n"); - } - } - - return ret; -} - -int CVpp::Vpp_SetColorTemperatureUser(vpp_color_temperature_mode_t temp_mode __unused, - tv_source_input_type_t source_type) -{ - tcon_rgb_ogo_t rgbogo; - unsigned int gain_r, gain_g, gain_b; - - if (SSMReadRGBGainRStart(0, &gain_r) != 0) { - return -1; - } - - rgbogo.r_gain = gain_r; - - if (SSMReadRGBGainGStart(0, &gain_g) != 0) { - return -1; - } - - rgbogo.g_gain = gain_g; - - if (SSMReadRGBGainBStart(0, &gain_b) != 0) { - return -1; - } - - rgbogo.b_gain = gain_b; - rgbogo.r_post_offset = 0; - rgbogo.r_pre_offset = 0; - rgbogo.g_post_offset = 0; - rgbogo.g_pre_offset = 0; - rgbogo.b_post_offset = 0; - rgbogo.b_pre_offset = 0; - - if (VPP_SetRGBOGO(&rgbogo) == 0) { - return 0; - } - - LOGE("%s, source_type_user[%d] failed.", "Vpp_SetColorTemperatureUser", source_type); - return -1; -} - -int CVpp::Vpp_SetColorTemperature(vpp_color_temperature_mode_t Tempmode, - tv_source_input_type_t source_type, - tvin_port_t source_port __unused, - tvin_sig_fmt_t sig_fmt __unused, - tvin_trans_fmt_t trans_fmt __unused) -{ - tcon_rgb_ogo_t rgbogo, rgbPreOffset; - int ret = -1; - - if (mbVppCfg_gamma_onoff) { - VPP_SetGammaOnOff(0); - } else { - VPP_SetGammaOnOff(1); - } - - GetColorTemperatureParams(Tempmode, &rgbogo); - - if (VPP_SetRGBOGO(&rgbogo) == 0) { - return 0; - } - - LOGE("%s, source_type[%d] failed.", "Vpp_SetColorTemperature", source_type); - return -1; -} - -int CVpp::Vpp_SetBrightness(int value, tv_source_input_type_t source_type __unused, tvin_port_t source_port, - tvin_sig_fmt_t sig_fmt, is_3d_type_t is3d, tvin_trans_fmt_t trans_fmt) -{ - int ret = -1; - int params; - int level; - - if (value >= 0 && value <= 100) { - level = value; - LOGD("%s.\n", "Vpp_SetBrightness"); - - if (mpPqData->PQ_GetBrightnessParams(source_port, sig_fmt, is3d, trans_fmt, level, ¶ms) - == 0) { - if (VPP_SetVideoBrightness(params) == 0) { - return 0; - } - } else { - LOGE("%s, PQ_GetBrightnessParams failed!\n", "Vpp_SetBrightness"); - } - } - - return ret; -} - -int CVpp::VPP_SetVideoBrightness(int value) -{ - FILE *fp = NULL; - - fp = fopen("/sys/class/amvecm/brightness", "w"); - - LOGD("~~~fopen~~~##VPP_SetVideoBrightness##%s : %d ##", "/sys/class/amvecm/brightness", value); - - if (fp == NULL) { - LOGE("Open /sys/class/amvecm/brightness error(%s)!\n", strerror(errno)); - return -1; - } - - fprintf(fp, "%d", value); - fclose(fp); - fp = NULL; - - return 0; -} - -int CVpp::SetBrightness(int value, tv_source_input_type_t source_type, tvin_sig_fmt_t sig_fmt, - tvin_trans_fmt_t trans_fmt, is_3d_type_t is3d, int is_save) -{ - tvin_port_t source_port = CTvin::Tvin_GetSourcePortBySourceType(source_type); - - if (0 == Vpp_SetBrightness(value, source_type, source_port, sig_fmt, is3d, trans_fmt)) { - if (is_save == 1) { - return SSMSaveBrightness(source_type, value); - } else { - return 0; - } - } else { - LOGE("%s, failed!", "SetBrightness"); - return -1; - } - return 0; -} - -int CVpp::GetBrightness(tv_source_input_type_t source_type) -{ - int data = 50; - vpp_pq_para_t pq_para; - vpp_picture_mode_t pq_mode = GetPQMode(source_type); - - if (pq_mode == VPP_PICTURE_MODE_USER) { - SSMReadBrightness(source_type, &data); - } else { - if (Vpp_GetPQModeValue(source_type, pq_mode, &pq_para) == 0) { - data = pq_para.brightness; - } - } - - if (data < 0 || data > 100) { - data = 50; - } - - return data; -} - -int CVpp::Vpp_SetContrast(int value, tv_source_input_type_t source_type __unused, tvin_port_t source_port, - tvin_sig_fmt_t sig_fmt, is_3d_type_t is3d, tvin_trans_fmt_t trans_fmt) -{ - int ret = -1; - int params; - int level; - - if (value >= 0 && value <= 100) { - level = value; - LOGD("%s.\n", "Vpp_SetContrast"); - - if (mpPqData->PQ_GetContrastParams(source_port, sig_fmt, is3d, trans_fmt, level, ¶ms) - == 0) { - if (VPP_SetVideoContrast(params) == 0) { - return 0; - } - } else { - LOGE("%s, PQ_GetContrastParams failed!\n", "Vpp_SetContrast"); - } - } - - return ret; -} - -int CVpp::VPP_SetVideoContrast(int value) -{ - FILE *fp = NULL; - - fp = fopen("/sys/class/amvecm/contrast", "w"); - LOGD("~~~fopen~~~##VPP_SetVideoContrast##%s : %d ##", "/sys/class/amvecm/contrast", value); - - if (fp == NULL) { - LOGE("Open /sys/class/amvecm/contrast error(%s)!\n", strerror(errno)); - return -1; - } - - fprintf(fp, "%d", value); - fclose(fp); - fp = NULL; - - return 0; -} - -int CVpp::SetContrast(int value, tv_source_input_type_t source_type, tvin_sig_fmt_t sig_fmt, - tvin_trans_fmt_t trans_fmt, is_3d_type_t is3d, int is_save) -{ - tvin_port_t source_port = CTvin::Tvin_GetSourcePortBySourceType(source_type); - - if (0 == Vpp_SetContrast(value, source_type, source_port, sig_fmt, is3d, trans_fmt)) { - if (is_save == 1) { - return SSMSaveContrast(source_type, value); - } else { - return 0; - } - } else { - LOGE("%s, failed!", "SetContrast"); - return -1; - } -} - -int CVpp::GetContrast(tv_source_input_type_t source_type) -{ - int data = 50; - vpp_pq_para_t pq_para; - vpp_picture_mode_t pq_mode = GetPQMode(source_type); - - if (pq_mode == VPP_PICTURE_MODE_USER) { - SSMReadContrast(source_type, &data); - } else { - if (Vpp_GetPQModeValue(source_type, pq_mode, &pq_para) == 0) { - data = pq_para.contrast; - } - } - - if (data < 0 || data > 100) { - data = 50; - } - - return data; -} - -int CVpp::Vpp_SetSaturation(int value, tv_source_input_type_t source_type __unused, tvin_port_t source_port, - tvin_sig_fmt_t sig_fmt, is_3d_type_t is3d, tvin_trans_fmt_t trans_fmt) -{ - int ret = -1; - int params; - int level; - int hue = 0; - - if (value >= 0 && value <= 100) { - level = value; - - if (mpPqData->PQ_GetSaturationParams(source_port, sig_fmt, is3d, trans_fmt, level, ¶ms) - == 0) { - if (VPP_SetVideoSaturationHue(params, hue) == 0) { - return 0; - } - } - } - - return ret; -} - -int CVpp::SetSaturation(int value, tv_source_input_type_t source_type, tvin_sig_fmt_t sig_fmt, - tvin_trans_fmt_t trans_fmt, is_3d_type_t is3d, int is_save) -{ - tvin_port_t source_port = CTvin::Tvin_GetSourcePortBySourceType(source_type); - - if (0 == Vpp_SetSaturation(value, source_type, source_port, sig_fmt, is3d, trans_fmt)) { - if (is_save == 1) { - return SSMSaveSaturation(source_type, value); - } else { - return 0; - } - } else { - LOGE("%s, failed!", "SetSaturation"); - return -1; - } -} - -int CVpp::GetSaturation(tv_source_input_type_t source_type) -{ - int data = 50; - vpp_pq_para_t pq_para; - vpp_picture_mode_t pq_mode = GetPQMode(source_type); - - if (pq_mode == VPP_PICTURE_MODE_USER) { - SSMReadSaturation(source_type, &data); - } else { - if (Vpp_GetPQModeValue(source_type, pq_mode, &pq_para) == 0) { - data = pq_para.saturation; - } - } - - if (data < 0 || data > 100) { - data = 50; - } - - return data; -} - -int CVpp::Vpp_SetHue(int value, tv_source_input_type_t source_type, tvin_sig_fmt_t sig_fmt, - tvin_port_t source_port, is_3d_type_t is3d, tvin_trans_fmt_t trans_fmt) -{ - int ret = -1; - int params, saturation_params; - int level, saturation_level; - - if (value >= 0 && value <= 100) { - if (mbVppCfg_hue_reverse) { - level = 100 - value; - } else { - level = value; - } - - if (mpPqData->PQ_GetHueParams(source_port, sig_fmt, is3d, trans_fmt, level, ¶ms) == 0) { - saturation_level = GetSaturation(source_type); - - if (mpPqData->PQ_GetSaturationParams(source_port, sig_fmt, is3d, trans_fmt, - saturation_level, &saturation_params) == 0) { - } else { - saturation_params = -20; - } - - if (VPP_SetVideoSaturationHue(saturation_params, params) == 0) { - return 0; - } - } else { - LOGE("PQ_GetHueParams failed!\n"); - } - } - - return ret; -} - -int CVpp::SetHue(int value, tv_source_input_type_t source_type, tvin_sig_fmt_t sig_fmt, - tvin_trans_fmt_t trans_fmt, is_3d_type_t is3d, int is_save) -{ - tvin_port_t source_port = CTvin::Tvin_GetSourcePortBySourceType(source_type); - - if (0 == Vpp_SetHue(value, source_type, sig_fmt, source_port, is3d, trans_fmt)) { - if (is_save == 1) { - return SSMSaveHue(source_type, value); - } else { - return 0; - } - } else { - LOGE("%s, failed!", "SetHue"); - return -1; - } - - return 0; -} - -int CVpp::GetHue(tv_source_input_type_t source_type) -{ - int data = 50; - vpp_pq_para_t pq_para; - vpp_picture_mode_t pq_mode = GetPQMode(source_type); - - if (pq_mode == VPP_PICTURE_MODE_USER) { - SSMReadHue(source_type, &data); - } else { - if (Vpp_GetPQModeValue(source_type, pq_mode, &pq_para) == 0) { - data = pq_para.hue; - } - } - - if (data < 0 || data > 100) { - data = 50; - } - - return data; -} - -int CVpp::Vpp_SetSharpness(int value, tv_source_input_type_t source_type __unused, tvin_port_t source_port, - tvin_sig_fmt_t sig_fmt, is_3d_type_t is3d, tvin_trans_fmt_t trans_fmt) -{ - int ret = -1; - am_regs_t regs, regs_l; - int level; - - if (value >= 0 && value <= 100) { - level = value; - - if (mpPqData->PQ_GetSharpnessParams(source_port, sig_fmt, is3d, trans_fmt, level, ®s, ®s_l) == 0) { - LOGD("%s, sharpness flag:%d\n", __FUNCTION__, mpPqData->getSharpnessFlag()); - if (mpPqData->getSharpnessFlag() == 6) { - if (Vpp_LoadRegs(regs) >= 0 && Vpp_LoadRegs(regs_l) >= 0) - ret = 0; - } else { - if (Vpp_LoadRegs(regs) >= 0) - ret = 0; - } - } else { - } - } - - return ret; -} - -int CVpp::SetSharpness(int value, tv_source_input_type_t source_type, int is_enable, - is_3d_type_t is3d, tvin_sig_fmt_t sig_fmt, tvin_trans_fmt_t trans_fmt, int is_save) -{ - tvin_port_t source_port = CTvin::Tvin_GetSourcePortBySourceType(source_type); - - if (Vpp_SetSharpness(value, source_type, source_port, sig_fmt, is3d, trans_fmt) < 0) { - LOGE("%s, failed!", "SetSharpness"); - return -1; - } - - if (is_save == 1) { - if (is_enable) { - return SSMSaveSharpness(source_type, value); - - } - } - - return 0; -} - -int CVpp::GetSharpness(tv_source_input_type_t source_type) -{ - int data = 50; - vpp_pq_para_t pq_para; - vpp_picture_mode_t pq_mode = GetPQMode(source_type); - - if (pq_mode == VPP_PICTURE_MODE_USER) { - SSMReadSharpness(source_type, &data); - } else { - if (Vpp_GetPQModeValue(source_type, pq_mode, &pq_para) == 0) { - data = pq_para.sharpness; - } - } - - if (data < 0 || data > 100) { - data = 50; - } - - LOGD("%s, data[%d].", "GetSharpness", data); - return data; -} - -int CVpp::SetColorSpaceMode(vpp_color_space_type_t colorSpace) -{ - int ret = -1, fileRet = -1; - SSMSaveColorSpaceStart(colorSpace); - - switch (colorSpace) { - case VPP_COLOR_SPACE_RGB: - //marked by haifeng - // SetFileAttrValue ( "/sys/class/register/reg", "wc 0x1da1 0xc" ); - // SetFileAttrValue ( "/sys/class/register/reg", "wc 0x1d70 0x208" ); - // SetFileAttrValue ( "/sys/class/register/reg", "wc 0x1d71 0x74" ); - break; - - case VPP_COLOR_SPACE_YUV: - //marked by haifeng - // SetFileAttrValue ( "/sys/class/register/reg", "wc 0x1da1 0xe" ); - // SetFileAttrValue ( "/sys/class/register/reg", "wc 0x1d70 0x208" ); - // SetFileAttrValue ( "/sys/class/register/reg", "wc 0x1d71 0x76" ); - break; - - default: - break; - } - - return 0; -} - -int CVpp::Vpp_SetNoiseReductionMode(vpp_noise_reduction_mode_t nr_mode, - tv_source_input_type_t source_type __unused, - tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, - is_3d_type_t is3d, tvin_trans_fmt_t trans_fmt) -{ - int ret = -1; - am_regs_t regs; - - if (mbVppCfg_new_nr) { - if (mpPqData->PQ_GetNR2Params((vpp_noise_reduction2_mode_t) nr_mode, source_port, sig_fmt, - is3d, trans_fmt, ®s) == 0) { - ret = Vpp_LoadRegs(regs); - } else { - LOGE("PQ_GetNR2Params failed!\n"); - } - } - - return ret; -} - -int CVpp::SaveNoiseReductionMode(vpp_noise_reduction_mode_t nr_mode, - tv_source_input_type_t source_type) -{ - int tmp_save_noisereduction_mode = (int) nr_mode; - return SSMSaveNoiseReduction(source_type, tmp_save_noisereduction_mode); -} - -int CVpp::SetNoiseReductionMode(vpp_noise_reduction_mode_t nr_mode, - tv_source_input_type_t source_type, tvin_sig_fmt_t sig_fmt, is_3d_type_t is3d, - tvin_trans_fmt_t trans_fmt, int is_save) -{ - tvin_port_t source_port = CTvin::Tvin_GetSourcePortBySourceType(source_type); - if (0 == Vpp_SetNoiseReductionMode(nr_mode, source_type, source_port, sig_fmt, is3d, trans_fmt)) { - if (is_save == 1) { - return SaveNoiseReductionMode(nr_mode, source_type); - } else { - return 0; - } - } - - LOGE("%s, failed!", __FUNCTION__); - return -1; -} - -vpp_noise_reduction_mode_t CVpp::GetNoiseReductionMode(tv_source_input_type_t source_type) -{ - vpp_noise_reduction_mode_t data = VPP_NOISE_REDUCTION_MODE_MID; - int tmp_nr_mode = 0; - - SSMReadNoiseReduction(source_type, &tmp_nr_mode); - data = (vpp_noise_reduction_mode_t) tmp_nr_mode; - - if (data < VPP_NOISE_REDUCTION_MODE_OFF || data > VPP_NOISE_REDUCTION_MODE_AUTO) { - data = VPP_NOISE_REDUCTION_MODE_MID; - } - - return data; -} - -int CVpp::Vpp_SetXVYCCMode(vpp_xvycc_mode_t xvycc_mode, tv_source_input_type_t source_type __unused, - tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, is_3d_type_t is3d, - tvin_trans_fmt_t trans_fmt) -{ - int ret = -1; - am_regs_t regs, regs_1; - char prop_value[PROPERTY_VALUE_MAX]; - - memset(prop_value, '\0', 16); - const char *config_value; - config_value = config_get_str(CFG_SECTION_TV, "vpp.xvycc.switch_control", "null"); - - if (strcmp(config_value, "enable") == 0) { - if (mpPqData->PQ_GetXVYCCParams((vpp_xvycc_mode_t) xvycc_mode, source_port, sig_fmt, is3d, - trans_fmt, ®s, ®s_1) == 0) { - ret = Vpp_LoadRegs(regs); - ret |= Vpp_LoadRegs(regs_1); - } else { - LOGE("PQ_GetXVYCCParams failed!\n"); - } - } else { - LOGE("disable xvycc!\n"); - } - return ret; -} - -int CVpp::Vpp_SetMCDIMode(vpp_mcdi_mode_t mcdi_mode, tv_source_input_type_t source_type __unused, - tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, is_3d_type_t is3d, - tvin_trans_fmt_t trans_fmt) -{ - int ret = -1; - am_regs_t regs; - - if (mpPqData->PQ_GetMCDIParams((vpp_mcdi_mode_t) mcdi_mode, source_port, sig_fmt, is3d, - trans_fmt, ®s) == 0) { - ret = Vpp_LoadRegs(regs); - } else { - LOGE("%s, PQ_GetMCDIParams failed!\n", __FUNCTION__); - } - return ret; -} - -int CVpp::Vpp_SetDeblockMode(vpp_deblock_mode_t mode, tvin_port_t source_port, - tvin_sig_fmt_t sig_fmt, is_3d_type_t is3d, tvin_trans_fmt_t trans_fmt) -{ - int ret = -1; - am_regs_t regs; - - if (mpPqData->PQ_GetDeblockParams(mode, source_port, sig_fmt, is3d, trans_fmt, ®s) == 0) { - ret = Vpp_LoadRegs(regs); - } else { - LOGE("%s PQ_GetDeblockParams failed!\n", __FUNCTION__); - } - return ret; -} - -int CVpp::Vpp_LoadGammaDefault(tv_source_input_type_t source_type, tvin_sig_fmt_t sig_fmt) -{ - int ret = -1; - int panel_id = 0; - tcon_gamma_table_t gamma_r, gamma_g, gamma_b; - - tvin_port_t source_port = CTvin::Tvin_GetSourcePortBySourceType(source_type); - - LOGD("Enter %s.\n", __FUNCTION__); - ret = mpPqData->PQ_GetGammaTableR(panel_id, source_port, sig_fmt, &gamma_r); - ret |= mpPqData->PQ_GetGammaTableG(panel_id, source_port, sig_fmt, &gamma_g); - ret |= mpPqData->PQ_GetGammaTableB(panel_id, source_port, sig_fmt, &gamma_b); - - if (ret == 0) { - VPP_SetGammaTbl_R((unsigned short *) gamma_r.data); - VPP_SetGammaTbl_G((unsigned short *) gamma_g.data); - VPP_SetGammaTbl_B((unsigned short *) gamma_b.data); - } else { - LOGE("%s, PQ_GetGammaTable failed!", __FUNCTION__); - } - - return ret; - -} - -int CVpp::Vpp_LoadGammaSpecial(int gammaValue) -{ - int ret = -1; - int panel_id = 0; - tcon_gamma_table_t gamma_r, gamma_g, gamma_b; - - LOGD("Enter %s.\n", __FUNCTION__); - ret = mpPqData->PQ_GetGammaSpecialTable(gammaValue, "Red", &gamma_r); - ret |= mpPqData->PQ_GetGammaSpecialTable(gammaValue, "Green", &gamma_g); - ret |= mpPqData->PQ_GetGammaSpecialTable(gammaValue, "Blue", &gamma_b); - - if (ret == 0) { - VPP_SetGammaTbl_R((unsigned short *) gamma_r.data); - VPP_SetGammaTbl_G((unsigned short *) gamma_g.data); - VPP_SetGammaTbl_B((unsigned short *) gamma_b.data); - } else { - LOGE("%s, PQ_GetGammaSpecialTable failed!", __FUNCTION__); - } - - return ret; - -} - -int CVpp::Vpp_LoadGamma(tv_source_input_type_t source_type, tvin_sig_fmt_t sig_fmt) -{ - int gammaValue = 0, ret = -1; - - if (SSMReadGammaValue(&gammaValue) < 0) { - LOGE("%s, SSMReadGammaValue ERROR, So Load Default GAMMA!\n", __FUNCTION__); - ret = Vpp_LoadGammaDefault(source_type, sig_fmt); - return -1; - } - - if (gammaValue < -4 || gammaValue > 4) { - LOGE("%s, Gamma Value beyond the UI's range of -4 to 4 .\n", __FUNCTION__); - gammaValue = 0; - SSMSaveGammaValue(gammaValue); - } - - switch (gammaValue) { - case 0: - ret = Vpp_LoadGammaDefault(source_type, sig_fmt); - break; - - default: - ret = Vpp_LoadGammaSpecial(gammaValue); - break; - } - - return ret; -} - -/*int CVpp::SetGammaValue(int gammaValue) - { - int ret = -1; - tvin_sig_fmt_t sig_fmt = TVIN_SIG_FMT_NULL; - tv_source_input_type_t source_type = SOURCE_TYPE_TV; - sig_fmt = Tvin_GetSigFormat(); - source_type = Tvin_GetSrcInputType(); - LOGD("%s, source_type = %d, sig_fmt = %d, gammaValue = %d\n", __FUNCTION__, (int)source_type, - (int)sig_fmt, gammaValue); - if (gammaValue >= -4 || gammaValue <= 4) { - switch (gammaValue) { - case 0: - ret = Vpp_LoadGammaDefault(source_type, sig_fmt); - break; - default: - ret = Vpp_LoadGammaSpecial(gammaValue); - break; - } - if (0 == ret) - ret = SSMSaveGammaValue(gammaValue); - } - return ret; - }*/ - -int CVpp::GetGammaValue() -{ - int gammaValue = 0; - - if (SSMReadGammaValue(&gammaValue) < 0) { - LOGE("%s, SSMReadGammaValue ERROR!!!\n", __FUNCTION__); - return -1; - } - - return gammaValue; -} - -/*int CVpp::SetColorDemoMode ( vpp_color_demomode_t demomode ) - { - tv_source_input_type_t source_type = Tvin_GetSrcInputType(); - tvin_port_t source_port = CTvin::Tvin_GetSourcePortBySourceType ( source_type ); - tvin_sig_fmt_t sig_fmt = Tvin_GetSigFormat(); - is_3d_type_t is3d = Tvin_Get3DStatus(); - tvin_trans_fmt_t trans_fmt = Tvin_GetSigTransFormat(); - - return SetBaseColorMode ( VPP_COLOR_BASE_MODE_DEMO ,source_port,sig_fmt,status,trans_fmt); - }*/ - -vpp_color_demomode_t CVpp::GetColorDemoMode(void) -{ - vpp_color_demomode_t data = VPP_COLOR_DEMO_MODE_ALLON; - unsigned char tmp_demo_mode = 0; - SSMReadColorDemoMode(&tmp_demo_mode); - data = (vpp_color_demomode_t) tmp_demo_mode; - - if (data < VPP_COLOR_DEMO_MODE_ALLON || data > VPP_COLOR_DEMO_MODE_ALLOFF) { - data = VPP_COLOR_DEMO_MODE_ALLON; - } - - return data; -} - -int CVpp::SetBaseColorModeWithoutSave(vpp_color_basemode_t basemode, tvin_port_t source_port, - tvin_sig_fmt_t sig_fmt, is_3d_type_t is3d, tvin_trans_fmt_t trans_fmt) -{ - int ret = -1; - am_regs_t regs; - - if (mbVppCfg_new_cm) { - if (mpPqData->PQ_GetCM2Params((vpp_color_management2_t) basemode, source_port, sig_fmt, - is3d, trans_fmt, ®s) == 0) { - ret = Vpp_LoadRegs(regs); - } else { - LOGE("PQ_GetCM2Params failed!\n"); - } - } - - return ret; -} - -int CVpp::SaveBaseColorMode(vpp_color_basemode_t basemode) -{ - int ret = -1; - - if (basemode == VPP_COLOR_BASE_MODE_DEMO) { - ret = 0; - } else { - ret |= SSMSaveColorBaseMode(basemode); - } - - return ret; -} - -int CVpp::SetBaseColorMode(vpp_color_basemode_t basemode, tvin_port_t source_port, - tvin_sig_fmt_t sig_fmt, is_3d_type_t is3d, tvin_trans_fmt_t trans_fmt) -{ - if (0 == SetBaseColorModeWithoutSave(basemode, source_port, sig_fmt, is3d, trans_fmt)) { - return SaveBaseColorMode(basemode); - } else { - LOGE("SetBaseColorMode() Failed!!!"); - return -1; - } - return 0; -} - -vpp_color_basemode_t CVpp::GetBaseColorMode(void) -{ - vpp_color_basemode_t data = VPP_COLOR_BASE_MODE_OFF; - unsigned char tmp_base_mode = 0; - SSMReadColorBaseMode(&tmp_base_mode); - data = (vpp_color_basemode_t) tmp_base_mode; - - if (data < VPP_COLOR_BASE_MODE_OFF || data >= VPP_COLOR_BASE_MODE_MAX) { - data = VPP_COLOR_BASE_MODE_OPTIMIZE; - } - - return data; -} - -int CVpp::SetColorTempWithoutSave(vpp_color_temperature_mode_t Tempmode, - tv_source_input_type_t source_type __unused) -{ - tcon_rgb_ogo_t rgbogo; - - if (mbVppCfg_gamma_onoff) { - VPP_SetGammaOnOff(0); - } else { - VPP_SetGammaOnOff(1); - } - - GetColorTemperatureParams(Tempmode, &rgbogo); - - return VPP_SetRGBOGO(&rgbogo); - -} - -int CVpp::SaveColorTemp(vpp_color_temperature_mode_t Tempmode, tv_source_input_type_t source_type) -{ - int ret = -1; - int tmp_temp_mode = 0; - tcon_rgb_ogo_t rgbogo; - - if (mbVppCfg_whitebalance_sameparam) { - source_type = SOURCE_TYPE_TV; //set all source share to use one group - } - - GetColorTemperatureParams(Tempmode, &rgbogo); - - if (Tempmode < VPP_COLOR_TEMPERATURE_MODE_USER) { - ret = SSMSaveRGBGainRStart(0, rgbogo.r_gain); - ret |= SSMSaveRGBGainGStart(0, rgbogo.g_gain); - ret |= SSMSaveRGBGainBStart(0, rgbogo.b_gain); - } - - tmp_temp_mode = (int) Tempmode; - - if (mbVppCfg_colortemp_by_source) { - ret |= SSMSaveColorTemperature((int) source_type, tmp_temp_mode); - } else { - ret |= SSMSaveColorTemperature(0, tmp_temp_mode); - } - - return ret; -} - -int CVpp::SetColorTemperature(vpp_color_temperature_mode_t Tempmode, - tv_source_input_type_t source_type, int is_save) -{ - if (SetColorTempWithoutSave(Tempmode, source_type) < 0) { - LOGE("%s, failed!", __FUNCTION__); - return -1; - } else { - if (is_save == 1) { - return SaveColorTemp(Tempmode, source_type); - } else { - return 0; - } - } -} - -vpp_color_temperature_mode_t CVpp::GetColorTemperature(tv_source_input_type_t source_type) -{ - vpp_color_temperature_mode_t data = VPP_COLOR_TEMPERATURE_MODE_STANDARD; - int tmp_temp_mode = 0; - - if (mbVppCfg_colortemp_by_source) { - SSMReadColorTemperature((int) source_type, &tmp_temp_mode); - } else { - SSMReadColorTemperature(0, &tmp_temp_mode); - } - - data = (vpp_color_temperature_mode_t) tmp_temp_mode; - - if (data < VPP_COLOR_TEMPERATURE_MODE_STANDARD || data > VPP_COLOR_TEMPERATURE_MODE_USER) { - data = VPP_COLOR_TEMPERATURE_MODE_STANDARD; - } - - return data; -} - -int CVpp::VPP_SetNonLinearFactor(int value) -{ - FILE *fp = NULL; - - fp = fopen("/sys/class/video/nonlinear_factor", "w"); - LOGD("~~~fopen~~~##VPP_SetNonLinearFactor##%s : %d ##", "/sys/class/video/nonlinear_factor", - value); - - if (fp == NULL) { - LOGE("Open /sys/class/video/nonlinear_factor error(%s)!\n", strerror(errno)); - return -1; - } - - fprintf(fp, "%d", value); - - fclose(fp); - fp = NULL; - - return 0; -} - -vpp_display_mode_t CVpp::GetDisplayMode(tv_source_input_type_t source_type) -{ - vpp_display_mode_t data = VPP_DISPLAY_MODE_169; - int tmp_dis_mode = 0; - - SSMReadDisplayMode(source_type, &tmp_dis_mode); - data = (vpp_display_mode_t) tmp_dis_mode; - - return data; -} - -int CVpp::SetBacklightWithoutSave(int value, tv_source_input_type_t source_type __unused) -{ - int backlight_value; - - if (value < 0 || value > 100) { - value = 100; - } - - if (mbVppCfg_backlight_reverse) { - backlight_value = (100 - value) * 255 / 100; - } else { - backlight_value = value * 255 / 100; - } - - return VPP_SetBackLightLevel(backlight_value); -} - -int CVpp::VPP_SetBackLightLevel(int value) -{ - FILE *fp = NULL; - fp = fopen("/sys/class/backlight/aml-bl/brightness", "w"); - LOGD("~~~fopen~~~##VPP_SetBackLightLevel##%s : %d ##", - "/sys/class/backlight/aml-bl/brightness", value); - - if (fp == NULL) { - LOGE("Open /sys/class/backlight/aml-bl/brightness error(%s)!\n", strerror(errno)); - return -1; - } - - fprintf(fp, "%d", value); - - fclose(fp); - fp = NULL; - - return 0; -} - -int CVpp::SetBacklight(int value, tv_source_input_type_t source_type, int is_save) -{ - static const int MIN_BACKLIGHT_VALUE = 1; - if (value >= MIN_BACKLIGHT_VALUE) { - if (SetBacklightWithoutSave(value, source_type) < 0) { - LOGE("%s, failed !", __FUNCTION__); - return -1; - } - - } else { - if (SetBacklightWithoutSave(MIN_BACKLIGHT_VALUE, source_type) < 0) { - LOGE("%s, failed !", __FUNCTION__); - return -1; - } - } - if (is_save == 1) { - return SaveBacklight(value, source_type); - } else { - return 0; - } -} - -int CVpp::GetBacklight(tv_source_input_type_t source_type) -{ - int data = 0; - vpp_pq_para_t pq_para; - - if (mbVppCfg_pqmode_depend_bklight) { - vpp_picture_mode_t pq_mode = GetPQMode(source_type); - - if (pq_mode == VPP_PICTURE_MODE_USER) { - SSMReadBackLightVal(source_type, &data); - } else { - Vpp_GetPQModeValue(source_type, pq_mode, &pq_para); - data = pq_para.backlight; - } - } else { - source_type = SOURCE_TYPE_TV; - SSMReadBackLightVal(source_type, &data); - } - - if (data < 0 || data > 100) { - data = 100; - } - - return data; -} - -int CVpp::SaveBacklight(int value, tv_source_input_type_t source_type) -{ - int backlight_value, backlight_reverse = 0; - int ret = -1; - int tmp_pic_mode = 0; - - if (!mbVppCfg_pqmode_depend_bklight) { - source_type = SOURCE_TYPE_TV; - } - - if (value < 0 || value > 100) { - value = 100; - } - - ret = SSMSaveBackLightVal(source_type, value); - - return ret; -} - -int CVpp::VPP_SetBackLight_Switch(int value) -{ - FILE *fp = NULL; - fp = fopen("/sys/class/backlight/aml-bl/bl_power", "w"); - LOGD("~~~fopen~~~##VPP_SetBackLight_Switch##%s : %d ##", - "/sys/class/backlight/aml-bl/bl_power", value); - - if (fp == NULL) { - LOGE("Open /sys/class/backlight/aml-bl/bl_power error(%s)!\n", strerror(errno)); - return -1; - } - - fprintf(fp, "%d", value); - - fclose(fp); - fp = NULL; - - return 0; -} - -int CVpp::VPP_GetBackLight_Switch(void) -{ - FILE *fp = NULL; - int value; - - fp = fopen("/sys/class/backlight/aml-bl/bl_power", "w"); - - if (fp == NULL) { - LOGE("Open /sys/class/backlight/aml-bl/bl_power error(%s)!\n", strerror(errno)); - return -1; - } - - fscanf(fp, "%d", &value); - LOGD("~~~fopen~~~##VPP_GetBackLight_Switch##%s : %d ##", - "/sys/class/backlight/aml-bl/bl_power", value); - - fclose(fp); - fp = NULL; - if (value < 0) { - return 0; - } else { - return value; - } -} - -int CVpp::SetDNLP(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) -{ - unsigned int dnlp_switch = 0; - - int ret = -1; - int dnlpFlag = -1; - ve_dnlp_t dnlp; - ve_dnlp_table_t newdnlp; - - dnlp_switch = 1; - - if (mpPqData->PQ_GetDNLPParams(source_port, sig_fmt, is3d, trans_fmt, &dnlp, &newdnlp, - &dnlpFlag) == 0) { - newdnlp.en = dnlp_switch; - LOGE("PQ_GetDNLPParams ok!\n"); - LOGE( - "newdnlp.en:%d,newdnlp.method:%d,newdnlp.cliprate:%d,newdnlp.lowrange:%d,newdnlp.hghrange:%d,newdnlp.lowalpha:%d,newdnlp.midalpha:%d,newdnlp.hghalpha:%d\n", - newdnlp.en, newdnlp.method, newdnlp.cliprate, newdnlp.lowrange, newdnlp.hghrange, - newdnlp.lowalpha, newdnlp.midalpha, newdnlp.hghalpha); - if (source_type == SOURCE_TYPE_DTV) { - SetFileAttrValue("/sys/module/am_vecm/parameters/dnlp_en", "0"); - } else { - VPP_SetVENewDNLP(&newdnlp); - SetFileAttrValue("/sys/module/am_vecm/parameters/dnlp_en", "1"); - } - ret = 1; - } else { - LOGE("mpPqData->PQ_GetDNLPParams failed!\n"); - } - - return ret; -} - -int CVpp::VPP_SetVEDNLP(const struct ve_dnlp_s *pDNLP) -{ - int rt = VPP_DeviceIOCtl(AMVECM_IOC_VE_DNLP, pDNLP); - LOGD("~~~VPP_DeviceIOCtl~~~##VPP_SetVEDNLP##AMVECM_IOC_VE_DNLP##"); - - if (rt < 0) { - LOGE("Vpp_api_SetVEDNLP, error(%s)!\n", strerror(errno)); - } - - return rt; -} - -int CVpp::VPP_SetVENewDNLP(const ve_dnlp_table_t *pDNLP) -{ - int rt = VPP_DeviceIOCtl(AMVECM_IOC_VE_NEW_DNLP, pDNLP); - LOGD("~~~VPP_DeviceIOCtl~~~##VPP_SetVENewDNLP##AMVECM_IOC_VE_NEW_DNLP##"); - - if (rt < 0) { - LOGE("VPP_SetVENewDNLP, error(%s)!\n", strerror(errno)); - } - - return rt; -} - -int CVpp::SetDnlp_OFF(void) -{ - if (Vpp_SetDnlpOff() < 0) { - LOGE("%s failed.\n", __FUNCTION__); - return -1; - } else { - LOGE("%s success.\n", __FUNCTION__); - SSMSaveDnlpStart(1); //save dnlp status to e2rom - return 0; - } -} -int CVpp::SetDnlp_ON(void) -{ - if (Vpp_SetDnlpOn() < 0) { - LOGE("%s failed.\n", __FUNCTION__); - return -1; - } else { - LOGE("%s success.\n", __FUNCTION__); - SSMSaveDnlpStart(0); //save dnlp status to e2rom - return 0; - } -} - -int CVpp::Vpp_SetDnlpOff(void) -{ - //According linux driver to modify the AMSTREAM_IOC_VE_DNLP_DIS to the AMVECM_IOC_VE_DNLP_DIS. - //int rt = VPP_DeviceIOCtl(AMSTREAM_IOC_VE_DNLP_DIS); - int rt = VPP_DeviceIOCtl(AMVECM_IOC_VE_DNLP_DIS); - LOGD("~~~VPP_DeviceIOCtl~~~##Vpp_SetDnlpOff##AMVECM_IOC_VE_DNLP_DIS##"); - - if (rt < 0) { - LOGE("Vpp_SetDnlpOff, error(%s)!\n", strerror(errno)); - } - - return rt; -} - -int CVpp::Vpp_SetDnlpOn(void) -{ - //According linux driver to modify the AMSTREAM_IOC_VE_DNLP_DIS to the AMVECM_IOC_VE_DNLP_DIS. - //int rt = VPP_DeviceIOCtl(AMSTREAM_IOC_VE_DNLP_EN); - int rt = VPP_DeviceIOCtl(AMVECM_IOC_VE_DNLP_EN); - LOGD("~~~VPP_DeviceIOCtl~~~##Vpp_SetDnlpOn##AMVECM_IOC_VE_DNLP_EN##"); - - if (rt < 0) { - LOGE("Vpp_SetDnlpOn, error(%s)!\n", strerror(errno)); - } - - return rt; -} -int CVpp::GetDnlp_Status() -{ - unsigned char status = 0; - SSMReadDnlpStart(&status); - LOGD("%s, %d.", __FUNCTION__, status); - return status; -} - -int CVpp::VPP_SetRGBOGO(const struct tcon_rgb_ogo_s *rgbogo) -{ - int rt = VPP_DeviceIOCtl(AMVECM_IOC_S_RGB_OGO, rgbogo); - LOGD("~~~VPP_DeviceIOCtl~~~##VPP_SetRGBOGO##AMVECM_IOC_S_RGB_OGO##"); - usleep(50 * 1000); - - if (rt < 0) { - LOGE("Vpp_api_SetRGBOGO, error(%s)!\n", strerror(errno)); - } - - return rt; -} - -int CVpp::VPP_GetRGBOGO(const struct tcon_rgb_ogo_s *rgbogo) -{ - int rt = VPP_DeviceIOCtl(AMVECM_IOC_G_RGB_OGO, rgbogo); - LOGD("~~~VPP_DeviceIOCtl~~~##VPP_GetRGBOGO##AMVECM_IOC_G_RGB_OGO##"); - - if (rt < 0) { - LOGE("Vpp_api_GetRGBOGO, error(%s)!\n", strerror(errno)); - } - - return rt; -} - -int CVpp::RGBGainValueSSMToRisterMapping(int gainValue) //0~255 -{ - int mapValue = 0; - - if (gainValue < 0 || gainValue > 255) { - mapValue = 1024; - } else { - if (gainValue == 255) { - mapValue = 1536; - } else { - mapValue = 512 + gainValue * (1536 - 512) / 256; - } - } - - return mapValue;//512~1536 -} - -//RGB OFFSET:-128~127 <-----> -512~512 -int CVpp::RGBOffsetValueSSMToRisterMapping(int offsetValue) //-128~127 -{ - int mapValue = 0; - - if (offsetValue < -128 || offsetValue > 127) { - offsetValue = 0; - } - - if (offsetValue == 127) { - mapValue = 512; - } else { - mapValue = 1024 * offsetValue / 256; - } - - return mapValue;//-512~512 -} - -int CVpp::FactorySetPQMode_Brightness(int source_type, int pq_mode, int brightness) -{ - int ret = -1; - vpp_pq_para_t pq_para; - - if (mpPqData->PQ_GetPQModeParams((tv_source_input_type_t) source_type, - (vpp_picture_mode_t) pq_mode, &pq_para) == 0) { - pq_para.brightness = brightness; - - if (mpPqData->PQ_SetPQModeParams((tv_source_input_type_t) source_type, - (vpp_picture_mode_t) pq_mode, &pq_para) == 0) { - ret = 0; - } else { - ret = 1; - } - } else { - ret = -1; - } - - return ret; -} - -int CVpp::FactoryGetPQMode_Brightness(int source_type, int pq_mode) -{ - vpp_pq_para_t pq_para; - - if (mpPqData->PQ_GetPQModeParams((tv_source_input_type_t) source_type, - (vpp_picture_mode_t) pq_mode, &pq_para) != 0) { - return -1; - } - - return pq_para.brightness; -} - -int CVpp::FactorySetPQMode_Contrast(int source_type, int pq_mode, int contrast) -{ - int ret = -1; - vpp_pq_para_t pq_para; - - if (mpPqData->PQ_GetPQModeParams((tv_source_input_type_t) source_type, - (vpp_picture_mode_t) pq_mode, &pq_para) == 0) { - pq_para.contrast = contrast; - - if (mpPqData->PQ_SetPQModeParams((tv_source_input_type_t) source_type, - (vpp_picture_mode_t) pq_mode, &pq_para) == 0) { - ret = 0; - } else { - ret = 1; - } - } else { - ret = -1; - } - - return ret; -} - -int CVpp::FactoryGetPQMode_Contrast(int source_type, int pq_mode) -{ - vpp_pq_para_t pq_para; - - if (mpPqData->PQ_GetPQModeParams((tv_source_input_type_t) source_type, - (vpp_picture_mode_t) pq_mode, &pq_para) != 0) { - return -1; - } - - return pq_para.contrast; -} - -int CVpp::FactorySetPQMode_Saturation(int source_type, int pq_mode, int saturation) -{ - int ret = -1; - vpp_pq_para_t pq_para; - - if (mpPqData->PQ_GetPQModeParams((tv_source_input_type_t) source_type, - (vpp_picture_mode_t) pq_mode, &pq_para) == 0) { - pq_para.saturation = saturation; - - if (mpPqData->PQ_SetPQModeParams((tv_source_input_type_t) source_type, - (vpp_picture_mode_t) pq_mode, &pq_para) == 0) { - ret = 0; - } else { - ret = 1; - } - } else { - ret = -1; - } - - return ret; -} - -int CVpp::FactoryGetPQMode_Saturation(int source_type, int pq_mode) -{ - vpp_pq_para_t pq_para; - - if (mpPqData->PQ_GetPQModeParams((tv_source_input_type_t) source_type, - (vpp_picture_mode_t) pq_mode, &pq_para) != 0) { - return -1; - } - - return pq_para.saturation; -} - -int CVpp::FactorySetPQMode_Hue(int source_type, int pq_mode, int hue) -{ - int ret = -1; - vpp_pq_para_t pq_para; - - if (mpPqData->PQ_GetPQModeParams((tv_source_input_type_t) source_type, - (vpp_picture_mode_t) pq_mode, &pq_para) == 0) { - pq_para.hue = hue; - - if (mpPqData->PQ_SetPQModeParams((tv_source_input_type_t) source_type, - (vpp_picture_mode_t) pq_mode, &pq_para) == 0) { - ret = 0; - } else { - ret = 1; - } - } else { - ret = -1; - } - - return ret; -} - -int CVpp::FactoryGetPQMode_Hue(int source_type, int pq_mode) -{ - vpp_pq_para_t pq_para; - - if (mpPqData->PQ_GetPQModeParams((tv_source_input_type_t) source_type, - (vpp_picture_mode_t) pq_mode, &pq_para) != 0) { - return -1; - } - - return pq_para.hue; -} - -int CVpp::FactorySetPQMode_Sharpness(int source_type, int pq_mode, int sharpness) -{ - int ret = -1; - vpp_pq_para_t pq_para; - - if (mpPqData->PQ_GetPQModeParams((tv_source_input_type_t) source_type, - (vpp_picture_mode_t) pq_mode, &pq_para) == 0) { - pq_para.sharpness = sharpness; - - if (mpPqData->PQ_SetPQModeParams((tv_source_input_type_t) source_type, - (vpp_picture_mode_t) pq_mode, &pq_para) == 0) { - ret = 0; - } else { - ret = 1; - } - } else { - ret = -1; - } - - return ret; -} - -int CVpp::FactoryGetPQMode_Sharpness(int source_type, int pq_mode) -{ - vpp_pq_para_t pq_para; - - if (mpPqData->PQ_GetPQModeParams((tv_source_input_type_t) source_type, - (vpp_picture_mode_t) pq_mode, &pq_para) != 0) { - return -1; - } - - return pq_para.sharpness; -} - -unsigned short CVpp::CalColorTemperatureParamsChecksum(void) -{ - unsigned char data_buf[SSM_CR_RGBOGO_LEN]; - unsigned short sum = 0; - int cnt; - USUC usuc; - - SSMReadRGBOGOValue(0, SSM_CR_RGBOGO_LEN, data_buf); - - for (cnt = 0; cnt < SSM_CR_RGBOGO_LEN; cnt++) { - sum += data_buf[cnt]; - } - - //checksum = 0xff - sum % 0xff; - - LOGD("%s, sum = 0x%X.\n", __FUNCTION__, sum); - - return sum; -} - -int CVpp::SetColorTempParamsChecksum(void) -{ - int ret = 0; - USUC usuc; - - usuc.s = CalColorTemperatureParamsChecksum(); - - LOGD("%s, sum = 0x%X.\n", __FUNCTION__, usuc.s); - - ret |= SSMSaveRGBOGOValue(SSM_CR_RGBOGO_LEN, SSM_CR_RGBOGO_CHKSUM_LEN, usuc.c); - - return ret; -} -unsigned short CVpp::GetColorTempParamsChecksum(void) -{ - USUC usuc; - - SSMReadRGBOGOValue(SSM_CR_RGBOGO_LEN, SSM_CR_RGBOGO_CHKSUM_LEN, usuc.c); - - LOGD("%s, sum = 0x%X.\n", __FUNCTION__, usuc.s); - - return usuc.s; - -} - -int CVpp::CheckTempDataLable(void) -{ - USUC usuc; - USUC ret; - - SSMReadRGBOGOValue(SSM_CR_RGBOGO_LEN - 2, 2, ret.c); - - usuc.c[0] = 0x55; - usuc.c[1] = 0xAA; - - if ((usuc.c[0] == ret.c[0]) && (usuc.c[1] == ret.c[1])) { - LOGD("%s, lable ok.\n", __FUNCTION__); - return 1; - } else { - LOGD("%s, lable error.\n", CFG_SECTION_TV); - return 0; - } -} - -int CVpp::SetTempDataLable(void) -{ - USUC usuc; - int ret = 0; - - usuc.c[0] = 0x55; - usuc.c[1] = 0xAA; - - ret = SSMSaveRGBOGOValue(SSM_CR_RGBOGO_LEN - 2, 2, usuc.c); - - return ret; -} - -int CVpp::GetColorTemperatureParams(vpp_color_temperature_mode_t Tempmode, tcon_rgb_ogo_t *params) -{ - // CheckColorTemperatureParamAlldata(source_port,sig_fmt,trans_fmt); - - return ReadColorTemperatureParams(Tempmode, params); -} - -int CVpp::ReadColorTemperatureParams(vpp_color_temperature_mode_t Tempmode, tcon_rgb_ogo_t *params) -{ - SUC suc; - USUC usuc; - int ret = 0; - - if (VPP_COLOR_TEMPERATURE_MODE_STANDARD == Tempmode) { //standard - ret |= SSMReadRGBOGOValue(0, 2, usuc.c); - params->en = usuc.s; - - ret |= SSMReadRGBOGOValue(2, 2, suc.c); - params->r_pre_offset = suc.s; - - ret |= SSMReadRGBOGOValue(4, 2, suc.c); - params->g_pre_offset = suc.s; - - ret |= SSMReadRGBOGOValue(6, 2, suc.c); - params->b_pre_offset = suc.s; - - ret |= SSMReadRGBOGOValue(8, 2, usuc.c); - params->r_gain = usuc.s; - - ret |= SSMReadRGBOGOValue(10, 2, usuc.c); - params->g_gain = usuc.s; - - ret |= SSMReadRGBOGOValue(12, 2, usuc.c); - params->b_gain = usuc.s; - - ret |= SSMReadRGBOGOValue(14, 2, suc.c); - params->r_post_offset = suc.s; - - ret |= SSMReadRGBOGOValue(16, 2, suc.c); - params->g_post_offset = suc.s; - - ret |= SSMReadRGBOGOValue(18, 2, suc.c); - params->b_post_offset = suc.s; - } else if (VPP_COLOR_TEMPERATURE_MODE_WARM == Tempmode) { //warm - ret |= SSMReadRGBOGOValue(20, 2, usuc.c); - params->en = usuc.s; - - ret |= SSMReadRGBOGOValue(22, 2, suc.c); - params->r_pre_offset = suc.s; - - ret |= SSMReadRGBOGOValue(24, 2, suc.c); - params->g_pre_offset = suc.s; - - ret |= SSMReadRGBOGOValue(26, 2, suc.c); - params->b_pre_offset = suc.s; - - ret |= SSMReadRGBOGOValue(28, 2, usuc.c); - params->r_gain = usuc.s; - ret |= SSMReadRGBOGOValue(30, 2, usuc.c); - params->g_gain = usuc.s; - - ret |= SSMReadRGBOGOValue(32, 2, usuc.c); - params->b_gain = usuc.s; - - ret |= SSMReadRGBOGOValue(34, 2, suc.c); - params->r_post_offset = suc.s; - - ret |= SSMReadRGBOGOValue(36, 2, suc.c); - params->g_post_offset = suc.s; - - ret |= SSMReadRGBOGOValue(38, 2, suc.c); - params->b_post_offset = suc.s; - } else if (VPP_COLOR_TEMPERATURE_MODE_COLD == Tempmode) { //cool - ret |= SSMReadRGBOGOValue(40, 2, usuc.c); - params->en = usuc.s; - - ret |= SSMReadRGBOGOValue(42, 2, suc.c); - params->r_pre_offset = suc.s; - - ret |= SSMReadRGBOGOValue(44, 2, suc.c); - params->g_pre_offset = suc.s; - - ret |= SSMReadRGBOGOValue(46, 2, suc.c); - params->b_pre_offset = suc.s; - - ret |= SSMReadRGBOGOValue(48, 2, usuc.c); - params->r_gain = usuc.s; - ret |= SSMReadRGBOGOValue(50, 2, usuc.c); - params->g_gain = usuc.s; - - ret |= SSMReadRGBOGOValue(52, 2, usuc.c); - params->b_gain = usuc.s; - ret |= SSMReadRGBOGOValue(54, 2, suc.c); - params->r_post_offset = suc.s; - - ret |= SSMReadRGBOGOValue(56, 2, suc.c); - params->g_post_offset = suc.s; - - ret |= SSMReadRGBOGOValue(58, 2, suc.c); - params->b_post_offset = suc.s; - } - - LOGD("%s, rgain[%d], ggain[%d],bgain[%d],roffset[%d],goffset[%d],boffset[%d]\n", __FUNCTION__, - params->r_gain, params->g_gain, params->b_gain, params->r_post_offset, - params->g_post_offset, params->b_post_offset); - - return ret; -} - -int CVpp::SetColorTemperatureParams(vpp_color_temperature_mode_t Tempmode, tcon_rgb_ogo_t params) -{ - // CheckColorTemperatureParamAlldata(source_port,sig_fmt,trans_fmt); - - SaveColorTemperatureParams(Tempmode, params); - SetColorTempParamsChecksum(); - - return 0; -} - -int CVpp::SaveColorTemperatureParams(vpp_color_temperature_mode_t Tempmode, tcon_rgb_ogo_t params) -{ - SUC suc; - USUC usuc; - int ret = 0; - - if (VPP_COLOR_TEMPERATURE_MODE_STANDARD == Tempmode) { //standard - usuc.s = params.en; - ret |= SSMSaveRGBOGOValue(0, 2, usuc.c); - - suc.s = params.r_pre_offset; - ret |= SSMSaveRGBOGOValue(2, 2, suc.c); - - suc.s = params.g_pre_offset; - ret |= SSMSaveRGBOGOValue(4, 2, suc.c); - - suc.s = params.b_pre_offset; - ret |= SSMSaveRGBOGOValue(6, 2, suc.c); - - usuc.s = params.r_gain; - ret |= SSMSaveRGBOGOValue(8, 2, usuc.c); - - usuc.s = params.g_gain; - ret |= SSMSaveRGBOGOValue(10, 2, usuc.c); - - usuc.s = params.b_gain; - ret |= SSMSaveRGBOGOValue(12, 2, usuc.c); - - suc.s = params.r_post_offset; - ret |= SSMSaveRGBOGOValue(14, 2, suc.c); - - suc.s = params.g_post_offset; - ret |= SSMSaveRGBOGOValue(16, 2, suc.c); - - suc.s = params.b_post_offset; - ret |= SSMSaveRGBOGOValue(18, 2, suc.c); - } else if (VPP_COLOR_TEMPERATURE_MODE_WARM == Tempmode) { //warm - usuc.s = params.en; - ret |= SSMSaveRGBOGOValue(20, 2, usuc.c); - - suc.s = params.r_pre_offset; - ret |= SSMSaveRGBOGOValue(22, 2, suc.c); - - suc.s = params.g_pre_offset; - ret |= SSMSaveRGBOGOValue(24, 2, suc.c); - suc.s = params.b_pre_offset; - ret |= SSMSaveRGBOGOValue(26, 2, suc.c); - - usuc.s = params.r_gain; - ret |= SSMSaveRGBOGOValue(28, 2, usuc.c); - - usuc.s = params.g_gain; - ret |= SSMSaveRGBOGOValue(30, 2, usuc.c); - - usuc.s = params.b_gain; - ret |= SSMSaveRGBOGOValue(32, 2, usuc.c); - - suc.s = params.r_post_offset; - ret |= SSMSaveRGBOGOValue(34, 2, suc.c); - - suc.s = params.g_post_offset; - ret |= SSMSaveRGBOGOValue(36, 2, suc.c); - - suc.s = params.b_post_offset; - ret |= SSMSaveRGBOGOValue(38, 2, suc.c); - } else if (VPP_COLOR_TEMPERATURE_MODE_COLD == Tempmode) { //cool - usuc.s = params.en; - ret |= SSMSaveRGBOGOValue(40, 2, usuc.c); - - suc.s = params.r_pre_offset; - ret |= SSMSaveRGBOGOValue(42, 2, suc.c); - - suc.s = params.g_pre_offset; - ret |= SSMSaveRGBOGOValue(44, 2, suc.c); - - suc.s = params.b_pre_offset; - ret |= SSMSaveRGBOGOValue(46, 2, suc.c); - - usuc.s = params.r_gain; - ret |= SSMSaveRGBOGOValue(48, 2, usuc.c); - - usuc.s = params.g_gain; - ret |= SSMSaveRGBOGOValue(50, 2, usuc.c); - - usuc.s = params.b_gain; - ret |= SSMSaveRGBOGOValue(52, 2, usuc.c); - - suc.s = params.r_post_offset; - ret |= SSMSaveRGBOGOValue(54, 2, suc.c); - - suc.s = params.g_post_offset; - ret |= SSMSaveRGBOGOValue(56, 2, suc.c); - - suc.s = params.b_post_offset; - ret |= SSMSaveRGBOGOValue(58, 2, suc.c); - } - - LOGD("%s, rgain[%d], ggain[%d],bgain[%d],roffset[%d],goffset[%d],boffset[%d]\n", __FUNCTION__, - params.r_gain, params.g_gain, params.b_gain, params.r_post_offset, - params.g_post_offset, params.b_post_offset); - return ret; -} - -int CVpp::CheckColorTemperatureParams(void) -{ - int i = 0; - tcon_rgb_ogo_t rgbogo; - - for (i = 0; i < 3; i++) { - ReadColorTemperatureParams((vpp_color_temperature_mode_t) i, &rgbogo); - - if (rgbogo.r_gain > 2047 || rgbogo.b_gain > 2047 || rgbogo.g_gain > 2047 - /*|| rgbogo.r_gain < 0 || rgbogo.b_gain < 0 || rgbogo.g_gain < 0*/) { - if (rgbogo.r_post_offset > 1023 || rgbogo.g_post_offset > 1023 || rgbogo.b_post_offset > 1023 || - rgbogo.r_post_offset < -1024 || rgbogo.g_post_offset < -1024 || rgbogo.b_post_offset < -1024) { - return 0; - } - } - } - - return 1; -} - -int CVpp::RestoeColorTemperatureParamsFromDB(tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, - tvin_trans_fmt_t trans_fmt) -{ - int i = 0; - tcon_rgb_ogo_t rgbogo; - - LOGD("%s, restore color temperature params from DB.\n", __FUNCTION__); - - for (i = 0; i < 3; i++) { - mpPqData->PQ_GetColorTemperatureParams((vpp_color_temperature_mode_t) i, source_port, - sig_fmt, trans_fmt, &rgbogo); - SaveColorTemperatureParams((vpp_color_temperature_mode_t) i, rgbogo); - } - - SetColorTempParamsChecksum(); - - return 0; -} - -int CVpp::CheckColorTemperatureParamAlldata(tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, - tvin_trans_fmt_t trans_fmt) -{ - if (CheckTempDataLable() && (CalColorTemperatureParamsChecksum() - == GetColorTempParamsChecksum())) { - LOGD("%s, color temperature param lable & checksum ok.\n", __FUNCTION__); - - if (CheckColorTemperatureParams() == 0) { - LOGD("%s, color temperature params check failed.\n", __FUNCTION__); - RestoeColorTemperatureParamsFromDB(source_port, sig_fmt, trans_fmt); - } - } else { - LOGD("%s, color temperature param data error.\n", __FUNCTION__); - - SetTempDataLable(); - RestoeColorTemperatureParamsFromDB(source_port, sig_fmt, trans_fmt); - } - - return 0; -} - -int CVpp::FactorySetColorTemp_Rgain(int source_type, int colortemp_mode, int rgain) -{ - tcon_rgb_ogo_t rgbogo; - - GetColorTemperatureParams((vpp_color_temperature_mode_t) colortemp_mode, &rgbogo); - rgbogo.r_gain = rgain; - LOGD("%s, source_type[%d], colortemp_mode[%d], rgain[%d].", __FUNCTION__, source_type, - colortemp_mode, rgain); - rgbogo.en = 1; - - if (VPP_SetRGBOGO(&rgbogo) == 0) { - return 0; - } - - return -1; -} - -int CVpp::FactorySaveColorTemp_Rgain(int source_type __unused, int colortemp_mode, int rgain) -{ - tcon_rgb_ogo_t rgbogo; - - if (0 == GetColorTemperatureParams((vpp_color_temperature_mode_t) colortemp_mode, &rgbogo)) { - rgbogo.r_gain = rgain; - return SetColorTemperatureParams((vpp_color_temperature_mode_t) colortemp_mode, rgbogo); - } - - LOGE("FactorySaveColorTemp_Rgain error!\n"); - return -1; -} - -int CVpp::FactoryGetColorTemp_Rgain(int source_type __unused, int colortemp_mode) -{ - tcon_rgb_ogo_t rgbogo; - - if (0 == GetColorTemperatureParams((vpp_color_temperature_mode_t) colortemp_mode, &rgbogo)) { - return rgbogo.r_gain; - } - - LOGE("FactoryGetColorTemp_Rgain error!\n"); - return -1; -} - -int CVpp::FactorySetColorTemp_Ggain(int source_type, int colortemp_mode, int ggain) -{ - tcon_rgb_ogo_t rgbogo; - - GetColorTemperatureParams((vpp_color_temperature_mode_t) colortemp_mode, &rgbogo); - rgbogo.g_gain = ggain; - LOGD("%s, source_type[%d], colortemp_mode[%d], ggain[%d].", __FUNCTION__, source_type, - colortemp_mode, ggain); - rgbogo.en = 1; - - if (VPP_SetRGBOGO(&rgbogo) == 0) { - return 0; - } - - return -1; -} - -int CVpp::FactorySaveColorTemp_Ggain(int source_type __unused, int colortemp_mode, int ggain) -{ - tcon_rgb_ogo_t rgbogo; - - if (0 == GetColorTemperatureParams((vpp_color_temperature_mode_t) colortemp_mode, &rgbogo)) { - rgbogo.g_gain = ggain; - return SetColorTemperatureParams((vpp_color_temperature_mode_t) colortemp_mode, rgbogo); - } - - LOGE("FactorySaveColorTemp_Ggain error!\n"); - return -1; -} - -int CVpp::FactoryGetColorTemp_Ggain(int source_type __unused, int colortemp_mode) -{ - tcon_rgb_ogo_t rgbogo; - - if (0 == GetColorTemperatureParams((vpp_color_temperature_mode_t) colortemp_mode, &rgbogo)) { - return rgbogo.g_gain; - } - - LOGE("FactoryGetColorTemp_Ggain error!\n"); - return -1; -} - -int CVpp::FactorySetColorTemp_Bgain(int source_type, int colortemp_mode, int bgain) -{ - tcon_rgb_ogo_t rgbogo; - - GetColorTemperatureParams((vpp_color_temperature_mode_t) colortemp_mode, &rgbogo); - rgbogo.b_gain = bgain; - LOGD("%s, source_type[%d], colortemp_mode[%d], bgain[%d].", __FUNCTION__, source_type, - colortemp_mode, bgain); - rgbogo.en = 1; - - if (VPP_SetRGBOGO(&rgbogo) == 0) { - return 0; - } - - return -1; -} - -int CVpp::FactorySaveColorTemp_Bgain(int source_type __unused, int colortemp_mode, int bgain) -{ - tcon_rgb_ogo_t rgbogo; - - if (0 == GetColorTemperatureParams((vpp_color_temperature_mode_t) colortemp_mode, &rgbogo)) { - rgbogo.b_gain = bgain; - return SetColorTemperatureParams((vpp_color_temperature_mode_t) colortemp_mode, rgbogo); - } - - LOGE("FactorySaveColorTemp_Bgain error!\n"); - return -1; -} - -int CVpp::FactoryGetColorTemp_Bgain(int source_type __unused, int colortemp_mode) -{ - tcon_rgb_ogo_t rgbogo; - - if (0 == GetColorTemperatureParams((vpp_color_temperature_mode_t) colortemp_mode, &rgbogo)) { - return rgbogo.b_gain; - } - - LOGE("FactoryGetColorTemp_Bgain error!\n"); - return -1; -} - -int CVpp::FactorySetColorTemp_Roffset(int source_type, int colortemp_mode, int roffset) -{ - tcon_rgb_ogo_t rgbogo; - - GetColorTemperatureParams((vpp_color_temperature_mode_t) colortemp_mode, &rgbogo); - rgbogo.r_post_offset = roffset; - LOGD("%s, source_type[%d], colortemp_mode[%d], r_post_offset[%d].", __FUNCTION__, source_type, - colortemp_mode, roffset); - rgbogo.en = 1; - - if (VPP_SetRGBOGO(&rgbogo) == 0) { - return 0; - } - - return -1; -} - -int CVpp::FactorySaveColorTemp_Roffset(int source_type __unused, int colortemp_mode, int roffset) -{ - tcon_rgb_ogo_t rgbogo; - - if (0 == GetColorTemperatureParams((vpp_color_temperature_mode_t) colortemp_mode, &rgbogo)) { - rgbogo.r_post_offset = roffset; - return SetColorTemperatureParams((vpp_color_temperature_mode_t) colortemp_mode, rgbogo); - } - - LOGE("FactorySaveColorTemp_Roffset error!\n"); - return -1; -} - -int CVpp::FactoryGetColorTemp_Roffset(int source_type __unused, int colortemp_mode) -{ - tcon_rgb_ogo_t rgbogo; - - if (0 == GetColorTemperatureParams((vpp_color_temperature_mode_t) colortemp_mode, &rgbogo)) { - return rgbogo.r_post_offset; - } - - LOGE("FactoryGetColorTemp_Roffset error!\n"); - return -1; -} - -int CVpp::FactorySetColorTemp_Goffset(int source_type, int colortemp_mode, int goffset) -{ - tcon_rgb_ogo_t rgbogo; - - GetColorTemperatureParams((vpp_color_temperature_mode_t) colortemp_mode, &rgbogo); - rgbogo.g_post_offset = goffset; - LOGD("%s, source_type[%d], colortemp_mode[%d], g_post_offset[%d].", __FUNCTION__, source_type, - colortemp_mode, goffset); - rgbogo.en = 1; - - if (VPP_SetRGBOGO(&rgbogo) == 0) { - return 0; - } - - return -1; -} - -int CVpp::FactorySaveColorTemp_Goffset(int source_type __unused, int colortemp_mode, int goffset) -{ - tcon_rgb_ogo_t rgbogo; - - if (0 == GetColorTemperatureParams((vpp_color_temperature_mode_t) colortemp_mode, &rgbogo)) { - rgbogo.g_post_offset = goffset; - return SetColorTemperatureParams((vpp_color_temperature_mode_t) colortemp_mode, rgbogo); - } - - LOGE("FactorySaveColorTemp_Goffset error!\n"); - return -1; -} - -int CVpp::FactoryGetColorTemp_Goffset(int source_type __unused, int colortemp_mode) -{ - tcon_rgb_ogo_t rgbogo; - - if (0 == GetColorTemperatureParams((vpp_color_temperature_mode_t) colortemp_mode, &rgbogo)) { - return rgbogo.g_post_offset; - } - - LOGE("FactoryGetColorTemp_Goffset error!\n"); - return -1; -} - -int CVpp::FactorySetColorTemp_Boffset(int source_type, int colortemp_mode, int boffset) -{ - tcon_rgb_ogo_t rgbogo; - - GetColorTemperatureParams((vpp_color_temperature_mode_t) colortemp_mode, &rgbogo); - rgbogo.b_post_offset = boffset; - LOGD("%s, source_type[%d], colortemp_mode[%d], b_post_offset[%d].", __FUNCTION__, source_type, - colortemp_mode, boffset); - rgbogo.en = 1; - - if (VPP_SetRGBOGO(&rgbogo) == 0) { - return 0; - } - - return -1; -} - -int CVpp::FactorySaveColorTemp_Boffset(int source_type __unused, int colortemp_mode, int boffset) -{ - tcon_rgb_ogo_t rgbogo; - - if (0 == GetColorTemperatureParams((vpp_color_temperature_mode_t) colortemp_mode, &rgbogo)) { - rgbogo.b_post_offset = boffset; - return SetColorTemperatureParams((vpp_color_temperature_mode_t) colortemp_mode, rgbogo); - } - - LOGE("FactorySaveColorTemp_Boffset error!\n"); - return -1; -} - -int CVpp::FactoryGetColorTemp_Boffset(int source_type __unused, int colortemp_mode) -{ - tcon_rgb_ogo_t rgbogo; - - if (0 == GetColorTemperatureParams((vpp_color_temperature_mode_t) colortemp_mode, &rgbogo)) { - return rgbogo.b_post_offset; - } - - LOGE("FactoryGetColorTemp_Boffset error!\n"); - return -1; -} - -int CVpp::FactoryGetTestPattern(void) -{ - unsigned char data = VPP_TEST_PATTERN_NONE; - SSMReadTestPattern(&data); - return data; -} - -int CVpp::FactoryResetPQMode(void) -{ - mpPqData->PQ_ResetAllPQModeParams(); - return 0; -} - -int CVpp::FactoryResetNonlinear(void) -{ - mpPqData->PQ_ResetAllNoLineParams(); - return 0; -} - -int CVpp::FactoryResetColorTemp(void) -{ - mpPqData->PQ_ResetAllColorTemperatureParams(); - return 0; -} - -int CVpp::FactorySetParamsDefault(void) -{ - FactoryResetPQMode(); - FactoryResetNonlinear(); - FactoryResetColorTemp(); - mpPqData->PQ_ResetAllOverscanParams(); - return 0; -} - -int CVpp::FactorySetDDRSSC(int step) -{ - int ret = -1; - - switch (step) { - case 1: - // ret = Tv_MiscRegs ( "wc 0x14e6 0x0000ac86" ); - break; - - case 2: - // ret = Tv_MiscRegs ( "wc 0x14e6 0x0000ac85" ); - break; - - case 3: - // ret = Tv_MiscRegs ( "wc 0x14e6 0x0000ac75" ); - break; - - case 4: - // ret = Tv_MiscRegs ( "wc 0x14e6 0x0000ac65" ); - break; - - case 5: - // ret = Tv_MiscRegs ( "wc 0x14e6 0x0000acb3" ); - break; - - case 0: - default: - // ret = Tv_MiscRegs ( "wc 0x14e6 0x0000ac24" ); - break; - } - - if (ret < 0) { - return -1; - } - - return SSMSaveDDRSSC(step); -} - -int CVpp::FactoryGetDDRSSC(void) -{ - unsigned char data = 0; - SSMReadDDRSSC(&data); - return data; -} - -int CVpp::SetLVDSSSC(int step) -{ - int ret = -1; - if (step > 4) - step = 4; - ret = TvMisc_SetLVDSSSC(step); - return ret; -} -int CVpp::FactorySetLVDSSSC(int step) -{ - int ret = -1; - unsigned char data[2] = {0, 0}; - char cmd_tmp_1[128]; - int value = 0, panel_idx = 0, tmp = 0; - const char *PanelIdx; - if (step > 3) - step = 3; - - PanelIdx = config_get_str ( CFG_SECTION_TV, "get.panel.index", "0" ); - panel_idx = strtoul(PanelIdx, NULL, 10); - LOGD ("%s, panel_idx = %x", __FUNCTION__, panel_idx); - SSMReadLVDSSSC(data); - - //every 2 bits represent one panel, use 2 byte store 8 panels - value = (data[1] << 8) | data[0]; - step = step & 0x03; - panel_idx = panel_idx * 2; - tmp = 3 << panel_idx; - value = (value & (~tmp)) | (step << panel_idx); - data[0] = value & 0xFF; - data[1] = (value >> 8) & 0xFF; - LOGD ("%s, tmp = %x, save value = %x", __FUNCTION__, tmp, value); - - SetLVDSSSC(step); - return SSMSaveLVDSSSC(data); -} - -int CVpp::FactoryGetLVDSSSC(void) -{ - unsigned char data[2] = {0, 0}; - int value = 0, panel_idx = 0; - const char *PanelIdx = config_get_str ( CFG_SECTION_TV, "get.panel.index", "0" ); - - panel_idx = strtoul(PanelIdx, NULL, 10); - SSMReadLVDSSSC(data); - value = (data[1] << 8) | data[0]; - value = (value >> (2 * panel_idx)) & 0x03; - LOGD ("%s, panel_idx = %x, value= %d", __FUNCTION__, panel_idx, value); - return value; -} - -noline_params_t CVpp::FactoryGetNolineParams(int type, int source_type) -{ - int ret = -1; - noline_params_t noline_params; - - memset(&noline_params, 0, sizeof(noline_params_t)); - - switch (type) { - case NOLINE_PARAMS_TYPE_BRIGHTNESS: - ret = mpPqData->PQ_GetNoLineAllBrightnessParams((tv_source_input_type_t) source_type, - &noline_params.osd0, &noline_params.osd25, &noline_params.osd50, - &noline_params.osd75, &noline_params.osd100); - - case NOLINE_PARAMS_TYPE_CONTRAST: - ret = mpPqData->PQ_GetNoLineAllContrastParams((tv_source_input_type_t) source_type, - &noline_params.osd0, &noline_params.osd25, &noline_params.osd50, - &noline_params.osd75, &noline_params.osd100); - - case NOLINE_PARAMS_TYPE_SATURATION: - ret = mpPqData->PQ_GetNoLineAllSaturationParams((tv_source_input_type_t) source_type, - &noline_params.osd0, &noline_params.osd25, &noline_params.osd50, - &noline_params.osd75, &noline_params.osd100); - - case NOLINE_PARAMS_TYPE_HUE: - ret = mpPqData->PQ_GetNoLineAllHueParams((tv_source_input_type_t) source_type, - &noline_params.osd0, &noline_params.osd25, &noline_params.osd50, - &noline_params.osd75, &noline_params.osd100); - - case NOLINE_PARAMS_TYPE_SHARPNESS: - ret = mpPqData->PQ_GetNoLineAllSharpnessParams((tv_source_input_type_t) source_type, - &noline_params.osd0, &noline_params.osd25, &noline_params.osd50, - &noline_params.osd75, &noline_params.osd100); - - case NOLINE_PARAMS_TYPE_VOLUME: - ret = mpPqData->PQ_GetNoLineAllVolumeParams((tv_source_input_type_t) source_type, - &noline_params.osd0, &noline_params.osd25, &noline_params.osd50, - &noline_params.osd75, &noline_params.osd100); - - default: - break; - } - - return noline_params; -} - -int CVpp::FactorySetNolineParams(int type, int source_type, noline_params_t noline_params) -{ - int ret = -1; - - switch (type) { - case NOLINE_PARAMS_TYPE_BRIGHTNESS: - ret = mpPqData->PQ_SetNoLineAllBrightnessParams((tv_source_input_type_t) source_type, - noline_params.osd0, noline_params.osd25, noline_params.osd50, noline_params.osd75, - noline_params.osd100); - break; - - case NOLINE_PARAMS_TYPE_CONTRAST: - ret = mpPqData->PQ_SetNoLineAllContrastParams((tv_source_input_type_t) source_type, - noline_params.osd0, noline_params.osd25, noline_params.osd50, noline_params.osd75, - noline_params.osd100); - break; - - case NOLINE_PARAMS_TYPE_SATURATION: - ret = mpPqData->PQ_SetNoLineAllSaturationParams((tv_source_input_type_t) source_type, - noline_params.osd0, noline_params.osd25, noline_params.osd50, noline_params.osd75, - noline_params.osd100); - - case NOLINE_PARAMS_TYPE_HUE: - ret = mpPqData->PQ_SetNoLineAllHueParams((tv_source_input_type_t) source_type, - noline_params.osd0, noline_params.osd25, noline_params.osd50, noline_params.osd75, - noline_params.osd100); - - case NOLINE_PARAMS_TYPE_SHARPNESS: - ret = mpPqData->PQ_SetNoLineAllSharpnessParams((tv_source_input_type_t) source_type, - noline_params.osd0, noline_params.osd25, noline_params.osd50, noline_params.osd75, - noline_params.osd100); - - case NOLINE_PARAMS_TYPE_VOLUME: - ret = mpPqData->PQ_SetNoLineAllVolumeParams((tv_source_input_type_t) source_type, - noline_params.osd0, noline_params.osd25, noline_params.osd50, noline_params.osd75, - noline_params.osd100); - - default: - break; - } - - return ret; -} - -int CVpp::FactorySetOverscan(int source_type, int fmt, int status_3d __unused, int trans_fmt, - tvin_cutwin_t cutwin_t) -{ - int ret = -1; - ret = mpPqData->PQ_SetOverscanParams((tv_source_input_type_t) source_type, - (tvin_sig_fmt_t) fmt, INDEX_2D, (tvin_trans_fmt_t) trans_fmt, cutwin_t); - - if (ret == 0) { - } else { - LOGE("%s, PQ_SetOverscanParams fail.\n", __FUNCTION__); - } - return ret; -} - -tvin_cutwin_t CVpp::FactoryGetOverscan(int source_type, int fmt, is_3d_type_t is3d, int trans_fmt) -{ - int ret = -1; - tvin_cutwin_t cutwin_t; - memset(&cutwin_t, 0, sizeof(cutwin_t)); - - if (trans_fmt < TVIN_TFMT_2D || trans_fmt > TVIN_TFMT_3D_LDGD) { - return cutwin_t; - } - - ret = mpPqData->PQ_GetOverscanParams((tv_source_input_type_t) source_type, - (tvin_sig_fmt_t) fmt, is3d, (tvin_trans_fmt_t) trans_fmt, VPP_DISPLAY_MODE_169, - &cutwin_t); - - if (ret == 0) { - } else { - LOGE("%s, PQ_GetOverscanParams faild.\n", __FUNCTION__); - } - - return cutwin_t; -} - -int CVpp::FactorySetBacklightPWM_Frequency(int freq) -{ - LOGD("%s,FactorySetBacklightPWM_Frequency set freq %d .\n", __FUNCTION__, freq); - return 1; -} - -int CVpp::FactoryGetBacklightPWM_Frequency(void) -{ - int freq = 50; - LOGD("%s,FactoryGetBacklightPWM_Frequency set freq %d .\n", CFG_SECTION_TV, freq); - return freq; -} - -int CVpp::FactorySetBacklight_Switch_status(int status) -{ - LOGD("%s,FactorySetBacklight_Switch_status set status %d .\n", __FUNCTION__, status); - return 1; -} - -int CVpp::FactoryGetBacklight_Switch_status(void) -{ - int status = 1; - LOGD("%s,FactoryGetBacklight_Switch_status get status %d .\n", __FUNCTION__, status); - return status; -} - -int CVpp::FactorySetBacklightPWM_Duty(int duty) -{ - LOGD("%s,FactorySetBacklight_Switch_status set duty %d .\n", __FUNCTION__, duty); - return 1; -} - -int CVpp::FactoryGetBacklightPWM_Duty(void) -{ - int duty = 1; - LOGD("%s,FactoryGetBacklight_Switch_status get duty %d .\n", __FUNCTION__, duty); - return duty; -} - -int CVpp::FactorySetLVDS_ColorDepth(int depth) -{ - LOGD("%s,FactorySetLVDS_ColorDepth set depth %d .\n", CFG_SECTION_TV, depth); - return 1; -} - -int CVpp::FactoryGetLVDS_ColorDepth(void) -{ - int depth = 1; - LOGD("%s,FactorySetLVDS_ColorDepth get freq %d .\n", __FUNCTION__, depth); - return depth; -} - -int CVpp::FactorySetLVDS_ColorDither_status(int status) -{ - LOGD("%s,FactorySetLVDS_ColorDither_status set status %d .\n", __FUNCTION__, status); - return 1; -} - -int CVpp::FactoryGetLVDS_ColorDither_status(void) -{ - int status = 1; - LOGD("%s,FactoryGetLVDS_ColorDither_status get status %d .\n", __FUNCTION__, status); - return status; -} - -int CVpp::FactorySetLVDS_Mapping_status(int status) -{ - LOGD("%s,FactorySetLVDS_Mapping_status set status %d .\n", __FUNCTION__, status); - return 1; -} - -int CVpp::FactoryGetLVDS_Mapping_status(void) -{ - int status = 1; - LOGD("%s,FactoryGetLVDS_Mapping_status get status %d .\n", __FUNCTION__, status); - return status; -} - -int CVpp::FactorySetLVDS_PortSwap_status(int status) -{ - LOGD("%s,FactorySetLVDS_PortSwap_status set status %d .\n", __FUNCTION__, status); - return 1; -} - -int CVpp::FactoryGetLVDS_PortSwap_status(void) -{ - int status = 1; - LOGD("%s,FactoryGetLVDS_PortSwap_status get status %d .\n", __FUNCTION__, status); - return status; -} - -int CVpp::VPPSSMRestoreDefault() -{ - int i = 0, tmp_val = 0; - int tmp_panorama_nor = 0, tmp_panorama_full = 0; - int offset_r = 0, offset_g = 0, offset_b = 0, gain_r = 1024, gain_g = 1024, gain_b = 1024; - int8_t std_buf[6] = { 0, 0, 0, 0, 0, 0 }; - int8_t warm_buf[6] = { 0, 0, -8, 0, 0, 0 }; - int8_t cold_buf[6] = { -8, 0, 0, 0, 0, 0 }; - unsigned char tmp[2] = {0, 0}; - - SSMSaveColorDemoMode ( VPP_COLOR_DEMO_MODE_ALLON); - SSMSaveColorBaseMode ( VPP_COLOR_BASE_MODE_OPTIMIZE); - SSMSaveRGBGainRStart(0, gain_r); - SSMSaveRGBGainGStart(0, gain_g); - SSMSaveRGBGainBStart(0, gain_b); - SSMSaveRGBPostOffsetRStart(0, offset_r); - SSMSaveRGBPostOffsetGStart(0, offset_g); - SSMSaveRGBPostOffsetBStart(0, offset_b); - SSMSaveUserNatureLightSwitch(1); - SSMSaveGammaValue(0); - SSMSaveGraphyBacklight(100); - SSMSaveDBCStart(0); - SSMSaveDnlpStart(0); //0: ON,1: OFF,default is on - SSMSaveAPL(30); - SSMSaveAPL2(30); - SSMSaveBD(30); - SSMSaveBP(30); - - SSMSaveFBCELECmodeVal(11); - SSMSaveFBCN360BackLightVal(10); - SSMSaveFBCN360ColorTempVal(1); // standard colortemp - - SSMSaveFBCN310ColorTempVal(0); - SSMSaveFBCN310LightsensorVal(0); - SSMSaveFBCN310Dream_PanelVal(1); - SSMSaveFBCN310MULT_PQVal(1); - SSMSaveFBCN310MEMCVal(2); - SSMSaveFBCN310BackLightVal(254); - for (i = 0; i < 6; i++) { - SSMSaveRGBValueStart(i + VPP_COLOR_TEMPERATURE_MODE_STANDARD * 6, std_buf[i]); //0~5 - SSMSaveRGBValueStart(i + VPP_COLOR_TEMPERATURE_MODE_WARM * 6, warm_buf[i]); //6~11 - SSMSaveRGBValueStart(i + VPP_COLOR_TEMPERATURE_MODE_COLD * 6, cold_buf[i]); //12~17 - } - - for (i = 0; i < SOURCE_TYPE_MAX; i++) { - if (i == SOURCE_TYPE_HDMI) { - SSMSaveColorSpaceStart ( VPP_COLOR_SPACE_AUTO); - } - - tmp_val = VPP_COLOR_TEMPERATURE_MODE_STANDARD; - tmp_panorama_nor = VPP_PANORAMA_MODE_NORMAL; - tmp_panorama_full = VPP_PANORAMA_MODE_FULL; - - if (i == SOURCE_TYPE_HDMI) { - SSMSavePanoramaStart(i, tmp_panorama_full); - } else { - SSMSavePanoramaStart(i, tmp_panorama_nor); - } - - SSMSaveColorTemperature(i, tmp_val); - tmp_val = 50; - SSMSaveBrightness(i, tmp_val); - SSMSaveContrast(i, tmp_val); - SSMSaveSaturation(i, tmp_val); - SSMSaveHue(i, tmp_val); - SSMSaveSharpness(i, tmp_val); - tmp_val = VPP_PICTURE_MODE_STANDARD; - SSMSavePictureMode(i, tmp_val); - tmp_val = VPP_DISPLAY_MODE_169; - SSMSaveDisplayMode(i, tmp_val); - tmp_val = VPP_NOISE_REDUCTION_MODE_AUTO; - SSMSaveNoiseReduction(i, tmp_val); - tmp_val = 100; - SSMSaveBackLightVal(i, tmp_val); - } - - SSMSaveDDRSSC(0); - SSMSaveLVDSSSC(tmp); - return 0; -} - -int CVpp::VPPSSMFacRestoreDefault() -{ - return VPPSSMRestoreDefault(); -} - -int CVpp::SetRGBValue(vpp_color_temperature_mode_t temp_mode, unsigned char data_buf[]) -{ - int8_t r_gain = 0, b_gain = 0, g_gain = 0, r_offset = 0, g_offset = 0, b_offset = 0; - int ret = -1; - tcon_rgb_ogo_t rgbogo; - rgbogo.en = 1; - rgbogo.r_pre_offset = 0; - rgbogo.g_pre_offset = 0; - rgbogo.b_pre_offset = 0; - r_gain = data_buf[0]; - g_gain = data_buf[1]; - b_gain = data_buf[2]; - r_offset = data_buf[3]; - g_offset = data_buf[4]; - b_offset = data_buf[5]; - int mode = (int) temp_mode; - - switch (mode) { - case 1: - ret = SSMSaveRGBValueStart(0 + mode * 6, r_gain); - ret |= SSMSaveRGBValueStart(1 + mode * 6, g_gain); - ret |= SSMSaveRGBValueStart(2 + mode * 6, b_gain); - ret |= SSMSaveRGBValueStart(3 + mode * 6, r_offset); - ret |= SSMSaveRGBValueStart(4 + mode * 6, g_offset); - ret |= SSMSaveRGBValueStart(5 + mode * 6, b_offset); - break; - - case 2: - ret = SSMSaveRGBValueStart(0 + mode * 6, r_gain); - ret |= SSMSaveRGBValueStart(1 + mode * 6, g_gain); - ret |= SSMSaveRGBValueStart(2 + mode * 6, b_gain); - ret |= SSMSaveRGBValueStart(3 + mode * 6, r_offset); - ret |= SSMSaveRGBValueStart(4 + mode * 6, g_offset); - ret |= SSMSaveRGBValueStart(5 + mode * 6, b_offset); - break; - - case 0: - default: - ret = SSMSaveRGBValueStart(0, r_gain); - ret |= SSMSaveRGBValueStart(1, g_gain); - ret |= SSMSaveRGBValueStart(2, b_gain); - ret |= SSMSaveRGBValueStart(3, r_offset); - ret |= SSMSaveRGBValueStart(4, g_offset); - ret |= SSMSaveRGBValueStart(5, b_offset); - break; - } - - if (ret == 0) { - rgbogo.r_gain = RGBGainValueSSMToRisterMapping(r_gain + 128); - rgbogo.g_gain = RGBGainValueSSMToRisterMapping(g_gain + 128); - rgbogo.b_gain = RGBGainValueSSMToRisterMapping(b_gain + 128); - rgbogo.r_post_offset = RGBOffsetValueSSMToRisterMapping(r_offset); - rgbogo.g_post_offset = RGBOffsetValueSSMToRisterMapping(g_offset); - rgbogo.b_post_offset = RGBOffsetValueSSMToRisterMapping(b_offset); - ret |= VPP_SetRGBOGO(&rgbogo); - } - - return ret; -} - -int CVpp::GetRGBValue(vpp_color_temperature_mode_t temp_mode, tcon_rgb_ogo_t *p_rgbogo) -{ - int8_t r_gain = 0, b_gain = 0, g_gain = 0, r_offset = 0, g_offset = 0, b_offset = 0; - int ret = -1; - - p_rgbogo->en = 1; - p_rgbogo->r_pre_offset = 0; - p_rgbogo->g_pre_offset = 0; - p_rgbogo->b_pre_offset = 0; - p_rgbogo->r_gain = 0; - p_rgbogo->g_gain = 0; - p_rgbogo->b_gain = 0; - p_rgbogo->r_post_offset = 0; - p_rgbogo->g_post_offset = 0; - p_rgbogo->b_post_offset = 0; - int mode = (int) temp_mode; - - switch (mode) { - case 1: - ret = SSMReadRGBValueStart(0 + mode * 6, &r_gain); - ret |= SSMReadRGBValueStart(1 + mode * 6, &g_gain); - ret |= SSMReadRGBValueStart(2 + mode * 6, &b_gain); - ret |= SSMReadRGBValueStart(3 + mode * 6, &r_offset); - ret |= SSMReadRGBValueStart(4 + mode * 6, &g_offset); - ret |= SSMReadRGBValueStart(5 + mode * 6, &b_offset); - break; - - case 2: - ret = SSMReadRGBValueStart(0 + mode * 6, &r_gain); - ret |= SSMReadRGBValueStart(1 + mode * 6, &g_gain); - ret |= SSMReadRGBValueStart(2 + mode * 6, &b_gain); - ret |= SSMReadRGBValueStart(3 + mode * 6, &r_offset); - ret |= SSMReadRGBValueStart(4 + mode * 6, &g_offset); - ret |= SSMReadRGBValueStart(5 + mode * 6, &b_offset); - break; - - case 0: - default: - ret = SSMReadRGBValueStart(0, &r_gain); - ret |= SSMReadRGBValueStart(1, &g_gain); - ret |= SSMReadRGBValueStart(2, &b_gain); - ret |= SSMReadRGBValueStart(3, &r_offset); - ret |= SSMReadRGBValueStart(4, &g_offset); - ret |= SSMReadRGBValueStart(5, &b_offset); - break; - } - - p_rgbogo->r_gain = r_gain + 128; //r_gain:-128~127 - p_rgbogo->g_gain = g_gain + 128; - p_rgbogo->b_gain = b_gain + 128; - p_rgbogo->r_post_offset = r_offset; - p_rgbogo->g_post_offset = g_offset; - p_rgbogo->b_post_offset = b_offset; - - return ret; -} - -#define PI 3.14159265358979 -void CVpp::video_set_saturation_hue(signed char saturation, signed char hue, signed long *mab) -{ - signed short ma = (signed short) (cos((float) hue * PI / 128.0) * ((float) saturation / 128.0 - + 1.0) * 256.0); - signed short mb = (signed short) (sin((float) hue * PI / 128.0) * ((float) saturation / 128.0 - + 1.0) * 256.0); - - if (ma > 511) { - ma = 511; - } - - if (ma < -512) { - ma = -512; - } - - if (mb > 511) { - mb = 511; - } - - if (mb < -512) { - mb = -512; - } - - *mab = ((ma & 0x3ff) << 16) | (mb & 0x3ff); -} - -void CVpp::video_get_saturation_hue(signed char *sat, signed char *hue, signed long *mab) -{ - signed long temp = *mab; - signed int ma = (signed int) ((temp << 6) >> 22); - signed int mb = (signed int) ((temp << 22) >> 22); - signed int sat16 = (signed int) ((sqrt( - ((float) ma * (float) ma + (float) mb * (float) mb) / 65536.0) - 1.0) * 128.0); - signed int hue16 = (signed int) (atan((float) mb / (float) ma) * 128.0 / PI); - - if (sat16 > 127) { - sat16 = 127; - } - - if (sat16 < -128) { - sat16 = -128; - } - - if (hue16 > 127) { - hue16 = 127; - } - - if (hue16 < -128) { - hue16 = -128; - } - - *sat = (signed char) sat16; - *hue = (signed char) hue16; -} - -int CVpp::VPP_SetVideoSaturationHue(int satVal, int hueVal) -{ - FILE *fp = NULL; - signed long temp; - - fp = fopen("/sys/class/amvecm/saturation_hue", "w"); - LOGD("~~~fopen~~~##VPP_SetVideoSaturationHue##%s : %d %d##", - "/sys/class/amvecm/saturation_hue", satVal, hueVal); - - if (fp == NULL) { - LOGE("Open /sys/class/amvecm/saturation_hue error(%s)!\n", strerror(errno)); - return -1; - } - - video_set_saturation_hue(satVal, hueVal, &temp); - fprintf(fp, "0x%lx", temp); - - fclose(fp); - fp = NULL; - - return 0; -} - -int CVpp::VPP_SetVideoSaturation(int saturation) -{ - FILE *fp = NULL; - - fp = fopen("/sys/class/amvecm/saturation_hue", "w"); - LOGD("~~~fopen~~~##VPP_SetVideoSaturation##%s : %d ##", "/sys/class/amvecm/saturation_hue", - saturation); - - if (fp == NULL) { - LOGE("Open /sys/class/amvecm/saturation_hue error(%s)!\n", strerror(errno)); - return -1; - } - - fprintf(fp, "0x%x", saturation); - - fclose(fp); - fp = NULL; - - return 0; -} - -int CVpp::VPP_SetVideoHue(int hue) -{ - FILE *fp = NULL; - - fp = fopen("/sys/class/amvecm/saturation_hue", "w"); - LOGD("~~~fopen~~~##VPP_SetVideoHue##%s : %d ##", "/sys/class/amvecm/saturation_hue", hue); - - if (fp == NULL) { - LOGE("Open /sys/class/amvecm/saturation_hue error(%s)!\n", strerror(errno)); - return -1; - } - - fprintf(fp, "0x%x", hue); - - fclose(fp); - fp = NULL; - return 0; -} - -int CVpp::VPP_SetGammaTbl_R(unsigned short red[256]) -{ - struct tcon_gamma_table_s Redtbl; - int rt = -1, i = 0; - - for (i = 0; i < 256; i++) { - Redtbl.data[i] = red[i]; - } - - rt = VPP_DeviceIOCtl(AMVECM_IOC_GAMMA_TABLE_R, &Redtbl); - LOGD("~~~VPP_DeviceIOCtl~~~##VPP_SetGammaTbl_R##AMVECM_IOC_GAMMA_TABLE_R##"); - - if (rt < 0) { - LOGE("Vpp_api_SetGammaTbl_R, error(%s)!\n", strerror(errno)); - } - - return rt; -} - -int CVpp::VPP_SetGammaTbl_G(unsigned short green[256]) -{ - struct tcon_gamma_table_s Greentbl; - int rt = -1, i = 0; - - for (i = 0; i < 256; i++) { - Greentbl.data[i] = green[i]; - } - - rt = VPP_DeviceIOCtl(AMVECM_IOC_GAMMA_TABLE_G, &Greentbl); - LOGD("~~~VPP_DeviceIOCtl~~~##VPP_SetGammaTbl_G##AMVECM_IOC_GAMMA_TABLE_G##"); - - if (rt < 0) { - LOGE("Vpp_api_SetGammaTbl_R, error(%s)!\n", strerror(errno)); - } - - return rt; -} - -int CVpp::VPP_SetGammaTbl_B(unsigned short blue[256]) -{ - struct tcon_gamma_table_s Bluetbl; - int rt = -1, i = 0; - - for (i = 0; i < 256; i++) { - Bluetbl.data[i] = blue[i]; - } - - rt = VPP_DeviceIOCtl(AMVECM_IOC_GAMMA_TABLE_B, &Bluetbl); - LOGD("~~~VPP_DeviceIOCtl~~~##VPP_SetGammaTbl_B##AMVECM_IOC_GAMMA_TABLE_B##"); - - if (rt < 0) { - LOGE("Vpp_api_SetGammaTbl_R, error(%s)!\n", strerror(errno)); - } - - return rt; -} - -int CVpp::VPP_SetGammaOnOff(unsigned char onoff) -{ - int rt = -1; - - if (onoff == 1) { - rt = VPP_DeviceIOCtl(AMVECM_IOC_GAMMA_TABLE_EN); - LOGD("~~~VPP_DeviceIOCtl~~~##VPP_SetGammaOnOff##AMVECM_IOC_GAMMA_TABLE_EN##"); - } - - if (onoff == 0) { - rt = VPP_DeviceIOCtl(AMVECM_IOC_GAMMA_TABLE_DIS); - LOGD("~~~VPP_DeviceIOCtl~~~##VPP_SetGammaOnOff##AMVECM_IOC_GAMMA_TABLE_DIS##"); - } - - if (rt < 0) { - LOGE("Vpp_api_SetGammaOnOff, error(%s)!\n", strerror(errno)); - } - - return rt; -} - -int CVpp::VPP_SetGrayPattern(int value) -{ - - FILE *fp = NULL; - if (value < 0) { - value = 0; - } else if (value > 255) { - value = 255; - } - value = value << 16 | 0x8080; - - fp = fopen("/sys/class/video/test_screen", "w"); - LOGD("~~~fopen~~~##VPP_SetGrayPattern##%s : %x ##", "/sys/class/video/test_screen", value); - - if (fp == NULL) { - LOGE("Open /sys/classs/video/test_screen error(%s)!\n", strerror(errno)); - return -1; - } - - fprintf(fp, "0x%x", value); - fclose(fp); - fp = NULL; - - return 0; -} - -int CVpp::VPP_GetGrayPattern() -{ - FILE *fp = NULL; - int value; - fp = fopen("/sys/class/video/test_screen", "r+"); - - LOGD("~~~fopen~~~##VPP_GetGrayPattern##%s ##", "/sys/class/video/test_screen"); - - if (fp == NULL) { - LOGE("Open /sys/class/video/test_screen error(%s)!\n", strerror(errno)); - return -1; - } - - fscanf(fp, "%d", &value); - fclose(fp); - fp = NULL; - if (value < 0) { - return 0; - } else { - value = value >> 16; - if (value > 255) { - value = 255; - } - return value; - } - -} - -int CVpp::VPP_SplitScreenEffect(int width, int v_register) -{ - FILE *fp = fopen(SYS_DROILOGIC_DEBUG, "w"); - - if (fp == NULL) { - LOGE("Open %s ERROR(%s)!!\n",SYS_DROILOGIC_DEBUG, strerror(errno)); - return -1; - } - LOGD("width = %x----v_register = %x", width, v_register); - fprintf(fp, "w %x v %x", width, v_register); - fclose(fp); - fp = NULL; - - return 0; -} -int CVpp::VPP_SetVideoNoiseReduction(int value) -{ - FILE *fp = NULL; - - fp = fopen("/sys/class/deinterlace/di0/parameters", "w"); - LOGD("~~~fopen~~~##VPP_SetVideoNoiseReduction##%s : %d ##", - "/sys/class/deinterlace/di0/parameters", value); - - if (fp == NULL) { - LOGE("Open /sys/class/deinterlace/di0/parameters ERROR(%s)!!\n", strerror(errno)); - return -1; - } - - fprintf(fp, "noise_reduction_level=%x", value); - fclose(fp); - fp = NULL; - - return 0; -} - -int CVpp::VPP_SetDeinterlaceMode(int value) -{ - FILE *fp = NULL; - - fp = fopen("/sys/module/deinterlace/parameters/deinterlace_mode", "w"); - LOGD("~~~fopen~~~##VPP_SetDeinterlaceMode##%s : %d ##", - "/sys/module/deinterlace/parameters/deinterlace_mode", value); - - if (fp == NULL) { - LOGE("Open /sys/module/deinterlace/parameters/deinterlace_mode error(%s)!\n", - strerror(errno)); - return -1; - } - - fprintf(fp, "%d", value); - - fclose(fp); - fp = NULL; - - return 0; -} - -int CVpp::GetHistogram_AVE(void) -{ - ve_hist_t hist; - hist.sum = 0; - hist.height = 0; - hist.width = 0; - hist.ave = 0; - - if (Vpp_GetAVGHistogram(&hist) == 0) { - LOGD("%s: %d.\n", __FUNCTION__, hist.ave); - } else { - LOGE("%s failed.\n", __FUNCTION__); - } - - return hist.ave; -} - -int CVpp::Vpp_GetAVGHistogram(struct ve_hist_s *hist) -{ - //int rt = VPP_DeviceIOCtl(AMSTREAM_IOC_G_HIST_AVG, hist); - int rt = VPP_DeviceIOCtl(AMVECM_IOC_G_HIST_AVG, hist); - LOGD("~~~VPP_DeviceIOCtl~~~##Vpp_GetAVGHistogram##AMVECM_IOC_G_HIST_AVG##"); - - if (rt < 0) { - LOGE("Vpp_GetAVGHistogram, error(%s)!\n", strerror(errno)); - } - - return rt; -} - -int CVpp::VPP_SetVEBlackExtension(const struct ve_bext_s *pBExt) -{ - int rt = VPP_DeviceIOCtl(AMSTREAM_IOC_VE_BEXT, pBExt); - LOGD("~~~VPP_DeviceIOCtl~~~##VPP_SetVEBlackExtension##AMSTREAM_IOC_VE_BEXT##"); - - if (rt < 0) { - LOGE("Vpp_api_SetVEBlackExtension, error(%s)!\n", strerror(errno)); - } - - return rt; -} - -tvin_cutwin_t CVpp::GetOverscan(tv_source_input_type_t source_type, tvin_sig_fmt_t fmt, - is_3d_type_t is3d, tvin_trans_fmt_t trans_fmt) -{ - int ret = -1; - char tmp_buf[16]; - tvin_cutwin_t cutwin_t; - memset(&cutwin_t, 0, sizeof(cutwin_t)); - - if (trans_fmt < TVIN_TFMT_2D || trans_fmt > TVIN_TFMT_3D_LDGD) { - return cutwin_t; - } - - vpp_display_mode_t scrmode = GetDisplayMode(source_type); - ret = mpPqData->PQ_GetOverscanParams(source_type, fmt, is3d, trans_fmt, scrmode, &cutwin_t); - - return cutwin_t; -} - -int CVpp::VPP_SetVideoCrop(int Voffset0, int Hoffset0, int Voffset1, int Hoffset1) -{ - int fd = -1; - char set_str[32]; - - fd = open("/sys/class/video/crop", O_RDWR); - - LOGD("~~~open~~~##VPP_SetVideoCrop##%s : %d %d %d %d##", "/sys/class/video/crop", Voffset0, - Hoffset0, Voffset1, Hoffset1); - - if (fd < 0) { - LOGE("Open /sys/class/video/crop error(%s)!\n", strerror(errno)); - return -1; - } - - memset(set_str, 0, 32); - sprintf(set_str, "%d %d %d %d", Voffset0, Hoffset0, Voffset1, Hoffset1); - write(fd, set_str, strlen(set_str)); - close(fd); - - return 0; -} - -int CVpp::VPP_SetVESharpness(const struct ve_hsvs_s *pHSVS) -{ - int rt = VPP_DeviceIOCtl(AMSTREAM_IOC_VE_HSVS, pHSVS); - LOGD("~~~VPP_DeviceIOCtl~~~##VPP_SetVESharpness##AMSTREAM_IOC_VE_HSVS##"); - - if (rt < 0) { - LOGE("Vpp_api_SetVESharpness, error(%s)!\n", strerror(errno)); - } - - return rt; -} - -int CVpp::VPP_SetVEChromaCoring(const struct ve_ccor_s *pCCor) -{ - int rt = VPP_DeviceIOCtl(AMSTREAM_IOC_VE_CCOR, pCCor); - LOGD("~~~VPP_DeviceIOCtl~~~##VPP_SetVEChromaCoring##AMSTREAM_IOC_VE_CCOR##"); - - if (rt < 0) { - LOGE("Vpp_api_SetVEChromaCoring, error(%s)!\n", strerror(errno)); - } - - return rt; -} - -int CVpp::VPP_SetVEBlueEnh(const struct ve_benh_s *pBEnh) -{ - int rt = VPP_DeviceIOCtl(AMSTREAM_IOC_VE_BENH, pBEnh); - LOGD("~~~VPP_DeviceIOCtl~~~##VPP_SetVEBlueEnh##AMSTREAM_IOC_VE_BENH##"); - - if (rt < 0) { - LOGE("Vpp_api_SetVEBlueEnh, error(%s)!\n", strerror(errno)); - } - - return rt; -} - -int CVpp::VPP_SetVEDemo(const struct ve_demo_s *pDemo) -{ - int rt = VPP_DeviceIOCtl(AMSTREAM_IOC_VE_DEMO, pDemo); - LOGD("~~~VPP_DeviceIOCtl~~~##VPP_SetVEDemo##AMSTREAM_IOC_VE_DEMO##"); - - if (rt < 0) { - LOGE("Vpp_api_SetVEDemo, error(%s)!\n", strerror(errno)); - } - - return rt; -} - -int CVpp::VPP_SetVERegisterMap(const struct ve_regmap_s *pRegMap) -{ - int rt = VPP_DeviceIOCtl(AMSTREAM_IOC_VE_REGMAP, pRegMap); - LOGD("~~~VPP_DeviceIOCtl~~~##VPP_SetVERegisterMap##AMSTREAM_IOC_VE_REGMAP##"); - - if (rt < 0) { - LOGE("Vpp_api_SetVERegisterMap, error(%s)!\n", strerror(errno)); - } - - return rt; -} - -int CVpp::VPP_SetVEDebug(const unsigned long long *pLData) -{ - int rt = VPP_DeviceIOCtl(AMSTREAM_IOC_VE_DEBUG, pLData); - LOGD("~~~VPP_DeviceIOCtl~~~##VPP_SetVEDebug##AMSTREAM_IOC_VE_DEBUG##"); - - if (rt < 0) { - LOGE("Vpp_api_SetVEDebug, error(%s)!\n", strerror(errno)); - } - - return rt; -} - -int CVpp::VPP_SetCMRegion(const struct cm_region_s *pRegion) -{ - int rt = VPP_DeviceIOCtl(AMSTREAM_IOC_CM_REGION, pRegion); - LOGD("~~~VPP_DeviceIOCtl~~~##VPP_SetCMRegion##AMSTREAM_IOC_CM_REGION##"); - - if (rt < 0) { - LOGE("Vpp_api_SetCMRegion, error(%s)!\n", strerror(errno)); - } - - return rt; -} - -int CVpp::VPP_SetCMTopLayer(const struct cm_top_s *pTop) -{ - int rt = VPP_DeviceIOCtl(AMSTREAM_IOC_CM_TOP, pTop); - LOGD("~~~VPP_DeviceIOCtl~~~##VPP_SetCMTopLayer##AMSTREAM_IOC_CM_TOP##"); - - if (rt < 0) { - LOGE("Vpp_api_SetCMTopLayer, error(%s)!\n", strerror(errno)); - } - - return rt; -} - -int CVpp::VPP_SetCMDemo(const struct cm_demo_s *pDemo) -{ - int rt = VPP_DeviceIOCtl(AMSTREAM_IOC_CM_DEMO, pDemo); - LOGD("~~~VPP_DeviceIOCtl~~~##VPP_SetCMDemo##AMSTREAM_IOC_CM_DEMO##"); - - if (rt < 0) { - LOGE("Vpp_api_SetCMDemo, error(%s)!\n", strerror(errno)); - } - - return rt; -} - -int CVpp::VPP_SetCMRegisterMap(struct cm_regmap_s *pRegMap) -{ - int rt = VPP_DeviceIOCtl(AMSTREAM_IOC_CM_REGMAP, pRegMap); - LOGD("~~~VPP_DeviceIOCtl~~~##VPP_SetCMRegisterMap##AMSTREAM_IOC_CM_REGMAP##"); - - if (rt < 0) { - LOGE("Vpp_api_SetCMRegisterMap, error(%s)!\n", strerror(errno)); - } - - return rt; -} - -int CVpp::VPP_SetCMDebug(const unsigned long long *pLData) -{ - int rt = VPP_DeviceIOCtl(AMSTREAM_IOC_CM_DEBUG, pLData); - LOGD("~~~VPP_DeviceIOCtl~~~##VPP_SetCMDebug##AMSTREAM_IOC_CM_DEBUG##"); - - if (rt < 0) { - LOGE("=VPP CPP=> set cm debug, error (%s)", strerror(errno)); - } - - return rt; -} - -int CVpp::VPP_SetAVSyncEnable(const unsigned int enable) -{ - int rt = VPP_DeviceIOCtl(AMSTREAM_IOC_SYNCENABLE, enable); - LOGD("~~~VPP_DeviceIOCtl~~~##VPP_SetAVSyncEnable##AMSTREAM_IOC_SYNCENABLE##"); - - if (rt < 0) { - LOGE("Vpp_api_SetAVSyncEnable, error(%s)!\n", strerror(errno)); - } - - return rt; -} -int CVpp::VPP_SetScalerPathSel(const unsigned int value) -{ - FILE *fp = NULL; - - fp = fopen(SYS_VIDEO_SCALER_PATH_SEL, "w"); - LOGD("VPP_SetScalerPathSel %s : %d", SYS_VIDEO_SCALER_PATH_SEL, value); - if (fp == NULL) { - LOGE("Open %s error(%s)!\n",SYS_VIDEO_SCALER_PATH_SEL, strerror(errno)); - return -1; - } - fprintf(fp, "%d", value); - fclose(fp); - fp = NULL; - return 0; -} diff --git a/tvapi/libtv/vpp/CVpp.h b/tvapi/libtv/vpp/CVpp.h deleted file mode 100644 index 4a64903..0000000 --- a/tvapi/libtv/vpp/CVpp.h +++ b/dev/null @@ -1,453 +0,0 @@ -#ifndef _C_VPP_H -#define _C_VPP_H -#include "amstream.h" -#include "cm.h" -#include "amvecm.h" -#include "pqdata.h" -#include "../tvin/CTvin.h" -#define GLOBAL_OGO_FORMAT_FLAG 0x6688 -#define DEFAULT_RANGE 0 -#define LIMIT_RANGE 1 -#define FULL_RANGE 2 -#define RGB_FORMAT 0 -#define YCbCr_422_FORMAT 1 -#define YCbCr_444_FORMAT 2 -#define PQ_USER_DATA_FROM_E2P 0 -#define PQ_USER_DATA_FROM_DB 1 - -#define VPP_DEV_PATH "/dev/amvecm" -#define VPP_3D_DEV_PATH "/dev/amvideo" - -#define MODE_VPP_3D_DISABLE 0x00000000 -#define MODE_VPP_3D_ENABLE 0x00000001 -#define MODE_VPP_3D_AUTO 0x00000002 -#define MODE_VPP_3D_LR 0x00000004 -#define MODE_VPP_3D_TB 0x00000008 -#define MODE_VPP_3D_LA 0x00000010 -#define MODE_VPP_3D_FA 0x00000020 -#define MODE_VPP_3D_LR_SWITCH 0x00000100 -#define MODE_VPP_3D_TO_2D_L 0x00000200 -#define MODE_VPP_3D_TO_2D_R 0x00000400 - -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_panorama_mode_e { - VPP_PANORAMA_MODE_FULL, - VPP_PANORAMA_MODE_NORMAL, - VPP_PANORAMA_MODE_MAX, -} vpp_panorama_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_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 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_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_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_MAX, -} vpp_picture_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 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_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 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 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 struct noline_params_s { - int osd0; - int osd25; - int osd50; - int osd75; - int osd100; -} noline_params_t; - -typedef enum vpp_dream_panel_e { - VPP_DREAM_PANEL_OFF, - VPP_DREAM_PANEL_LIGHT, - VPP_DREAM_PANEL_SCENE, - VPP_DREAM_PANEL_FULL, - VPP_DREAM_PANEL_DEMO, - VPP_DREAM_PANEL_MAX, -} vpp_dream_panel_t; - -class CPqData; - -class CVpp { -public: - CVpp(); - ~CVpp(); - int doSuspend(); - int doResume(); - int Vpp_Init ( const char *pq_db_path ); - int Vpp_Uninit ( void ); - CPqData *getPqData(); - int Vpp_ResetLastVppSettingsSourceType ( void ); - int Vpp_SetColorDemoMode ( vpp_color_demomode_t demomode ); - int Vpp_SetBaseColorMode ( vpp_color_basemode_t basemode , tvin_port_t source_port , tvin_sig_fmt_t sig_fmt, is_3d_type_t is3d, tvin_trans_fmt_t trans_fmt); - int Vpp_SetColorTemperatureUser ( vpp_color_temperature_mode_t temp_mode, tv_source_input_type_t source_type ); - int Vpp_SetColorTemperature ( vpp_color_temperature_mode_t Tempmode, tv_source_input_type_t source_type, tvin_port_t source_port , tvin_sig_fmt_t sig_fmt, tvin_trans_fmt_t trans_fmt); - int Vpp_SetBrightness ( int value, 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 ); - int Vpp_SetContrast ( int value, 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 ); - int Vpp_SetSaturation ( int value, 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 ); - int Vpp_SetHue ( int value, tv_source_input_type_t source_type, tvin_sig_fmt_t sig_fmt, tvin_port_t source_port, is_3d_type_t is3d, tvin_trans_fmt_t trans_fmt ); - int Vpp_SetSharpness ( int value, 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 ); - int Vpp_SetPQMode ( vpp_picture_mode_t pq_mode, 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 ); - int Vpp_SetNoiseReductionMode ( vpp_noise_reduction_mode_t nr_mode, 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 ); - int Vpp_SetXVYCCMode ( vpp_xvycc_mode_t xvycc_mode, 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 ); - int Vpp_SetDeblockMode(vpp_deblock_mode_t mode, tvin_port_t source_port, tvin_sig_fmt_t sig_fmt, is_3d_type_t is3d, tvin_trans_fmt_t trans_fmt); - int Vpp_SetMCDIMode ( vpp_mcdi_mode_t mcdi_mode, 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); - int Vpp_SetZoom ( int value ); - int Vpp_LoadDI(tv_source_input_type_t source_type, tvin_sig_fmt_t sig_fmt, is_3d_type_t is3d, tvin_trans_fmt_t trans_fmt); - int Vpp_LoadBasicRegs ( tv_source_input_type_t source_type, tvin_sig_fmt_t sig_fmt, is_3d_type_t is3d, tvin_trans_fmt_t trans_fmt ); - int VppRegisterInterface(); - int RGBGainValueSSMToRisterMapping ( int gainValue ); - int RGBOffsetValueSSMToRisterMapping ( int gainValue ); - int SetRGBValue ( vpp_color_temperature_mode_t temp_mode, unsigned char data_buf[] ); - int GetRGBValue ( vpp_color_temperature_mode_t temp_mode, tcon_rgb_ogo_t *p_rgbogo ); - int SetColorSpaceMode ( vpp_color_space_type_t colorSpace ); - //int Tv_SetGammaValue(int gammaValue); - int GetGammaValue(); - //int Tv_SetColorDemoMode ( vpp_color_demomode_t demomode ); - vpp_color_demomode_t GetColorDemoMode ( void ); - - int SetBaseColorMode ( vpp_color_basemode_t basemode , tvin_port_t source_port , tvin_sig_fmt_t sig_fmt, is_3d_type_t is3d, tvin_trans_fmt_t trans_fmt); - vpp_color_basemode_t GetBaseColorMode ( void ); - int SetBaseColorModeWithoutSave ( vpp_color_basemode_t basemode , tvin_port_t source_port , tvin_sig_fmt_t sig_fmt, is_3d_type_t is3d, tvin_trans_fmt_t trans_fmt); - int SaveBaseColorMode ( vpp_color_basemode_t basemode ); - int SetColorTemperature ( vpp_color_temperature_mode_t Tempmode, tv_source_input_type_t source_type, int is_save ); - vpp_color_temperature_mode_t GetColorTemperature ( tv_source_input_type_t source_type ); - int SetColorTempWithoutSave ( vpp_color_temperature_mode_t Tempmode, tv_source_input_type_t source_type ); - int SaveColorTemp ( vpp_color_temperature_mode_t Tempmode, tv_source_input_type_t source_type ); - int SetBrightness ( int value, tv_source_input_type_t source_type, tvin_sig_fmt_t sig_fmt, tvin_trans_fmt_t trans_fmt, is_3d_type_t is3d, int is_save ); - int GetBrightness ( tv_source_input_type_t source_type ); - int SetContrast ( int value, tv_source_input_type_t source_type, tvin_sig_fmt_t sig_fmt, tvin_trans_fmt_t trans_fmt, is_3d_type_t is3d, int is_save ); - int GetContrast ( tv_source_input_type_t source_type ); - int SetSaturation ( int value, tv_source_input_type_t source_type, tvin_sig_fmt_t sig_fmt, tvin_trans_fmt_t trans_fmt, is_3d_type_t is3d, int is_save ); - int GetSaturation ( tv_source_input_type_t source_type ); - int SetHue ( int value, tv_source_input_type_t source_type, tvin_sig_fmt_t sig_fmt, tvin_trans_fmt_t trans_fmt, is_3d_type_t is3d, int is_save ); - int GetHue ( tv_source_input_type_t source_type ); - int SetSharpness ( int value, tv_source_input_type_t source_type, int is_enable, is_3d_type_t is3d, tvin_sig_fmt_t sig_fmt, tvin_trans_fmt_t trans_fmt, int is_save ); - int GetSharpness ( tv_source_input_type_t source_type ); - int SetBacklight ( int value, tv_source_input_type_t source_type, int is_save ); - int GetBacklight ( tv_source_input_type_t source_type ); - int SetBacklightWithoutSave ( int value, tv_source_input_type_t source_type ); - int SaveBacklight ( int value, tv_source_input_type_t source_type ); - int SetPQMode ( vpp_picture_mode_t pq_mode, tv_source_input_type_t source_type, tvin_sig_fmt_t sig_fmt, tvin_trans_fmt_t trans_fmt, is_3d_type_t is3d, int is_save ); - vpp_picture_mode_t GetPQMode ( tv_source_input_type_t source_type ); - int SavePQMode ( vpp_picture_mode_t pq_mode, tv_source_input_type_t source_type ); - int SetDisplayMode ( vpp_display_mode_t display_mode, tv_source_input_type_t source_type, tvin_sig_fmt_t sig_fmt, int is_save ); - vpp_display_mode_t GetDisplayMode ( tv_source_input_type_t source_type ); - int SaveNoiseReductionMode ( vpp_noise_reduction_mode_t nr_mode, tv_source_input_type_t source_type ); - int SetNoiseReductionMode ( vpp_noise_reduction_mode_t nr_mode, tv_source_input_type_t source_type, tvin_sig_fmt_t sig_fmt, is_3d_type_t is3d, tvin_trans_fmt_t trans_fmt, int is_save ); - vpp_noise_reduction_mode_t GetNoiseReductionMode ( tv_source_input_type_t source_type ); - int SetDNLP ( 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 ); - int LoadVppSettings ( tv_source_input_type_t source_type, tvin_sig_fmt_t sig_fmt, is_3d_type_t is3d, tvin_trans_fmt_t trans_fmt ); - //int Tv_SetVppParamDefault(void); - - - int FactorySetPQMode_Brightness ( int source_type, int pq_mode, int brightness ); - int FactoryGetPQMode_Brightness ( int source_type, int pq_mode ); - int FactorySetPQMode_Contrast ( int source_type, int pq_mode, int contrast ); - int FactoryGetPQMode_Contrast ( int source_type, int pq_mode ); - int FactorySetPQMode_Saturation ( int source_type, int pq_mode, int saturation ); - int FactoryGetPQMode_Saturation ( int source_type, int pq_mode ); - int FactorySetPQMode_Hue ( int source_type, int pq_mode, int hue ); - int FactoryGetPQMode_Hue ( int source_type, int pq_mode ); - int FactorySetPQMode_Sharpness ( int source_type, int pq_mode, int sharpness ); - int FactoryGetPQMode_Sharpness ( int source_type, int pq_mode ); - int FactorySetColorTemp_Rgain ( int source_type, int colortemp_mode, int rgain ); - int FactorySaveColorTemp_Rgain ( int source_type, int colortemp_mode, int rgain ); - int FactoryGetColorTemp_Rgain ( int source_type, int colortemp_mode ); - int FactorySetColorTemp_Ggain ( int source_type, int colortemp_mode, int ggain ); - int FactorySaveColorTemp_Ggain ( int source_type, int colortemp_mode, int ggain ); - int FactoryGetColorTemp_Ggain ( int source_type, int colortemp_mode ); - int FactorySetColorTemp_Bgain ( int source_type, int colortemp_mode, int bgain ); - int FactorySaveColorTemp_Bgain ( int source_type, int colortemp_mode, int bgain ); - int FactoryGetColorTemp_Bgain ( int source_type, int colortemp_mode ); - int FactorySetColorTemp_Roffset ( int source_type, int colortemp_mode, int roffset ); - int FactorySaveColorTemp_Roffset ( int source_type, int colortemp_mode, int roffset ); - int FactoryGetColorTemp_Roffset ( int source_type, int colortemp_mode ); - int FactorySetColorTemp_Goffset ( int source_type, int colortemp_mode, int goffset ); - int FactorySaveColorTemp_Goffset ( int source_type, int colortemp_mode, int goffset ); - int FactoryGetColorTemp_Goffset ( int source_type, int colortemp_mode ); - int FactorySetColorTemp_Boffset ( int source_type, int colortemp_mode, int boffset ); - int FactorySaveColorTemp_Boffset ( int source_type, int colortemp_mode, int boffset ); - int FactoryGetColorTemp_Boffset ( int source_type, int colortemp_mode ); - //int Tv_FactorySaveRGBDatatoAllSrc ( int source_type, int colortemp_mode ); - int FactoryGetTestPattern ( void ); - int FactoryResetPQMode ( void ); - int FactoryResetColorTemp ( void ); - int FactorySetParamsDefault ( void ); - int FactorySetDDRSSC ( int step ); - int FactoryGetDDRSSC(); - int FactorySetLVDSSSC ( int step ); - int FactoryGetLVDSSSC(); - int SetLVDSSSC(int step); - int FactorySetNolineParams ( int type, int source_type, noline_params_t noline_params ); - noline_params_t FactoryGetNolineParams ( int type, int source_type ); - int FactorySetOverscan ( int source_type, int fmt, int status_3d, int trans_fmt, tvin_cutwin_t cutwin_t ); - tvin_cutwin_t FactoryGetOverscan ( int source_type, int fmt, is_3d_type_t is3d, int trans_fmt ); - int FactorySetBacklightPWM_Frequency(int freq); - int FactoryGetBacklightPWM_Frequency ( void ); - int FactorySetBacklight_Switch_status ( int status ); - int FactoryGetBacklight_Switch_status ( void ); - int FactorySetBacklightPWM_Duty ( int duty ); - int FactoryGetBacklightPWM_Duty ( void ); - int FactorySetLVDS_ColorDepth ( int depth ); - int FactoryGetLVDS_ColorDepth ( void ); - int FactorySetLVDS_ColorDither_status ( int status ); - int FactoryGetLVDS_ColorDither_status ( void ); - int FactorySetLVDS_Mapping_status ( int status ); - int FactoryGetLVDS_Mapping_status ( void ); - int FactorySetLVDS_PortSwap_status ( int status ); - int FactoryGetLVDS_PortSwap_status ( void ); - - int VPPSSMRestoreDefault(); - int VPPSSMFacRestoreDefault(); - - - int GetHistogram_AVE(); - int SetDnlp_OFF(); - int SetDnlp_ON ( void ); - int GetDnlp_Status(); - - int GetColorTemperatureParams ( vpp_color_temperature_mode_t Tempmode, tcon_rgb_ogo_t *params ); - int ReadColorTemperatureParams ( vpp_color_temperature_mode_t Tempmode, tcon_rgb_ogo_t *params ); - int SetColorTemperatureParams ( vpp_color_temperature_mode_t Tempmode, tcon_rgb_ogo_t params ); - int SaveColorTemperatureParams ( vpp_color_temperature_mode_t Tempmode, tcon_rgb_ogo_t params ); - unsigned short CalColorTemperatureParamsChecksum ( void ); - int SetColorTempParamsChecksum ( void ); - unsigned short GetColorTempParamsChecksum ( void ); - int CheckTempDataLable ( void ); - int SetTempDataLable ( void ); - int CheckColorTemperatureParams ( void ); - int RestoeColorTemperatureParamsFromDB ( tvin_port_t source_port , tvin_sig_fmt_t sig_fmt, tvin_trans_fmt_t trans_fmt ); - int CheckColorTemperatureParamAlldata ( tvin_port_t source_port , tvin_sig_fmt_t sig_fmt, tvin_trans_fmt_t trans_fmt ); - void Tvin_SetVideoScreenColorType ( int type ); - int Vpp_GetVppConfig(); - int Vpp_GetPQModeValue ( tv_source_input_type_t, vpp_picture_mode_t, vpp_pq_para_t * ); - int Vpp_SetPQParams ( tv_source_input_type_t source_type, vpp_picture_mode_t pq_mode, vpp_pq_para_t pq_para , tvin_port_t source_port , tvin_sig_fmt_t sig_fmt, is_3d_type_t is3d, tvin_trans_fmt_t trans_fmt); - - int Vpp_LoadGammaDefault ( tv_source_input_type_t, tvin_sig_fmt_t ); - int Vpp_LoadGammaSpecial ( int ); - int Vpp_LoadGamma ( tv_source_input_type_t, tvin_sig_fmt_t ); - int FactoryResetNonlinear(); - tvin_cutwin_t GetOverscan ( tv_source_input_type_t source_type, tvin_sig_fmt_t fmt, is_3d_type_t is3d, tvin_trans_fmt_t trans_fmt ); - static is_3d_type_t Check2Dor3D ( is_3d_type_t is3d, tvin_trans_fmt_t trans_fmt ); - //api - int VPP_SetVEBlackExtension ( const struct ve_bext_s *pBExt ); - int VPP_SetVideoCrop ( int Voffset0, int Hoffset0, int Voffset1, int Hoffset1 ); - int VPP_SetNonLinearFactor ( int value ); - int VPP_SetGrayPattern(int value); - int VPP_GetGrayPattern(); - int VPP_SplitScreenEffect(int width, int v_register); - int VPP_SetBackLight_Switch ( int value ); - int VPP_GetBackLight_Switch ( void ); - int VPP_SetScalerPathSel (const unsigned int value); - - static CVpp *getInstance(); -private: - // - int VPP_OpenModule ( void ); - int VPP_CloseModule ( void ); - int VPP_SetVideoBrightness ( int value ); - int VPP_SetVideoContrast ( int value ); - int VPP_SetVideoSaturationHue ( int satVal, int hueVal ); - int VPP_SetCMRegisterMap ( struct cm_regmap_s *pRegMap ); - int Vpp_LoadRegs ( am_regs_t regs ); - int VPP_SetRGBOGO ( const struct tcon_rgb_ogo_s *rgbogo ); - int VPP_GetRGBOGO ( const struct tcon_rgb_ogo_s *rgbogo ); - int VPP_SetGammaOnOff ( unsigned char onoff ); - int VPP_SetGammaTbl_R ( unsigned short red[256] ); - int VPP_SetGammaTbl_G ( unsigned short green[256] ); - int VPP_SetGammaTbl_B ( unsigned short blue[256] ); - void video_set_saturation_hue ( signed char saturation, signed char hue, signed long *mab ); - void video_get_saturation_hue ( signed char *sat, signed char *hue, signed long *mab ); - int VPP_SetBackLightLevel ( int value ); - int VPP_SetVEDNLP ( const struct ve_dnlp_s *pDNLP ); - int VPP_SetVENewDNLP ( const ve_dnlp_table_t *pDNLP ); - int Vpp_GetAVGHistogram ( struct ve_hist_s *hist ); - int Vpp_SetDnlpOff ( void ); - int Vpp_SetDnlpOn ( void ); - int VPP_SetVESharpness ( const ve_hsvs_s * ); - int VPP_SetVEChromaCoring ( const ve_ccor_s * ); - int VPP_SetVEBlueEnh ( const ve_benh_s * ); - int VPP_SetVEDemo ( const ve_demo_s * ); - int VPP_SetVERegisterMap ( const ve_regmap_s * ); - int VPP_SetVEDebug ( const long long unsigned int * ); - int VPP_SetCMRegion ( const cm_region_s * ); - int VPP_SetCMTopLayer ( const cm_top_s * ); - int VPP_SetCMDemo ( const cm_demo_s * ); - - int VPP_DeviceIOCtl ( int request, ... ); - int VPP3D_DeviceIOCtl ( int, ... ); - int VPP_SetCMDebug ( const long long unsigned int * ); - int VPP_SetAVSyncEnable ( unsigned int ); - int VPP_SetVideoNoiseReduction ( int ); - int VPP_SetVideoSaturation ( int ); - int VPP_SetVideoHue ( int ); - int VPP_SetDeinterlaceMode ( int ); - - int isPreviewWindow(); - - static CVpp *mInstance; - tv_source_input_type_t vpp_setting_last_source_type; - tvin_sig_fmt_t vpp_setting_last_sig_fmt; - tvin_trans_fmt_t vpp_setting_last_trans_fmt; - //cfg - bool mbVppCfg_backlight_reverse; - bool mbVppCfg_backlight_init; - bool mbVppCfg_pqmode_without_hue; - bool mbVppCfg_hue_reverse; - bool mbVppCfg_gamma_onoff; - bool mbVppCfg_whitebalance_sameparam; - bool mbVppCfg_new_cm; - bool mbVppCfg_new_nr; - bool mbVppCfg_panorama_switch; - bool mbVppCfg_pqmode_depend_bklight; - bool mbVppCfg_colortemp_by_source; - - CPqData *mpPqData; - - int vpp_amvideo_fd; - int vpp_amvideo_3d_fd; -}; -#endif diff --git a/tvapi/libtv/vpp/pqdata.cpp b/tvapi/libtv/vpp/pqdata.cpp deleted file mode 100644 index a005245..0000000 --- a/tvapi/libtv/vpp/pqdata.cpp +++ b/dev/null @@ -1,143 +0,0 @@ -#include "pqdata.h" - -//vpp -unsigned long DemoColorYOffRegMap[CM_REG_NUM] = { - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x80ff807f, 0x00800800, 0x00001000, 0x1077f010, - 0xf077ff10, 0x7777ff10, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x80700124, 0x00000000, -}; -//vpp -unsigned long DemoColorCOffRegMap[CM_REG_NUM] = { - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x80ff807f, 0x00802800, - 0x00001000, 0x1077f010, 0xf077ff10, 0x7777ff10, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x80700124, 0x00000000, -}; - -unsigned long DemoColorGOffRegMap[CM_REG_NUM] = { - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x80ff807f, 0x00801800, 0x00001000, - 0x1077f010, 0xf077ff10, 0x7777ff10, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x80700124, 0x00000000, -}; - -unsigned long DemoColorMOffRegMap[CM_REG_NUM] = { - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x80ff807f, 0x00804800, 0x00001000, 0x1077f010, 0xf077ff10, - 0x7777ff10, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x80700124, 0x00000000, -}; - -unsigned long DemoColorROffRegMap[CM_REG_NUM] = { - 0x80ff807f, 0x00805800, 0x00001000, 0x1077f010, 0xf077ff10, - 0x7777ff10, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x80700124, 0x00000000, -}; - -unsigned long DemoColorBOffRegMap[CM_REG_NUM] = { - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x80ff807f, - 0x00803800, 0x00001000, 0x1077f010, 0xf077ff10, 0x7777ff10, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x80700124, 0x00000000 -}; - -unsigned long DemoColorRGBOffRegMap[CM_REG_NUM] = { - 0x80ff807f, 0x00805800, 0x00001000, 0x1077f010, 0xf077ff10, - 0x7777ff10, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x80ff807f, 0x00801800, 0x00001000, - 0x1077f010, 0xf077ff10, 0x7777ff10, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x80ff807f, - 0x00803800, 0x00001000, 0x1077f010, 0xf077ff10, 0x7777ff10, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x80700124, 0x00000000, -}; - -unsigned long DemoColorYMCOffRegMap[CM_REG_NUM] = { - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x80ff807f, 0x00800800, 0x00001000, 0x1077f010, - 0xf077ff10, 0x7777ff10, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x80ff807f, 0x00802800, - 0x00001000, 0x1077f010, 0xf077ff10, 0x7777ff10, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x80ff807f, 0x00804800, 0x00001000, 0x1077f010, 0xf077ff10, - 0x7777ff10, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x80700124, 0x00000000, -}; - -unsigned long DemoColorALLOffRegMap[CM_REG_NUM] = { - 0x81ff8080, 0x00805800, 0x00001000, 0x0077ff00, 0xff77ff00, - 0x7777ff00, 0x80ff8080, 0x00800800, 0x00001000, 0x0077ff00, - 0xff77ff00, 0x7777ff00, 0x80ff8080, 0x00a01800, 0x00000ccd, - 0x0077ff00, 0xff77ff00, 0x7777ff00, 0x80ff8080, 0x00ff2800, - 0x00000800, 0x0077ff00, 0xff77ff00, 0x7777ff00, 0x80ff8080, - 0x00ff3c00, 0x00000800, 0x0077ff00, 0xff77ff00, 0x7777ff00, - 0x80ff8080, 0x00ff4c00, 0x00000800, 0x0077ff00, 0x00000000, - 0x7777ff00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0xff77ff00, 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x80700124, 0x00000000, -}; - -unsigned long DemoColorSplit4_3RegMap[CM_REG_NUM] = { - 0x8A58821E, 0x00525911, 0x000018FA, 0x1033E010, 0xE033F50A, 0x3333E010, - 0x8A3F8A14, 0x002803BB, 0x00003333, 0x1033E010, 0xE033F50A, 0x3333E010, - 0x8A6C8A24, 0x00130911, 0x00006BCA, 0x1033E010, 0xE033F50A, 0x3333E010, - 0x8AA48A50, 0x00440BBB, 0x00001E1E, 0x1033E010, 0xE033F50A, 0x3333E010, - 0x8ACC8221, 0x00AA1488, 0x00000C0C, 0x1033E010, 0xE033F50A, 0x3333E010, - 0x8AF48A24, 0x00632A22, 0x000014B0, 0x1033E010, 0xE033F50A, 0x3333E010, - 0x8AFF8A4C, 0x008536EE, 0x00000F66, 0x1033E010, 0xE033F50A, 0x3333E010, - 0x8AC68244, 0x00854800, 0x00000F66, 0x1033E010, 0xE033F50A, 0x3333E010, - 0x8492D024, 0x81000000 -}; - -unsigned long DemoColorSplitRegMap[CM_REG_NUM] = { - 0x8A58821E, 0x00525911, 0x000018FA, 0x1033E010, 0xE033F50A, 0x3333E010, - 0x8A3F8A14, 0x002803BB, 0x00003333, 0x1033E010, 0xE033F50A, 0x3333E010, - 0x8A6C8A24, 0x00130911, 0x00006BCA, 0x1033E010, 0xE033F50A, 0x3333E010, - 0x8AA48A50, 0x00440BBB, 0x00001E1E, 0x1033E010, 0xE033F50A, 0x3333E010, - 0x8ACC8221, 0x00AA1488, 0x00000C0C, 0x1033E010, 0xE033F50A, 0x3333E010, - 0x8AF48A24, 0x00632A22, 0x000014B0, 0x1033E010, 0xE033F50A, 0x3333E010, - 0x8AFF8A4C, 0x008536EE, 0x00000F66, 0x1033E010, 0xE033F50A, 0x3333E010, - 0x8AC68244, 0x00854800, 0x00000F66, 0x1033E010, 0xE033F50A, 0x3333E010, - 0x8493C024, 0x81000000 -}; diff --git a/tvapi/libtv/vpp/pqdata.h b/tvapi/libtv/vpp/pqdata.h deleted file mode 100644 index 0821ae7..0000000 --- a/tvapi/libtv/vpp/pqdata.h +++ b/dev/null @@ -1,30 +0,0 @@ -#ifndef _PQDATA_H_ -#define _PQDATA_H_ - - -#define CM_REG_NUM 50 -#define PQ_TOTAL_STEP 101 -#define GAMMA_TABLE_NUM 256 - -extern unsigned long DemoColorYOffRegMap[CM_REG_NUM]; - -extern unsigned long DemoColorCOffRegMap[CM_REG_NUM]; - -extern unsigned long DemoColorGOffRegMap[CM_REG_NUM]; - -extern unsigned long DemoColorMOffRegMap[CM_REG_NUM]; - -extern unsigned long DemoColorROffRegMap[CM_REG_NUM]; - -extern unsigned long DemoColorBOffRegMap[CM_REG_NUM]; - -extern unsigned long DemoColorRGBOffRegMap[CM_REG_NUM]; - -extern unsigned long DemoColorYMCOffRegMap[CM_REG_NUM]; - -extern unsigned long DemoColorALLOffRegMap[CM_REG_NUM]; - -extern unsigned long DemoColorSplit4_3RegMap[CM_REG_NUM]; - -extern unsigned long DemoColorSplitRegMap[CM_REG_NUM]; -#endif diff --git a/tvapi/tvtests/Android.mk b/tvapi/tvtests/Android.mk deleted file mode 100644 index c1a791d..0000000 --- a/tvapi/tvtests/Android.mk +++ b/dev/null @@ -1,49 +0,0 @@ -LOCAL_PATH:= $(call my-dir) -include $(CLEAR_VARS) - -LOCAL_SRC_FILES:= \ - android_tvtest.cpp - -LOCAL_SHARED_LIBRARIES := \ - libcutils \ - libutils \ - libbinder \ - libtvbinder \ - libnativehelper \ - libandroid_runtime \ - liblog - -LOCAL_C_INCLUDES += \ - bionic/libc/include \ - $(LOCAL_PATH)/../ \ - $(LOCAL_PATH)/../android - -LOCAL_MODULE:= tvtest - -include $(BUILD_EXECUTABLE) - - -include $(CLEAR_VARS) - -LOCAL_SRC_FILES:= \ - comm_test.cpp - -LOCAL_SHARED_LIBRARIES := \ - libcutils \ - libutils \ - libbinder \ - libtvbinder \ - libnativehelper \ - libandroid_runtime \ - liblog \ - libtv - -LOCAL_C_INCLUDES += \ - bionic/libc/include \ - $(LOCAL_PATH)/../ \ - $(LOCAL_PATH)/../libtv\ - $(LOCAL_PATH)/../android - -LOCAL_MODULE:= comm_test - -include $(BUILD_EXECUTABLE) diff --git a/tvapi/tvtests/android_tvtest.cpp b/tvapi/tvtests/android_tvtest.cpp deleted file mode 100644 index c22a663..0000000 --- a/tvapi/tvtests/android_tvtest.cpp +++ b/dev/null @@ -1,32 +0,0 @@ -#define LOG_TAG "Tv-JNI" - -#include <utils/Log.h> -#include <include/TvClient.h> -#include <binder/IMemory.h> -#include <binder/Parcel.h> - -using namespace android; - -void usage(char *processname) -{ - fprintf(stderr, "Usage: %s <cmd num> [arg1]... [argn]\n", processname); - return; -} - - -int main(int argc, char **argv) -{ - if (argc < 2) - usage(argv[0]); - sp<TvClient> tv = TvClient::connect(); - int cmd = atoi(argv[1]); - int arg1 = atoi(argv[2]); - //send cmd - Parcel p, r; - p.writeInt32(cmd); - p.writeInt32(arg1); - tv->processCmd(p, &r); - //exit - tv.clear(); - return 0; -} diff --git a/tvapi/tvtests/comm_test.cpp b/tvapi/tvtests/comm_test.cpp deleted file mode 100644 index 0fac8ab..0000000 --- a/tvapi/tvtests/comm_test.cpp +++ b/dev/null @@ -1,33 +0,0 @@ -#include <tv/CFbcCommunication.h> -#include "tv/CTvLog.h" - -void usage(char *processname) -{ - fprintf(stderr, "Usage: %s <cmd num> [arg1]... [argn]\n", processname); - return; -} - - -int main(int argc __unused, char **argv __unused) -{ - int cmd, go = 1; - LOGD("---------------0------------------------"); - CFbcCommunication fbc; - LOGD("---------------1-------------------------"); - fbc.run(); - LOGD("------------------2----------------------"); - - while (go) { - scanf("%d", &cmd); - switch (cmd) { - case 1: - go = 0; - fbc.closeAll(); - break; - case 2: - break; - default: - break; - } - } -} diff --git a/tvapi/tvtests/ssm_test.cpp b/tvapi/tvtests/ssm_test.cpp deleted file mode 100644 index 5ed4110..0000000 --- a/tvapi/tvtests/ssm_test.cpp +++ b/dev/null @@ -1,210 +0,0 @@ -#include <stdio.h> -#include <unistd.h> -#include <string.h> -#include <fcntl.h> -#include <errno.h> -#include <android/log.h> - -#include "ssm_api.h" - -#define LOG_TAG "ssm_test" -#include "CTvLog.h" - -// The follow is R/W test struct declare. -// The size of it is 11 when it aligned with 1 Byte -// and is 16 when it aligned with 4 Bytes. -// You should use the 1 Byte aligned mode when R/W ssm by using struct. - -#if 1 // memory aligned with 1 Bytes -typedef struct tagS_TEST_STRUCT { - char tmp_ch0; - char tmp_ch1; - int tmp_val0; - unsigned char tmp_ch2; - unsigned char tmp_ch3; - unsigned char tmp_ch4; - short tmp_short0; -} __attribute__((packed)) S_TEST_STRUCT; -#else // memory aligned with 4 Bytes -typedef struct tagS_TEST_STRUCT { - char tmp_ch0; - char tmp_ch1; - int tmp_val0; - unsigned char tmp_ch2; - unsigned char tmp_ch3; - unsigned char tmp_ch4; - short tmp_short0; -} S_TEST_STRUCT; -#endif - -static void TestRWOneByte(int tmp_rw_offset, int tmp_w_val, unsigned char tmp_w_ch); -static void TestRWNBytes(int tmp_rw_offset); -static void TestRWOneStruct(int tmp_rw_offset); - -int main() -{ - TestRWOneByte(0, 1, -1); - TestRWOneByte(1, 2, -2); - TestRWOneByte(30, 3, -3); - TestRWOneByte(31, -1, 1); - TestRWOneByte(32, -2, 2); - TestRWOneByte(33, -3, 3); - - TestRWNBytes(31); - - TestRWOneStruct(0); -} - -static void TestRWOneByte(int tmp_rw_offset, int tmp_w_val, unsigned char tmp_w_ch) -{ - int tmp_r_val = 0; - unsigned char tmp_r_ch = 0; - - LOGD("\n\n"); - LOGD("**************Test R/W One Byte **************\n\n"); - - LOGD("tmp_rw_offset = %d.\n", tmp_rw_offset); - - SSMWriteOneByte(tmp_rw_offset, tmp_w_ch); - SSMReadOneByte(tmp_rw_offset, &tmp_r_ch); - LOGD("tmp_w_ch = %d, tmp_r_ch = %d.\n", tmp_w_ch, tmp_r_ch); - - SSMWriteOneByte(tmp_rw_offset, tmp_w_val); - SSMReadOneByte(tmp_rw_offset, &tmp_r_val); - LOGD("tmp_w_val = %d, tmp_r_val = %d.\n", tmp_w_val, tmp_r_val); -} - -static void TestRWNBytes(int tmp_rw_offset) -{ - int i = 0, tmp_op_buf_size = 0; - int device_size = 0, tmp_w_page_size = 0, tmp_r_page_size = 0; - int *tmp_op_int_w_buf = NULL, *tmp_op_int_r_buf = NULL; - unsigned char *tmp_op_char_w_buf = NULL, *tmp_op_char_r_buf = NULL; - - LOGD("\n\n"); - LOGD("**************Test R/W N Bytes **************\n\n"); - - SSMGetDeviceTotalSize(&device_size); - SSMGetDeviceWritePageSize(&tmp_w_page_size); - SSMGetDeviceReadPageSize(&tmp_r_page_size); - - if (tmp_w_page_size < tmp_r_page_size) { - tmp_op_buf_size = tmp_w_page_size * 2 / 3; - } else if (tmp_r_page_size < tmp_w_page_size) { - tmp_op_buf_size = tmp_r_page_size * 2 / 3; - } else { - tmp_op_buf_size = tmp_w_page_size; - } - - if (tmp_op_buf_size > device_size) { - tmp_op_buf_size = device_size; - } - - if (tmp_op_buf_size > 0) { - LOGD("tmp_rw_offset = %d.\n", tmp_rw_offset); - - tmp_op_char_w_buf = new unsigned char[tmp_op_buf_size]; - if (tmp_op_char_w_buf != NULL) { - tmp_op_char_r_buf = new unsigned char[tmp_op_buf_size]; - if (tmp_op_char_r_buf != NULL) { - for (i = 0; i < tmp_op_buf_size; i++) { - tmp_op_char_w_buf[i] = (tmp_op_buf_size / 2) - i; - LOGD("tmp_op_char_w_buf[%d] = %d\n", i, tmp_op_char_w_buf[i]); - } - SSMWriteNTypes(tmp_rw_offset, tmp_op_buf_size, tmp_op_char_w_buf); - - for (i = 0; i < tmp_op_buf_size; i++) { - tmp_op_char_r_buf[i] = 0; - } - SSMReadNTypes(tmp_rw_offset, tmp_op_buf_size, tmp_op_char_r_buf); - - for (i = 0; i < tmp_op_buf_size; i++) { - LOGD("tmp_op_char_r_buf[%d] = %d\n", i, tmp_op_char_r_buf[i]); - } - - delete tmp_op_char_r_buf; - tmp_op_char_r_buf = NULL; - } - - delete tmp_op_char_w_buf; - tmp_op_char_w_buf = NULL; - } - - tmp_op_int_w_buf = new int[tmp_op_buf_size]; - if (tmp_op_int_w_buf != NULL) { - tmp_op_int_r_buf = new int[tmp_op_buf_size]; - if (tmp_op_int_r_buf != NULL) { - for (i = 0; i < tmp_op_buf_size; i++) { - tmp_op_int_w_buf[i] = (tmp_op_buf_size / 2) - i; - LOGD("tmp_op_int_w_buf[%d] = %d\n", i, tmp_op_int_w_buf[i]); - } - SSMWriteNTypes(tmp_rw_offset, tmp_op_buf_size, tmp_op_int_w_buf); - - for (i = 0; i < tmp_op_buf_size; i++) { - tmp_op_int_r_buf[i] = 0; - } - SSMReadNTypes(tmp_rw_offset, tmp_op_buf_size, tmp_op_int_r_buf); - - for (i = 0; i < tmp_op_buf_size; i++) { - LOGD("tmp_op_int_r_buf[%d] = %d\n", i, tmp_op_int_r_buf[i]); - } - - delete tmp_op_int_r_buf; - tmp_op_int_r_buf = NULL; - } - - delete tmp_op_int_w_buf; - tmp_op_int_w_buf = NULL; - } - } -} - -static void TestRWOneStruct(int tmp_rw_offset) -{ - S_TEST_STRUCT TestWriteStruct, TestReadStruct; - - LOGD("\n\n"); - LOGD("**************Test R/W One Struct **************\n\n"); - - LOGD("tmp_rw_offset = %d.\n", tmp_rw_offset); - - TestWriteStruct.tmp_ch0 = -9; - TestWriteStruct.tmp_ch1 = -8; - TestWriteStruct.tmp_val0 = 9; - TestWriteStruct.tmp_ch2 = 255; - TestWriteStruct.tmp_ch3 = 254; - TestWriteStruct.tmp_ch4 = 250; - TestWriteStruct.tmp_short0 = -9; - - SSMWriteNTypes(tmp_rw_offset, sizeof(S_TEST_STRUCT), (unsigned char *) &TestWriteStruct); - - LOGD("\n\n"); - LOGD("write struct length = %d.\n", sizeof(S_TEST_STRUCT)); - LOGD("TestWriteStruct.tmp_ch0 = %d.\n", TestWriteStruct.tmp_ch0); - LOGD("TestWriteStruct.tmp_ch1 = %d.\n", TestWriteStruct.tmp_ch1); - LOGD("TestWriteStruct.tmp_val0 = %d.\n", TestWriteStruct.tmp_val0); - LOGD("TestWriteStruct.tmp_ch2 = %d.\n", TestWriteStruct.tmp_ch2); - LOGD("TestWriteStruct.tmp_ch3 = %d.\n", TestWriteStruct.tmp_ch3); - LOGD("TestWriteStruct.tmp_ch4 = %d.\n", TestWriteStruct.tmp_ch4); - LOGD("TestWriteStruct.tmp_short0 = %d.\n", TestWriteStruct.tmp_short0); - - TestReadStruct.tmp_ch0 = 0; - TestReadStruct.tmp_ch1 = 0; - TestReadStruct.tmp_val0 = 0; - TestReadStruct.tmp_ch2 = 0; - TestReadStruct.tmp_ch3 = 0; - TestWriteStruct.tmp_ch4 = 0; - TestWriteStruct.tmp_short0 = 0; - - SSMReadNTypes(tmp_rw_offset, sizeof(S_TEST_STRUCT), (unsigned char *) &TestReadStruct); - - LOGD("\n\n"); - LOGD("read struct length = %d.\n", sizeof(S_TEST_STRUCT)); - LOGD("TestReadStruct.tmp_ch0 = %d.\n", TestReadStruct.tmp_ch0); - LOGD("TestReadStruct.tmp_ch1 = %d.\n", TestReadStruct.tmp_ch1); - LOGD("TestReadStruct.tmp_val0 = %d.\n", TestReadStruct.tmp_val0); - LOGD("TestReadStruct.tmp_ch2 = %d.\n", TestReadStruct.tmp_ch2); - LOGD("TestReadStruct.tmp_ch3 = %d.\n", TestReadStruct.tmp_ch3); - LOGD("TestReadStruct.tmp_ch4 = %d.\n", TestReadStruct.tmp_ch4); - LOGD("TestReadStruct.tmp_short0 = %d.\n", TestReadStruct.tmp_short0); -} diff --git a/tvapi/tvtests/tvconfig_test.cpp b/tvapi/tvtests/tvconfig_test.cpp deleted file mode 100644 index ea90dd7..0000000 --- a/tvapi/tvtests/tvconfig_test.cpp +++ b/dev/null @@ -1,427 +0,0 @@ -#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_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; -} |