/* * Copyright (c) 2014 Amlogic, Inc. All rights reserved. * * This source code is subject to the terms and conditions defined in the * file 'LICENSE' which is part of this source code package. * * Description: header file */ #ifndef C_SOURCE_CONNECT_DETECT_H #define C_SOURCE_CONNECT_DETECT_H #include #include 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; #define AVIN_DETECT_PATH "/dev/avin_detect" #define HDMI_DETECT_PATH "/dev/hdmirx0" typedef enum source_connect_detect_status_e { SOURCE_PLUG_OUT = 0, SOURCE_PLUG_IN = 1, } source_connect_detect_status_t; class CTvDevicesPollDetect { public: CTvDevicesPollDetect(); ~CTvDevicesPollDetect(); 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, int connect_status) {}; virtual void onVdinSignalChange() {}; virtual void onVdin2SignalChange() {}; }; void setObserver ( ISourceConnectObserver *pOb ) { mpObserver = pOb; }; private: static void *TvDevicesPollDetectThread(void* data); void *ThreadLoop(void); const char* inputToName(tv_source_input_t srcInput); int mVdinDetectFd; int mVdin2DetectFd; ISourceConnectObserver *mpObserver; Epoll mEpoll; epoll_event m_event; CFile mAvinDetectFile; CFile mHdmiDetectFile; CFile mVppPollFile; struct report_data_s m_avin_status[2]; int m_hdmi_status; }; #endif