00001
00002
00003
00004
00005
00006
00007
00008 #include <iostream>
00009 using namespace std;
00010 #include <unistd.h>
00011 #include <fcntl.h>
00012 #include <signal.h>
00013
00014 #include <QCoreApplication>
00015 #include <QFile>
00016
00017 #include "exitcodes.h"
00018 #include "mythcontext.h"
00019 #include "mythdbcon.h"
00020 #include "mythlogging.h"
00021 #include "mythversion.h"
00022 #include "tv_play.h"
00023 #include "compat.h"
00024 #include "mythtranslation.h"
00025 #include "commandlineparser.h"
00026
00027 #include "lcdserver.h"
00028
00029 int main(int argc, char **argv)
00030 {
00031 int special_port = -1;
00032 QString startup_message = "";
00033 int message_time = 30;
00034
00035
00036 debug_level = 0;
00037
00038 MythLCDServerCommandLineParser cmdline;
00039 if (!cmdline.Parse(argc, argv))
00040 {
00041 cmdline.PrintHelp();
00042 return GENERIC_EXIT_INVALID_CMDLINE;
00043 }
00044
00045 if (cmdline.toBool("showhelp"))
00046 {
00047 cmdline.PrintHelp();
00048 return GENERIC_EXIT_OK;
00049 }
00050
00051 if (cmdline.toBool("showversion"))
00052 {
00053 cmdline.PrintVersion();
00054 return GENERIC_EXIT_OK;
00055 }
00056
00057 QCoreApplication a(argc, argv);
00058 QCoreApplication::setApplicationName(MYTH_APPNAME_MYTHLCDSERVER);
00059
00060 int retval = cmdline.Daemonize();
00061 if (retval != GENERIC_EXIT_OK)
00062 return retval;
00063
00064 bool daemonize = cmdline.toBool("daemon");
00065 QString mask("general");
00066 if ((retval = cmdline.ConfigureLogging(mask, daemonize)) != GENERIC_EXIT_OK)
00067 return retval;
00068
00069 if (cmdline.toBool("port"))
00070 {
00071 special_port = cmdline.toInt("port");
00072 if (special_port < 1 || special_port > 65534)
00073 {
00074 LOG(VB_GENERAL, LOG_ERR, "lcdserver: Bad port number");
00075 return GENERIC_EXIT_INVALID_CMDLINE;
00076 }
00077 }
00078 if (cmdline.toBool("message"))
00079 startup_message = cmdline.toString("message");
00080 if (cmdline.toBool("messagetime"))
00081 {
00082 message_time = cmdline.toInt("messagetime");
00083 if (message_time < 1 || message_time > 1000)
00084 {
00085 LOG(VB_GENERAL, LOG_ERR, "lcdserver: Bad message duration");
00086 return GENERIC_EXIT_INVALID_CMDLINE;
00087 }
00088 }
00089 if (cmdline.toBool("debug"))
00090 {
00091 debug_level = cmdline.toInt("debug");
00092 if (debug_level < 0 || debug_level > 10)
00093 {
00094 LOG(VB_GENERAL, LOG_ERR, "lcdserver: Bad debug level");
00095 return GENERIC_EXIT_INVALID_CMDLINE;
00096 }
00097 }
00098
00099
00100 gContext = new MythContext(MYTH_BINARY_VERSION);
00101 if (!gContext->Init(false))
00102 {
00103 LOG(VB_GENERAL, LOG_ERR,
00104 "lcdserver: Could not initialize MythContext. Exiting.");
00105 return GENERIC_EXIT_NO_MYTHCONTEXT;
00106 }
00107
00108 MythTranslation::load("mythfrontend");
00109
00110 gCoreContext->ConnectToMasterServer(false);
00111
00112
00113 int assigned_port = gCoreContext->GetNumSetting("LCDServerPort", 6545);
00114 if (special_port > 0)
00115 {
00116 assigned_port = special_port;
00117 }
00118
00119 new LCDServer(assigned_port, startup_message, message_time);
00120
00121 a.exec();
00122
00123 delete gContext;
00124 return GENERIC_EXIT_OK;
00125 }
00126