- Revert first try to fix hdmi-cec

Signed-off-by: Thilo Graf <dbt@novatux.de>
This commit is contained in:
svenhoefer
2020-01-05 21:16:05 +01:00
committed by Thilo Graf
parent 84ad5a2019
commit 9c422e5713
2 changed files with 24 additions and 71 deletions

View File

@@ -60,7 +60,6 @@
}) })
#define CEC_DEVICE "/dev/cec0" #define CEC_DEVICE "/dev/cec0"
#define CEC_HDMIDEVICE "/dev/hdmi_cec"
#define RC_DEVICE "/dev/input/event1" #define RC_DEVICE "/dev/input/event1"
hdmi_cec * hdmi_cec::hdmi_cec_instance = NULL; hdmi_cec * hdmi_cec::hdmi_cec_instance = NULL;
@@ -73,7 +72,6 @@ hdmi_cec::hdmi_cec()
standby_cec_activ = autoview_cec_activ = standby = muted = false; standby_cec_activ = autoview_cec_activ = standby = muted = false;
hdmiFd = -1; hdmiFd = -1;
volume = 0; volume = 0;
hdmi_mode = false;
} }
hdmi_cec::~hdmi_cec() hdmi_cec::~hdmi_cec()
@@ -195,39 +193,15 @@ bool hdmi_cec::SetCECMode(VIDEO_HDMI_CEC_MODE _deviceType)
return true; return true;
} }
if (hdmiFd == -1)
{
hdmiFd = open(CEC_HDMIDEVICE, O_RDWR | O_NONBLOCK | O_CLOEXEC);
if (hdmiFd >= 0)
{
hdmi_mode = true;
::ioctl(hdmiFd, 0);
GetCECAddressInfo();
if(autoview_cec_activ)
SetCECState(false);
Start();
return true;
}
}
return false; return false;
} }
void hdmi_cec::GetCECAddressInfo() void hdmi_cec::GetCECAddressInfo()
{ {
if (hdmiFd >= 0)
{
struct addressinfo addressinfo; struct addressinfo addressinfo;
if (hdmi_mode)
{
::ioctl(hdmiFd, 1, &addressinfo);
}
else
{
__u16 phys_addr; __u16 phys_addr;
struct cec_log_addrs laddrs = {}; struct cec_log_addrs laddrs = {};
@@ -260,7 +234,6 @@ void hdmi_cec::GetCECAddressInfo()
addressinfo.type = CEC_LOG_ADDR_UNREGISTERED; addressinfo.type = CEC_LOG_ADDR_UNREGISTERED;
break; break;
} }
}
deviceType = addressinfo.type; deviceType = addressinfo.type;
logicalAddress = addressinfo.logical; logicalAddress = addressinfo.logical;
@@ -270,6 +243,7 @@ void hdmi_cec::GetCECAddressInfo()
memcpy(physicalAddress, addressinfo.physical, sizeof(physicalAddress)); memcpy(physicalAddress, addressinfo.physical, sizeof(physicalAddress));
ReportPhysicalAddress(); ReportPhysicalAddress();
} }
}
} }
void hdmi_cec::ReportPhysicalAddress() void hdmi_cec::ReportPhysicalAddress()
@@ -295,19 +269,12 @@ void hdmi_cec::SendCECMessage(struct cec_message &txmessage)
sprintf(str+(i*6),"[0x%02X]", txmessage.data[i]); sprintf(str+(i*6),"[0x%02X]", txmessage.data[i]);
} }
hal_info("[CEC] send message %s to %s (0x%02X>>0x%02X) '%s' (%s)\n",ToString((cec_logical_address)txmessage.initiator), txmessage.destination == 0xf ? "all" : ToString((cec_logical_address)txmessage.destination), txmessage.initiator, txmessage.destination, ToString((cec_opcode)txmessage.data[0]), str); hal_info("[CEC] send message %s to %s (0x%02X>>0x%02X) '%s' (%s)\n",ToString((cec_logical_address)txmessage.initiator), txmessage.destination == 0xf ? "all" : ToString((cec_logical_address)txmessage.destination), txmessage.initiator, txmessage.destination, ToString((cec_opcode)txmessage.data[0]), str);
if (hdmi_mode)
{
::write(hdmiFd, &txmessage, 2 + txmessage.length);
}
else
{
struct cec_msg msg; struct cec_msg msg;
cec_msg_init(&msg, txmessage.initiator, txmessage.destination); cec_msg_init(&msg, txmessage.initiator, txmessage.destination);
memcpy(&msg.msg[1], txmessage.data, txmessage.length); memcpy(&msg.msg[1], txmessage.data, txmessage.length);
msg.len = txmessage.length + 1; msg.len = txmessage.length + 1;
ioctl(hdmiFd, CEC_TRANSMIT, &msg); ioctl(hdmiFd, CEC_TRANSMIT, &msg);
} }
}
} }
void hdmi_cec::SetCECAutoStandby(bool state) void hdmi_cec::SetCECAutoStandby(bool state)
@@ -533,18 +500,6 @@ void hdmi_cec::Receive()
struct cec_message rxmessage; struct cec_message rxmessage;
struct cec_message txmessage; struct cec_message txmessage;
if (hdmi_mode)
{
if (::read(hdmiFd, &rxmessage, 2) == 2)
{
if (::read(hdmiFd, &rxmessage.data, rxmessage.length) == rxmessage.length)
{
hasdata = true;
}
}
}
else
{
struct cec_msg msg; struct cec_msg msg;
if (::ioctl(hdmiFd, CEC_RECEIVE, &msg) >= 0) if (::ioctl(hdmiFd, CEC_RECEIVE, &msg) >= 0)
{ {
@@ -555,7 +510,6 @@ void hdmi_cec::Receive()
memcpy(&rxmessage.data, &msg.msg[1], rxmessage.length); memcpy(&rxmessage.data, &msg.msg[1], rxmessage.length);
hasdata = true; hasdata = true;
} }
}
if (hasdata) if (hasdata)
{ {

View File

@@ -70,7 +70,6 @@ private:
void request_audio_status(); void request_audio_status();
bool muted; bool muted;
int volume; int volume;
bool hdmi_mode;
protected: protected:
bool running; bool running;
public: public: