blob: 3aa56d2f5732cbfa00af1b49c3128c8fcdf33b28
1 | #ifndef C_SOURCE_CONNECT_DETECT_H |
2 | #define C_SOURCE_CONNECT_DETECT_H |
3 | #include "../tvutils/CThread.h" |
4 | #include "../tvutils/CFile.h" |
5 | enum avin_status_e { |
6 | AVIN_STATUS_IN = 0, |
7 | AVIN_STATUS_OUT = 1, |
8 | AVIN_STATUS_UNKNOW = 2, |
9 | }; |
10 | enum avin_channel_e { |
11 | AVIN_CHANNEL1 = 0, |
12 | AVIN_CHANNEL2 = 1, |
13 | }; |
14 | |
15 | struct report_data_s { |
16 | enum avin_channel_e channel; |
17 | enum avin_status_e status; |
18 | }; |
19 | |
20 | /* |
21 | 3 R 0 stat_5v_portD: |
22 | Status of 5v power for port D. |
23 | 2 R 0 stat_5v_portC: |
24 | Status of 5v power for port C. |
25 | 1 R 0 stat_5v_portB: |
26 | Status of 5v power for port B. |
27 | 0 R 0 stat_5v_portA: |
28 | Status of 5v power for port A. |
29 | */ |
30 | static const int HDMI_DETECT_STATUS_BIT_A = 0x01; |
31 | static const int HDMI_DETECT_STATUS_BIT_B = 0x02; |
32 | static const int HDMI_DETECT_STATUS_BIT_C = 0x04; |
33 | static const int HDMI_DETECT_STATUS_BIT_D = 0x08; |
34 | |
35 | static const char *AVIN_DETECT_PATH = "/dev/avin_detect"; |
36 | static const char *HDMI_DETECT_PATH = "/dev/hdmirx0"; |
37 | static const char *VPP_POLL_PATCH = "/dev/amvideo_poll"; |
38 | |
39 | class CSourceConnectDetect: public CThread { |
40 | public: |
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 __unused, int connect_status __unused) { |
53 | }; |
54 | virtual void onVframeSizeChange() {}; |
55 | }; |
56 | |
57 | void setObserver ( ISourceConnectObserver *pOb ) { |
58 | mpObserver = pOb; |
59 | }; |
60 | private: |
61 | bool threadLoop(); |
62 | |
63 | ISourceConnectObserver *mpObserver; |
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 |