summaryrefslogtreecommitdiff
Diffstat
-rw-r--r--Android.mk14
-rw-r--r--screen_source/Android.mk31
-rw-r--r--screen_source/aml_screen.cpp296
-rw-r--r--screen_source/v4l2_vdin.cpp676
-rw-r--r--screen_source/v4l2_vdin.h144
-rw-r--r--tv_callback.h18
-rw-r--r--tv_input.cpp263
-rw-r--r--tvapi/android/Android.mk2
-rw-r--r--tvapi/android/include/ITv.h98
-rw-r--r--tvapi/android/include/ITvClient.h56
-rw-r--r--tvapi/android/include/ITvService.h66
-rw-r--r--tvapi/android/include/Tv.h158
-rw-r--r--tvapi/android/include/tvcmd.h1212
-rw-r--r--tvapi/android/jni/Android.mk135
-rw-r--r--tvapi/android/jni/cfbc_jni.cpp18
-rw-r--r--tvapi/android/jni/cfbc_test.cpp86
-rw-r--r--tvapi/android/jni/com_droidlogic_app_tv_TvControlManager.cpp (renamed from tvapi/android/jni/android_amlogic_tv.cpp)929
-rw-r--r--tvapi/android/libtvbinder/Android.mk48
-rw-r--r--tvapi/android/libtvbinder/ITv.cpp292
-rw-r--r--tvapi/android/libtvbinder/ITvClient.cpp116
-rw-r--r--tvapi/android/libtvbinder/ITvService.cpp100
-rw-r--r--tvapi/android/libtvbinder/Tv.cpp378
-rw-r--r--tvapi/android/tv/Android.mk23
-rw-r--r--tvapi/android/tv/CTv.cpp104
-rw-r--r--tvapi/android/tv/CTv.h54
-rw-r--r--tvapi/android/tvserver/Android.mk164
-rw-r--r--tvapi/android/tvserver/TvService.cpp8911
-rw-r--r--tvapi/android/tvserver/TvService.h170
-rw-r--r--tvapi/android/tvserver/main.cpp46
-rw-r--r--tvapi/android/tvserver/tv_callback.h18
-rw-r--r--[-rwxr-xr-x]tvapi/build/include/.gitignore0
-rw-r--r--tvapi/build/include/xxxconfig.h1
-rw-r--r--tvapi/docs/tv.uml12156
-rw-r--r--tvapi/libtv/Android.mk12
-rw-r--r--tvapi/libtv/audio/CAudioCustomerCtrl.cpp126
-rw-r--r--tvapi/libtv/audio/CAudioCustomerCtrl.h31
-rw-r--r--tvapi/libtv/audio/CTvAudio.cpp30
-rw-r--r--tvapi/libtv/audio/CTvAudio.h76
-rw-r--r--tvapi/libtv/audio/audio_alsa.cpp2073
-rw-r--r--tvapi/libtv/audio/audio_alsa.h257
-rw-r--r--tvapi/libtv/audio/audio_android.cpp1035
-rw-r--r--tvapi/libtv/audio/audio_android.h78
-rw-r--r--tvapi/libtv/audio/audio_android_effect.cpp591
-rw-r--r--tvapi/libtv/audio/audio_android_effect.h65
-rw-r--r--tvapi/libtv/audio/audio_api.cpp2470
-rw-r--r--tvapi/libtv/audio/audio_api.h323
-rw-r--r--tvapi/libtv/audio/audio_effect.cpp356
-rw-r--r--tvapi/libtv/audio/audio_effect.h58
-rw-r--r--tvapi/libtv/include/amstream.h526
-rw-r--r--tvapi/libtv/include/amvecm.h136
-rw-r--r--tvapi/libtv/include/cm.h308
-rw-r--r--tvapi/libtv/include/hdmirx_cec.h316
-rw-r--r--tvapi/libtv/include/ve.h461
-rw-r--r--tvapi/libtv/tv/AutoBackLight.cpp425
-rw-r--r--tvapi/libtv/tv/CAutoPQparam.cpp150
-rw-r--r--tvapi/libtv/tv/CAutoPQparam.h41
-rw-r--r--tvapi/libtv/tv/CAv.cpp116
-rw-r--r--tvapi/libtv/tv/CAv.h24
-rw-r--r--tvapi/libtv/tv/CFbcCommunication.cpp443
-rw-r--r--tvapi/libtv/tv/CFbcCommunication.h25
-rw-r--r--tvapi/libtv/tv/CFrontEnd.cpp198
-rw-r--r--tvapi/libtv/tv/CFrontEnd.h19
-rw-r--r--tvapi/libtv/tv/CTv.cpp13003
-rw-r--r--tvapi/libtv/tv/CTv.h1453
-rw-r--r--tvapi/libtv/tv/CTvBooking.cpp324
-rw-r--r--tvapi/libtv/tv/CTvBooking.h166
-rw-r--r--tvapi/libtv/tv/CTvEpg.cpp24
-rw-r--r--tvapi/libtv/tv/CTvEv.h12
-rw-r--r--tvapi/libtv/tv/CTvLog.h8
-rw-r--r--tvapi/libtv/tv/CTvRecord.cpp552
-rw-r--r--tvapi/libtv/tv/CTvRecord.h92
-rw-r--r--tvapi/libtv/tv/CTvSatellite.h42
-rw-r--r--tvapi/libtv/tv/CTvScanner.cpp335
-rw-r--r--tvapi/libtv/tv/CTvScanner.h26
-rw-r--r--tvapi/libtv/tv/CTvScreenCapture.cpp1279
-rw-r--r--tvapi/libtv/tv/CTvScreenCapture.h351
-rw-r--r--tvapi/libtv/tv/CTvSubtitle.cpp361
-rw-r--r--tvapi/libtv/tv/CTvSubtitle.h484
-rw-r--r--tvapi/libtv/tv/CTvVchipCheck.cpp6
-rw-r--r--tvapi/libtv/tv/CUpgradeFBC.cpp4
-rw-r--r--tvapi/libtv/tv/CUpgradeFBC.h282
-rw-r--r--tvapi/libtv/tv/ScreenCatch.cpp379
-rw-r--r--tvapi/libtv/tvconfig/CIniFile.cpp706
-rw-r--r--tvapi/libtv/tvconfig/tvconfig.conf58
-rw-r--r--tvapi/libtv/tvconfig/tvconfig.cpp106
-rw-r--r--tvapi/libtv/tvconfig/tvconfig.h40
-rw-r--r--tvapi/libtv/tvdb/CTvChannel.cpp694
-rw-r--r--tvapi/libtv/tvdb/CTvChannel.h574
-rw-r--r--tvapi/libtv/tvdb/CTvDatabase.cpp25
-rw-r--r--tvapi/libtv/tvdb/CTvDatabase.h188
-rw-r--r--tvapi/libtv/tvdb/CTvDimension.cpp86
-rw-r--r--tvapi/libtv/tvdb/CTvDimension.h194
-rw-r--r--tvapi/libtv/tvdb/CTvEvent.cpp483
-rw-r--r--tvapi/libtv/tvdb/CTvEvent.h170
-rw-r--r--tvapi/libtv/tvdb/CTvGroup.cpp88
-rw-r--r--tvapi/libtv/tvdb/CTvGroup.h60
-rw-r--r--tvapi/libtv/tvdb/CTvProgram.cpp1806
-rw-r--r--tvapi/libtv/tvdb/CTvProgram.h1066
-rw-r--r--tvapi/libtv/tvdb/CTvRegion.cpp366
-rw-r--r--tvapi/libtv/tvdb/CTvRegion.h84
-rw-r--r--tvapi/libtv/tvin/CHDMIRxCEC.cpp38
-rw-r--r--tvapi/libtv/tvin/CSourceConnectDetect.cpp478
-rw-r--r--tvapi/libtv/tvin/CSourceConnectDetect.h73
-rw-r--r--tvapi/libtv/tvin/CTvin.cpp203
-rw-r--r--tvapi/libtv/tvin/CTvin.h191
-rw-r--r--tvapi/libtv/tvsetting/CBlobDevice.cpp54
-rw-r--r--tvapi/libtv/tvsetting/CBlobDevice.h100
-rw-r--r--tvapi/libtv/tvsetting/CBlobDeviceE2prom.cpp403
-rw-r--r--tvapi/libtv/tvsetting/CBlobDeviceE2prom.h152
-rw-r--r--tvapi/libtv/tvsetting/CBlobDeviceFile.cpp160
-rw-r--r--tvapi/libtv/tvsetting/CBlobDeviceFile.h52
-rw-r--r--tvapi/libtv/tvsetting/CBlobDeviceRam.cpp258
-rw-r--r--tvapi/libtv/tvsetting/CBlobDeviceRam.h74
-rw-r--r--tvapi/libtv/tvsetting/CTvSetting.cpp4658
-rw-r--r--tvapi/libtv/tvsetting/CTvSetting.h30
-rw-r--r--tvapi/libtv/tvsetting/CTvSettingCfg.h782
-rw-r--r--tvapi/libtv/tvsetting/CTvSettingDeviceFactory.cpp10
-rw-r--r--tvapi/libtv/tvsetting/TvKeyData.cpp2726
-rw-r--r--tvapi/libtv/tvsetting/TvKeyData.h64
-rw-r--r--tvapi/libtv/tvsetting/audio_cfg.cpp2575
-rw-r--r--tvapi/libtv/tvsetting/audio_cfg.h239
-rw-r--r--tvapi/libtv/tvutils/CCondition.h2
-rw-r--r--tvapi/libtv/tvutils/CFile.cpp65
-rw-r--r--tvapi/libtv/tvutils/CFile.h3
-rw-r--r--tvapi/libtv/tvutils/CHdmiCecCmd.cpp2
-rw-r--r--tvapi/libtv/tvutils/CMsgQueue.cpp31
-rw-r--r--tvapi/libtv/tvutils/CMsgQueue.h3
-rw-r--r--tvapi/libtv/tvutils/CSerialCommunication.h96
-rw-r--r--tvapi/libtv/tvutils/CSerialPort.cpp18
-rw-r--r--tvapi/libtv/tvutils/CSqlite.cpp8
-rw-r--r--tvapi/libtv/tvutils/CSqlite.h12
-rw-r--r--tvapi/libtv/tvutils/CThread.cpp2
-rw-r--r--tvapi/libtv/tvutils/CTvInput.cpp25
-rw-r--r--tvapi/libtv/tvutils/CTvInput.h4
-rw-r--r--tvapi/libtv/tvutils/serial_base.h34
-rw-r--r--tvapi/libtv/tvutils/serial_operate.cpp66
-rw-r--r--tvapi/libtv/tvutils/serial_operate.h70
-rw-r--r--tvapi/libtv/tvutils/tvutils.cpp3931
-rw-r--r--tvapi/libtv/tvutils/tvutils.h222
-rw-r--r--tvapi/libtv/tvutils/zepoll.cpp2
-rw-r--r--tvapi/libtv/version/version.cpp188
-rw-r--r--tvapi/libtv/version/version.h22
-rw-r--r--tvapi/libtv/vpp/CPQdb.cpp3509
-rw-r--r--tvapi/libtv/vpp/CPQdb.h340
-rw-r--r--tvapi/libtv/vpp/CVpp.cpp5602
-rw-r--r--tvapi/libtv/vpp/CVpp.h230
-rw-r--r--tvapi/tvtests/Android.mk98
-rw-r--r--tvapi/tvtests/android_tvtest.cpp2
-rw-r--r--tvapi/tvtests/comm_test.cpp4
-rw-r--r--tvapi/tvtests/ssm_test.cpp420
-rw-r--r--tvapi/tvtests/tvconfig_test.cpp854
151 files changed, 45277 insertions, 47437 deletions
diff --git a/tvapi/libtv/tvin/CSourceConnectDetect.cpp b/tvapi/libtv/tvin/CSourceConnectDetect.cpp
index ad44ad1..4399473 100644
--- a/tvapi/libtv/tvin/CSourceConnectDetect.cpp
+++ b/tvapi/libtv/tvin/CSourceConnectDetect.cpp
@@ -12,179 +12,161 @@
#include "../tvutils/tvutils.h"
#include "../tvconfig/tvconfig.h"
+#include "CSourceConnectDetect.h"
#ifdef LOG_TAG
#undef LOG_TAG
#define LOG_TAG "CSourceConnectDetect"
#endif
-#define CC_DETECT_SOURCE_AV2 (0)
-
-#define CC_DEBUG_AV_SAMPLE_BUF (1)
-
-#define CC_AV_PLUG_OUT_ADC_DEF_THRESHOLD (28) // voltage / 1800 * 1023
-#define CC_AV_PLUG_IN_ADC_DEF_THRESHOLD (70) // voltage / 1800 * 1023
-
-CTvin::CSourceConnectDetect::CSourceConnectDetect(CTvin *pTvin)
+CSourceConnectDetect::CSourceConnectDetect(CTvin *pTvin)
{
- for (int i = 0; i < SOURCE_MAX; i++) {
- mSourceDetectTable[i] = SOURCE_INVALID;
- mSourceDetectPreStatusBuf[i] = CC_SOURCE_PLUG_OUT;
- mSourceDetectCurStatusBuf[i] = CC_SOURCE_PLUG_OUT;
- }
-
- for (int i = 0; i < CC_AV_DETECT_SAMPLE_DATA_MAX_LEN; i++) {
- mAV1SampleDataBuf[i] = 0;
- mAV2SampleDataBuf[i] = 0;
- }
-
-#if CC_DETECT_SOURCE_AV2 == 1
- mSourceDetectTable[0] = SOURCE_AV1;
- mSourceDetectTable[1] = SOURCE_AV2;
- mSourceDetectTable[2] = SOURCE_HDMI1;
- mSourceDetectTable[3] = SOURCE_HDMI2;
- mSourceDetectTable[4] = SOURCE_HDMI3;
-#else
- mSourceDetectTable[0] = SOURCE_AV1;
- mSourceDetectTable[1] = SOURCE_HDMI1;
- mSourceDetectTable[2] = SOURCE_HDMI2;
- mSourceDetectTable[3] = SOURCE_HDMI3;
-#endif
-
- mSourceDetectSleepTime = 200; //default 200ms
-
- mAVDetectMethod = CC_AV_DETECT_METHOD_ADC_PLUG_OUT;
- mAVDetectPlugOutADCThreshold = CC_AV_PLUG_OUT_ADC_DEF_THRESHOLD;
- mAVDetectPlugInADCThreshold = CC_AV_PLUG_IN_ADC_DEF_THRESHOLD;
- mAVDetectPlugInDutyCycle = 70;
- mAVDetectPlugOutDutyCycle = 70;
- mAVDetectSampleSize = 15;
- mAV1DetectADCChan = 2;
- mAV2DetectADCChan = 3;
-
mpObserver = NULL;
mpTvin = pTvin;
+ 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);
+ }
}
-CTvin::CSourceConnectDetect::~CSourceConnectDetect()
+CSourceConnectDetect::~CSourceConnectDetect()
{
}
-int CTvin::CSourceConnectDetect::startDetect()
+int CSourceConnectDetect::startDetect()
{
- refreshDetectSources();
- refreshDetectAVInfo();
this->run();
return 0;
}
-int CTvin::CSourceConnectDetect::refreshDetectSources()
+int CSourceConnectDetect::SourceInputMaptoChipHdmiPort(tv_source_input_t source_input)
{
- int cur_index = 0;
- char *token = NULL;
- const char *strDelimit = ",";
- const char *config_value = NULL;
- char data_str[CC_CFG_VALUE_STR_MAX_LEN] = { 0 };
-
- config_value = config_get_str("TV", "tvin.SourceConnectDetect.sources", "null");
- if (strcasecmp(config_value, "null") == 0) {
- return 0;
- }
-
- for (int i = 0; i < SOURCE_MAX; i++) {
- mSourceDetectTable[i] = SOURCE_INVALID;
- mSourceDetectPreStatusBuf[i] = CC_SOURCE_PLUG_OUT;
- mSourceDetectCurStatusBuf[i] = CC_SOURCE_PLUG_OUT;
+ tvin_port_t source_port = TVIN_PORT_NULL;
+ source_port = mpTvin->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;
}
- cur_index = 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 (strcasecmp(token, "SOURCE_AV1") == 0) {
- mSourceDetectTable[cur_index] = SOURCE_AV1;
- cur_index += 1;
- //LOGD("%s, add detect source SOURCE_AV1.\n", __FUNCTION__);
- } else if (strcasecmp(token, "SOURCE_AV2") == 0) {
- mSourceDetectTable[cur_index] = SOURCE_AV2;
- cur_index += 1;
- //LOGD("%s, add detect source SOURCE_AV2.\n", __FUNCTION__);
- } else if (strcasecmp(token, "SOURCE_HDMI1") == 0) {
- mSourceDetectTable[cur_index] = SOURCE_HDMI1;
- cur_index += 1;
- //LOGD("%s, add detect source SOURCE_HDMI1.\n", __FUNCTION__);
- } else if (strcasecmp(token, "SOURCE_HDMI2") == 0) {
- mSourceDetectTable[cur_index] = SOURCE_HDMI2;
- cur_index += 1;
- //LOGD("%s, add detect source SOURCE_HDMI2.\n", __FUNCTION__);
- } else if (strcasecmp(token, "SOURCE_HDMI3") == 0) {
- mSourceDetectTable[cur_index] = SOURCE_HDMI3;
- cur_index += 1;
- //LOGD("%s, add detect source SOURCE_HDMI3.\n", __FUNCTION__);
- }
+}
- token = strtok(NULL, strDelimit);
+tv_source_input_t CSourceConnectDetect::ChipHdmiPortMaptoSourceInput(int port)
+{
+ switch (port)
+ {
+ case HDMI_DETECT_STATUS_BIT_A:
+ return mpTvin->Tvin_PortToSourceInput(TVIN_PORT_HDMI0);
+ break;
+ case HDMI_DETECT_STATUS_BIT_B:
+ return mpTvin->Tvin_PortToSourceInput(TVIN_PORT_HDMI1);
+ break;
+ case HDMI_DETECT_STATUS_BIT_C:
+ return mpTvin->Tvin_PortToSourceInput(TVIN_PORT_HDMI2);
+ break;
+ case HDMI_DETECT_STATUS_BIT_D:
+ return mpTvin->Tvin_PortToSourceInput(TVIN_PORT_HDMI3);
+ break;
+ default:
+ return mpTvin->Tvin_PortToSourceInput(TVIN_PORT_HDMI0);
+ break;
}
-
- return 0;
}
-int CTvin::CSourceConnectDetect::refreshDetectAVInfo()
+int CSourceConnectDetect::GetSourceConnectStatus(tv_source_input_t source_input)
{
- int cur_index = 0;
- char *token = NULL;
- const char *strDelimit = ",";
- const char *config_value = NULL;
- char data_str[CC_CFG_VALUE_STR_MAX_LEN] = { 0 };
+ 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;
+ }
- config_value = config_get_str("TV", "tvin.SourceConnectDetect.av.info", "null");
- if (strcasecmp(config_value, "null") == 0) {
- return 0;
- }
+ 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
- cur_index = 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 (cur_index == 0) {
- mAV1DetectADCChan = strtol(token, NULL, 10);
- } else if (cur_index == 1) {
- mAV2DetectADCChan = strtol(token, NULL, 10);
- } else if (cur_index == 2) {
- mAVDetectSampleSize = strtol(token, NULL, 10);
- } else if (cur_index == 3) {
- mAVDetectMethod = strtol(token, NULL, 10);
- } else if (cur_index == 4) {
- mAVDetectPlugInDutyCycle = strtol(token, NULL, 10);
- } else if (cur_index == 5) {
- mAVDetectPlugOutDutyCycle = strtol(token, NULL, 10);
- } else if (cur_index == 6) {
- mAVDetectPlugInADCThreshold = strtol(token, NULL, 10);
- } else if (cur_index == 7) {
- mAVDetectPlugOutADCThreshold = strtol(token, NULL, 10);
+ break;
}
-
- cur_index += 1;
- token = strtok(NULL, strDelimit);
- }
-
- return 0;
-}
-
-int CTvin::CSourceConnectDetect::GetSourceConnectStatus(int source_input)
-{
- for (int i = 0; i < SOURCE_MAX; i++) {
- if (mSourceDetectTable[i] == source_input) {
- return mSourceDetectCurStatusBuf[i];
+ 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 CC_SOURCE_PLUG_OUT;
+ return PlugStatus;
}
-bool CTvin::CSourceConnectDetect::threadLoop()
+bool CSourceConnectDetect::threadLoop()
{
if ( mpObserver == NULL ) {
return false;
@@ -193,120 +175,122 @@ bool CTvin::CSourceConnectDetect::threadLoop()
LOGD("%s, entering...\n", "TV");
prctl(PR_SET_NAME, (unsigned long)"CSourceConnectDetect thread loop");
-
- mpTvin->VDIN_OpenHDMIPinMuxOn(true);
+ //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
- DetectSources();
-
- usleep(mSourceDetectSleepTime * 1000);
- }
-
- LOGD("%s, exiting...\n", "TV");
- //return true, run again, return false,not run.
- return false;
-}
-
-int CTvin::CSourceConnectDetect::DetectSources()
-{
- int i = 0, cur_source = 0;
-
- for (i = 0; i < SOURCE_MAX; i++) {
- cur_source = mSourceDetectTable[i];
- if (cur_source == SOURCE_AV1 || cur_source == SOURCE_AV2) {
- mSourceDetectCurStatusBuf[i] = DetectAVSource(cur_source);
- } else if (cur_source == SOURCE_HDMI1 || cur_source == SOURCE_HDMI2 || cur_source == SOURCE_HDMI3) {
- mSourceDetectCurStatusBuf[i] = DetectHDMISource(cur_source);
- }
- }
-
- for (i = 0; i < SOURCE_MAX; i++) {
- if (mSourceDetectCurStatusBuf[i] != mSourceDetectPreStatusBuf[i]) {
- mSourceDetectPreStatusBuf[i] = mSourceDetectCurStatusBuf[i];
- LOGD("%s, Source id = %d, Source plug status = %d\n", "TV", mSourceDetectTable[i], mSourceDetectCurStatusBuf[i]);
-
-#if CC_DEBUG_AV_SAMPLE_BUF == 1
- int *cur_sample_buf = NULL;
-
- if (mSourceDetectTable[i] == SOURCE_AV1) {
- cur_sample_buf = mAV1SampleDataBuf;
- } else if (mSourceDetectTable[i] == SOURCE_AV2) {
- cur_sample_buf = mAV2SampleDataBuf;
- }
+ 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) {
- if (cur_sample_buf != NULL) {
- for (int j = 0; j < mAVDetectSampleSize; j++) {
- LOGD("%s, cur_sample_buf[%d] = %d\n", "TV", j, cur_sample_buf[j]);
}
- LOGD("%s, \n\n\n", "TV", i, cur_sample_buf[i]);
}
-#endif
-
- mpObserver->onSourceConnect(mSourceDetectTable[i], mSourceDetectCurStatusBuf[i]);
}
- }
-
- return 0;
-}
+ }//exit
-int CTvin::CSourceConnectDetect::DetectAVSource(int source_input)
-{
- int i = 0, plug_in_cnt = 0, plug_out_cnt = 0;
- int detect_adc_chan = -1, cur_adc_val = 0;
- int *cur_sample_ind = 0;
- int *cur_sample_buf = NULL;
-
- if (source_input == SOURCE_AV1) {
- detect_adc_chan = mAV1DetectADCChan;
- cur_sample_ind = &mAV1CurSampleInd;
- cur_sample_buf = mAV1SampleDataBuf;
- } else if (source_input == SOURCE_AV2) {
- detect_adc_chan = mAV2DetectADCChan;
- cur_sample_ind = &mAV2CurSampleInd;
- cur_sample_buf = mAV2SampleDataBuf;
- } else {
- return CC_SOURCE_PLUG_OUT;
- }
-
- cur_adc_val = ReadADCSpecialChannelValue(detect_adc_chan);
- *cur_sample_ind = *cur_sample_ind % mAVDetectSampleSize;
- cur_sample_buf[*cur_sample_ind] = cur_adc_val;
- *cur_sample_ind = (*cur_sample_ind + 1 ) % mAVDetectSampleSize;
-
- plug_in_cnt = 0;
- plug_out_cnt = 0;
- for (i = 0; i < mAVDetectSampleSize; i++) {
- if (cur_sample_buf[i] >= mAVDetectPlugInADCThreshold) {
- plug_in_cnt += 1;
- } else if (cur_sample_buf[i] <= mAVDetectPlugOutADCThreshold) {
- plug_out_cnt += 1;
- }
- }
-
- if (mAVDetectMethod == CC_AV_DETECT_METHOD_ADC_PLUG_IN) {
- if ((plug_in_cnt * 100 / mAVDetectSampleSize) >= mAVDetectPlugInDutyCycle) {
- return CC_SOURCE_PLUG_IN;
- }
-
- return CC_SOURCE_PLUG_OUT;
- } else if (mAVDetectMethod == CC_AV_DETECT_METHOD_ADC_PLUG_OUT) {
- if ((plug_out_cnt * 100 / mAVDetectSampleSize) >= mAVDetectPlugOutDutyCycle) {
- return CC_SOURCE_PLUG_OUT;
- }
-
- return CC_SOURCE_PLUG_IN;
- }
-
- return CC_SOURCE_PLUG_OUT;
-}
-
-int CTvin::CSourceConnectDetect::DetectHDMISource(int source_input)
-{
- int source_port = CTvin::Tvin_GetSourcePortBySourceInput((tv_source_input_t)source_input);
-
- if (mpTvin->VDIN_GetPortConnect(source_port) == true) {
- return CC_SOURCE_PLUG_IN;
- }
-
- return CC_SOURCE_PLUG_OUT;
+ LOGD("%s, exiting...\n", "CSourceConnectDetect");
+ //return true, run again, return false,not run.
+ return false;
}