83 lines
2.1 KiB
C++
83 lines
2.1 KiB
C++
// ImageDisplayThread.cpp
|
|||
|
|
#include "QtRx.h"
|
||
|
|
|
||
|
|
|
||
|
|
QtRx::QtRx()
|
||
|
|
{
|
||
|
|
mpTvClient = TvClient::GetInstance();
|
||
|
|
mpTvClient->setTvClientObserver(this);
|
||
|
|
}
|
||
|
|
|
||
|
|
QtRx::~QtRx()
|
||
|
|
{
|
||
|
|
mpTvClient->Release();
|
||
|
|
}
|
||
|
|
|
||
|
|
static int WriteSysfs(const char *path, const char *cmd)
|
||
|
|
{
|
||
|
|
int fd;
|
||
|
|
fd = open(path, O_CREAT|O_RDWR | O_TRUNC, 0777);
|
||
|
|
|
||
|
|
if (fd >= 0) {
|
||
|
|
write(fd, cmd, strlen(cmd));
|
||
|
|
close(fd);
|
||
|
|
return 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
return -1;
|
||
|
|
}
|
||
|
|
|
||
|
|
static int WriteSysfs(const char *path, int value)
|
||
|
|
{
|
||
|
|
char cmdbuf[32] = {0};
|
||
|
|
sprintf(cmdbuf,"%d",value);
|
||
|
|
return WriteSysfs(path, cmdbuf);
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
void QtRx::onTvClientEvent(CTvEvent &event)
|
||
|
|
{
|
||
|
|
int eventType = event.getEventType();
|
||
|
|
printf("%s: eventType: %d.\n", __FUNCTION__, eventType);
|
||
|
|
switch (eventType) {
|
||
|
|
case CTvEvent::TV_EVENT_SINGLE_DETECT: {
|
||
|
|
TvEvent::SignalDetectEvent *signalDetectEvent = (TvEvent::SignalDetectEvent *)(&event);
|
||
|
|
printf("%s: source: %d, signalFmt: %d, transFmt: %d, status: %d, isDVI: %d, Hdrinfo: %ud.\n", __FUNCTION__,
|
||
|
|
signalDetectEvent->mSourceInput,
|
||
|
|
signalDetectEvent->mFmt,
|
||
|
|
signalDetectEvent->mTrans_fmt,
|
||
|
|
signalDetectEvent->mStatus,
|
||
|
|
signalDetectEvent->mDviFlag,
|
||
|
|
signalDetectEvent->mhdr_info);
|
||
|
|
WriteSysfs("/sys/class/video/disable_video", 0);
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
case CTvEvent::TV_EVENT_SOURCE_CONNECT: {
|
||
|
|
TvEvent::SourceConnectEvent *sourceConnectEvent = (TvEvent::SourceConnectEvent *)(&event);
|
||
|
|
printf("%s: source: %d, connectStatus: %d\n", __FUNCTION__,
|
||
|
|
sourceConnectEvent->mSourceInput, sourceConnectEvent->connectionState);
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
default:
|
||
|
|
printf("invalid event!\n", __FUNCTION__);
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
int QtRx::SendCmd(const char *data) {
|
||
|
|
printf("%s: cmd is %s.\n", __FUNCTION__, data);
|
||
|
|
if (strcmp(data, "start") == 0) {
|
||
|
|
mpTvClient->StartTv(CurrentSource);
|
||
|
|
} else if (strcmp(data, "stop") == 0) {
|
||
|
|
mpTvClient->StopTv(CurrentSource);
|
||
|
|
} else {
|
||
|
|
printf("%s: invalid cmd\n", __FUNCTION__);
|
||
|
|
}
|
||
|
|
|
||
|
|
return 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
|