summaryrefslogtreecommitdiff
path: root/tvapi/libtv/tvin/CSourceConnectDetect.h (plain)
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"
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 __unused, int connect_status __unused) {
53 };
54 virtual void onVframeSizeChange() {};
55 };
56
57 void setObserver ( ISourceConnectObserver *pOb ) {
58 mpObserver = pOb;
59 };
60private:
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