summaryrefslogtreecommitdiff
path: root/tvapi/libtv/tvin/CSourceConnectDetect.h (plain)
blob: 9abfd2be81a1fcc253838ca048e7449f97ef7ebf
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();
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 Epoll mEpoll;
64 mutable CMutex mLock;
65 epoll_event m_event;
66 CFile mAvinDetectFile;
67 CFile mHdmiDetectFile;
68 CFile mVppPollFile;
69 struct report_data_s m_avin_status[2];
70 int m_hdmi_status;
71};
72#endif
73