}
else
{
+ VDR::getInstance()->shutdownVDR();
boxstack->removeAll();
Video::getInstance()->signalOff();
boxstack->update(wallpaper);
logger->log("Command", Log::INFO, "Config TV/S-Video not found");
}
+ // Set to shutdown VDR if config says
+
+ config = vdr->configLoad("General", "VDR shutdown");
+ if (config)
+ {
+ if (!STRCASECMP(config, "On"))
+ {
+ logger->log("Command", Log::INFO, "Shutdown VDR when shutting down vomp");
+ vdr->setVDRShutdown(true);
+ }
+ else if (!STRCASECMP(config, "Off"))
+ {
+ logger->log("Command", Log::INFO, "Shutdown only vomp");
+ vdr->setVDRShutdown(false);
+ }
+ }
+ else
+ {
+ logger->log("Command", Log::INFO, "Default shutdown only vomp");
+ vdr->setVDRShutdown(false); // Default
+ }
+
// Set remote type
config = vdr->configLoad("General", "Remote type");
#include "video.h"
#include "osd.h"
-#define VOMP_PROTOCOLL_VERSION 0x00000200
+#define VOMP_PROTOCOLL_VERSION 0x00000301
VDR* VDR::instance = NULL;
//prepare a request
connected = false;
maxChannelNumber = 0;
channelNumberWidth = 1;
+ doVDRShutdown = false;
TEMP_SINGLE_VDR_PR = NULL;
providerId=MPROVIDERID_VDR;
subRange=MPROVIDERRANGE_VDR;
delete vresp;
return 1;
}
+
+void VDR::shutdownVDR()
+{
+ if(doVDRShutdown)
+ logger->log("VDR", Log::DEBUG, "Shutting down vdr");
+ else
+ logger->log("VDR", Log::DEBUG, "Shutting down vomp only");
+
+ if(!doVDRShutdown || !connected)
+ return;
+
+ VDR_RequestPacket vrp;
+ logger->log("VDR", Log::DEBUG, "Sending shutdown");
+ if (!vrp.init(VDR_SHUTDOWN, false, 0)) return;
+ VDR_ResponsePacket* vresp = RequestResponse(&vrp);
+ delete vresp;
+
+ logger->log("VDR", Log::DEBUG, "VDR shutdown");
+}
bool isConnected() { return connected; }
ULONG getChannelNumberWidth() { return channelNumberWidth; }
+ void setVDRShutdown(bool doShutdown) { doVDRShutdown = doShutdown; }
+ void shutdownVDR();
+
// protocol functions
// for the following, if result == false then the connection has died
// doLogin
USHORT serverPort;
bool connected;
ULONG maxChannelNumber;
+ bool doVDRShutdown;
ULONG channelNumberWidth;
VDR_PacketReceiver* TEMP_SINGLE_VDR_PR;
const static ULONG VDR_GETMEDIABLOCK = 32;
const static ULONG VDR_GETMEDIAINFO = 35;
const static ULONG VDR_CLOSECHANNEL = 36;
+const static ULONG VDR_SHUTDOWN = 666;
class VDR_Command : public SerializableList {
public:
static const char* options13[] = {"Auto","1024", "2048", "4096", "8192", "16384", "32768", "65536"};
static const char* options14[] = {"No", "Yes"};
+ static const char* options18[] = {"Off", "On"};
// Get list of languages from VDR and construct options table
LangCode = VDR::getInstance()->getLanguageList();
options2 = new const char*[LangCode.size()];
option = new Option(15, "Recordings sort order", "General", "Recordings Sort Order", Option::TYPE_TEXT, 2, 0, 0, options15);
options.push_back(option);
wop->addOptionLine(option);
+ option = new Option(18, "Automatic VDR shutdown", "General", "VDR shutdown", Option::TYPE_TEXT, 2, 0, 0, options18);
+ options.push_back(option);
+ wop->addOptionLine(option);
Remote::getInstance()->addOptionsToPanes(0,&options,wop);
Video::getInstance()->addOptionsToPanes(0,&options,wop);
VDR::getInstance()->setReceiveWindow(newTCPsize);
break;
}
- case 17: {
- Osd::getInstance()->setFont(options[i]->optionkeys[options[i]->userSetChoice]);
- } break;
+ case 17:
+ {
+ Osd::getInstance()->setFont(options[i]->optionkeys[options[i]->userSetChoice]);
+ break;
+ }
+ case 18:
+ {
+ if (options[i]->userSetChoice == 1)
+ {
+ Log::getInstance()->log("Options", Log::DEBUG, "Setting automatic vdr shutdown");
+ VDR::getInstance()->setVDRShutdown(true);
+ }
+ else
+ {
+ Log::getInstance()->log("Options", Log::DEBUG, "Setting local shutdown");
+ VDR::getInstance()->setVDRShutdown(false);
+ }
+ break;
+ }
}
}
else