summaryrefslogtreecommitdiff
path: root/tvapi/libtv/tvin/CSourceConnectDetect.h (plain)
blob: a1c4569f0f0b00a49e84d6ecb20eda6e34104461
1#ifndef C_SOURCE_CONNECT_DETECT_H
2#define C_SOURCE_CONNECT_DETECT_H
3#include "../tvutils/CThread.h"
4#include "../tvutils/CFile.h"
5enum avin_status_e {
6 AVIN_STATUS_IN = 0,
7 AVIN_STATUS_OUT = 1,
8 AVIN_STATUS_UNKNOW = 2,
9};
10enum avin_channel_e {
11 AVIN_CHANNEL1 = 0,
12 AVIN_CHANNEL2 = 1,
13};
14
15struct report_data_s {
16 enum avin_channel_e channel;
17 enum avin_status_e status;
18};
19
20/*
213 R 0 stat_5v_portD:
22Status of 5v power for port D.
232 R 0 stat_5v_portC:
24Status of 5v power for port C.
251 R 0 stat_5v_portB:
26Status of 5v power for port B.
270 R 0 stat_5v_portA:
28Status of 5v power for port A.
29 */
30static const int HDMI_DETECT_STATUS_BIT_A = 0x01;
31static const int HDMI_DETECT_STATUS_BIT_B = 0x02;
32static const int HDMI_DETECT_STATUS_BIT_C = 0x04;
33static const int HDMI_DETECT_STATUS_BIT_D = 0x08;
34
35static const char* AVIN_DETECT_PATH = "/dev/avin_detect";
36static const char* HDMI_DETECT_PATH = "/dev/hdmirx0";
37static const char* VPP_POLL_PATCH = "/dev/amvideo_poll";
38
39class CSourceConnectDetect: public CThread {
40public:
41 CSourceConnectDetect(CTvin *pTvin);
42 ~CSourceConnectDetect();
43 int startDetect();
44 int GetSourceConnectStatus(tv_source_input_t source_input);
45 int SourceInputMaptoChipHdmiPort(tv_source_input_t source_input);
46 tv_source_input_t ChipHdmiPortMaptoSourceInput(int port);
47
48 class ISourceConnectObserver {
49 public:
50 ISourceConnectObserver() {};
51 virtual ~ISourceConnectObserver() {};
52 virtual void onSourceConnect(int source, int connect_status) {};
53 virtual void onVframeSizeChange() {};
54 };
55 void setObserver ( ISourceConnectObserver *pOb )
56 {
57 mpObserver = pOb;
58 };
59private:
60 bool threadLoop();
61
62 ISourceConnectObserver *mpObserver;
63 CTvin *mpTvin;
64 Epoll mEpoll;
65 mutable CMutex mLock;
66 epoll_event m_event;
67 CFile mAvinDetectFile;
68 CFile mHdmiDetectFile;
69 CFile mVppPollFile;
70 struct report_data_s m_avin_status[2];
71 int m_hdmi_status;
72};
73#endif
74