93 lines
2.3 KiB
C++
93 lines
2.3 KiB
C++
/*
|
|
* 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 <CFile.h>
|
|
#include <zepoll.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;
|
|
|
|
#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
|