diff options
-rw-r--r-- | HISTORY | 3 | ||||
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | dxr3.c | 13 | ||||
-rw-r--r-- | dxr3interface.c | 5 | ||||
-rw-r--r-- | settings.c | 51 | ||||
-rw-r--r-- | settings.h | 5 |
6 files changed, 77 insertions, 2 deletions
@@ -361,3 +361,6 @@ NOTE: I havent found time to include all of the languages, will be done in pre2 - Code cleanups (Christian Gmeiner) - Add Ukrainian translation (#131, Yarema aka Knedlyk). - New SpuEncoder (Christian Gmeiner) +- Fix bug #223 by adding a command line argument to enable automatic + firmware loading: + '-f --firmware-loading Enable automatic firmware loading' (Christian Gmeiner) @@ -68,7 +68,7 @@ DEFINES += -DMICROCODE=\"/lib/firmware/em8300.bin\" OBJS = $(PLUGIN).o dxr3multichannelaudio.o \ dxr3syncbuffer.o dxr3audiodecoder.o dxr3blackframe.o dxr3audio.o \ - dxr3pesframe.o dxr3demuxdevice.o \ + dxr3pesframe.o dxr3demuxdevice.o settings.o \ dxr3interface.o dxr3device.o \ dxr3output.o dxr3output-video.o dxr3output-audio.o dxr3osd.o dxr3spudecoder.o \ dxr3audio-oss.o dxr3audio-alsa.o spuencoder.o spuregion.o scaler.o @@ -127,6 +127,9 @@ public: const char* MainMenuEntry(); cOsdObject* MainMenuAction(); + virtual const char *CommandLineHelp(); + virtual bool ProcessArgs(int argc, char *argv[]); + virtual const char **SVDRPHelpPages(void); virtual cString SVDRPCommand(const char *Command, const char *Option, int &ReplyCode); @@ -225,6 +228,16 @@ cOsdObject* cPluginDxr3::MainMenuAction() return new cDxr3OsdMenu; } +const char *cPluginDxr3::CommandLineHelp() +{ + return " -f --firmware-loading Enable automatic firmware loading\n" +} + +bool cPluginDxr3::ProcessArgs(int argc, char *argv[]) +{ + return cSettings::instance()->processArgs(argc, argv); +} + // ================================== // TODO: localize command descriptions? const char **cPluginDxr3::SVDRPHelpPages(void) diff --git a/dxr3interface.c b/dxr3interface.c index f5563cb..8f8f77f 100644 --- a/dxr3interface.c +++ b/dxr3interface.c @@ -431,6 +431,11 @@ void cDxr3Interface::PlayBlackFrame() //! uploadroutine for microcode void cDxr3Interface::UploadMicroCode() { + if (!cSettings::instance()->loadFirmware()) { + return; + } + + dsyslog("[dxr3-interface] loading firmware"); em8300_microcode_t em8300_microcode; struct stat s; diff --git a/settings.c b/settings.c new file mode 100644 index 0000000..9aa9e6a --- /dev/null +++ b/settings.c @@ -0,0 +1,51 @@ +/* + * _ _ _ _ _____ + * __ ____| |_ __ _ __ | |_ _ __ _(_)_ __ __| |_ ___ _|___ / + * \ \ / / _` | '__|____| '_ \| | | | |/ _` | | '_ \ _____ / _` \ \/ / '__||_ \ + * \ V / (_| | | |_____| |_) | | |_| | (_| | | | | |_____| (_| |> <| | ___) | + * \_/ \__,_|_| | .__/|_|\__,_|\__, |_|_| |_| \__,_/_/\_\_| |____/ + * |_| |___/ + * + * Copyright (C) 2010 Christian Gmeiner + * + * This file is part of vdr-plugin-dxr3. + * + * vdr-plugin-dxr3 is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation version 2. + * + * vdr-plugin-dxr3 is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with dxr3-plugin. If not, see <http://www.gnu.org/licenses/>. + * + */ + +#include <getopt.h> +#include <vdr/tools.h> +#include "settings.h" + +bool cSettings::processArgs(int argc, char *argv[]) +{ + static struct option long_options[] = { + { "firmware-loading", no_argument, NULL, 'f' }, + { NULL } + }; + + int c; + while ((c = getopt_long(argc, argv, "f", long_options, NULL)) != -1) { + switch (c) { + case 'f': + dsyslog("[dxr3-settings] enableing automatic firmware loading"); + loadFirmware(true); + break; + + default: + return false; + } + } + return true; +} @@ -50,7 +50,9 @@ class cSettings : public Singleton<cSettings> public: cSettings() : useDigitalOut(0), card(0), forceLetterBox(0), videoMode(PAL), brightness(500), contrast(500), saturation(500), - hideMenu(0), useWss(0) {} + hideMenu(0), useWss(0), loadFirmware(false) {} + + bool processArgs(int argc, char *argv[]); Accessors<int> useDigitalOut; Accessors<int> card; @@ -63,6 +65,7 @@ public: Accessors<int> hideMenu; Accessors<int> useWss; + Accessors<bool> loadFirmware; }; #endif /*SETTINGS_H*/ |