armbox: improve cec

This commit is contained in:
TangoCash
2017-10-19 21:39:55 +02:00
parent 9bdcb65a61
commit 0b69bc17f9
2 changed files with 18 additions and 5 deletions

View File

@@ -161,6 +161,7 @@ cVideo::cVideo(int, void *, void *, unsigned int unit)
} else } else
devnum = unit; devnum = unit;
fd = -1; fd = -1;
hdmiFd = -1;
standby_cec_activ = autoview_cec_activ = false; standby_cec_activ = autoview_cec_activ = false;
openDevice(); openDevice();
} }
@@ -815,9 +816,21 @@ bool cVideo::SetCECMode(VIDEO_HDMI_CEC_MODE _deviceType)
physicalAddress[0] = 0x10; physicalAddress[0] = 0x10;
physicalAddress[1] = 0x00; physicalAddress[1] = 0x00;
logicalAddress = 1; logicalAddress = 1;
deviceType = 1; /* default: recorder */
if (_deviceType == VIDEO_HDMI_CEC_MODE_OFF)
{
if (hdmiFd >= 0) {
close hdmiFd;
hdmiFd = -1;
}
return false;
}
else
deviceType = _deviceType;
if (hdmiFd == -1)
hdmiFd = open("/dev/cec0", O_RDWR | O_CLOEXEC);
hdmiFd = open("/dev/cec0", O_RDWR | O_CLOEXEC);
if (hdmiFd >= 0) if (hdmiFd >= 0)
{ {
__u32 monitor = CEC_MODE_INITIATOR | CEC_MODE_FOLLOWER; __u32 monitor = CEC_MODE_INITIATOR | CEC_MODE_FOLLOWER;
@@ -891,6 +904,7 @@ bool cVideo::SetCECMode(VIDEO_HDMI_CEC_MODE _deviceType)
GetCECAddressInfo(); GetCECAddressInfo();
return true;
} }
void cVideo::GetCECAddressInfo() void cVideo::GetCECAddressInfo()

View File

@@ -118,11 +118,10 @@ typedef enum {
VIDEO_STD_MAX = VIDEO_STD_AUTO VIDEO_STD_MAX = VIDEO_STD_AUTO
} VIDEO_STD; } VIDEO_STD;
/* not used, for dummy functions */
typedef enum { typedef enum {
VIDEO_HDMI_CEC_MODE_OFF = 0, VIDEO_HDMI_CEC_MODE_OFF = 0,
VIDEO_HDMI_CEC_MODE_TUNER, VIDEO_HDMI_CEC_MODE_TUNER = 3,
VIDEO_HDMI_CEC_MODE_RECORDER VIDEO_HDMI_CEC_MODE_RECORDER = 1
} VIDEO_HDMI_CEC_MODE; } VIDEO_HDMI_CEC_MODE;
typedef enum typedef enum