From 858125510ec4e0ecadb95901556fd23093a7d722 Mon Sep 17 00:00:00 2001 From: redPanther Date: Sat, 17 Sep 2016 00:40:29 +0200 Subject: [PATCH] hyperiond: add ability to export default config and effects (#244) * - embed default config - add possibility to export effects and embeded default config to filesystem * do some code style --- assets/webconfig/js/content_index.js | 2 - bin/copy_binaries_to_deploy.sh | 4 - cmake/debian/postinst | 6 +- include/commandline/Option.h | 1 + include/commandline/Parser.h | 192 ++++++++++-------- include/utils/FileUtils.h | 3 +- include/utils/Process.h | 2 + libsrc/commandline/Option.cpp | 5 + libsrc/hyperion/resource.qrc | 1 + src/hyperion-aml/hyperion-aml.cpp | 16 +- src/hyperion-dispmanx/hyperion-dispmanx.cpp | 28 +-- .../hyperion-framebuffer.cpp | 18 +- src/hyperion-osx/hyperion-osx.cpp | 18 +- src/hyperion-remote/hyperion-remote.cpp | 76 +++---- src/hyperion-v4l2/hyperion-v4l2.cpp | 50 ++--- src/hyperion-x11/hyperion-x11.cpp | 28 +-- src/hyperiond/CMakeLists.txt | 2 - src/hyperiond/main.cpp | 66 +++++- 18 files changed, 301 insertions(+), 217 deletions(-) diff --git a/assets/webconfig/js/content_index.js b/assets/webconfig/js/content_index.js index fc90b20b..6d14d88a 100644 --- a/assets/webconfig/js/content_index.js +++ b/assets/webconfig/js/content_index.js @@ -1,6 +1,5 @@ $(document).ready( function() { $("#main-nav").hide(); - $("#page-content").hide(); $("#loading_overlay").addClass("overlay"); loadContentTo("#container_connection_lost","connection_lost"); initWebSocket(); @@ -62,7 +61,6 @@ $(document).ready( function() { }); $("#loading_overlay").removeClass("overlay"); $("#main-nav").show('slide', {direction: 'left'}, 1000); - $("#page-content").show('slide', {direction: 'down'}, 2000); }); // end cmd-serverinfo diff --git a/bin/copy_binaries_to_deploy.sh b/bin/copy_binaries_to_deploy.sh index 82dc5032..6452c2c7 100755 --- a/bin/copy_binaries_to_deploy.sh +++ b/bin/copy_binaries_to_deploy.sh @@ -16,8 +16,6 @@ echo create $outfile tar --create --verbose --gzip --absolute-names --show-transformed-names \ --file "$outfile" \ --transform "s:$builddir/bin/:hyperion/bin/:" \ - --transform "s:$repodir/effects/:hyperion/effects/:" \ - --transform "s:$repodir/config/:hyperion/config/:" \ --transform "s:$repodir/bin/hyperion.init.sh:hyperion/init.d/hyperion.init.sh:" \ --transform "s://:/:g" \ "$builddir/bin/hyperiond" \ @@ -25,6 +23,4 @@ tar --create --verbose --gzip --absolute-names --show-transformed-names \ "$builddir/bin/hyperion-v4l2" \ "$builddir/bin/gpio2spi" \ "$builddir/bin/dispmanx2png" \ - "$repodir/effects/"* \ "$repodir/bin/hyperion.init.sh" \ - "$repodir/config/hyperion.config.json" diff --git a/cmake/debian/postinst b/cmake/debian/postinst index f7e4c2e1..7431bb5c 100644 --- a/cmake/debian/postinst +++ b/cmake/debian/postinst @@ -20,8 +20,12 @@ install_file() echo "--- hyperion ambient light postinstall ---" echo "- install configuration template" mkdir -p /etc/hyperion -install_file /usr/share/hyperion/config/hyperion.config.json.default /etc/hyperion/hyperion.config.json +if [ ! -e "/etc/hyperion/hyperion.config.json" ] +then + echo "install default config to /etc/hyperion" + /usr/bin/hyperiond --export-config /etc/hyperion/hyperion.config.json +fi HYPERION_RUNNING=false pgrep hyperiond > /dev/null 2>&1 && HYPERION_RUNNING=true diff --git a/include/commandline/Option.h b/include/commandline/Option.h index d58bc4fe..722a002f 100644 --- a/include/commandline/Option.h +++ b/include/commandline/Option.h @@ -42,6 +42,7 @@ public: QString value(Parser &parser); std::string getStdString(Parser &parser); std::wstring getStdWString(Parser &parser); + const char* getCString(Parser &parser); }; } diff --git a/include/commandline/Parser.h b/include/commandline/Parser.h index a9876e87..3c2c7848 100644 --- a/include/commandline/Parser.h +++ b/include/commandline/Parser.h @@ -1,5 +1,4 @@ -#ifndef HYPERION_COMMANDLINEPARSER_H -#define HYPERION_COMMANDLINEPARSER_H +#pragma once #include #include @@ -20,101 +19,126 @@ namespace commandline class Parser : public QObject { protected: - QHash _options; - QString _errorText; - /* No public inheritance because we need to modify a few methods */ - QCommandLineParser _parser; + QHash _options; + QString _errorText; + /* No public inheritance because we need to modify a few methods */ + QCommandLineParser _parser; - QStringList _getNames(const char shortOption, const QString longOption); - QString _getDescription(const QString description, const QString default_=QString()); + QStringList _getNames(const char shortOption, const QString longOption); + QString _getDescription(const QString description, const QString default_=QString()); public: - bool parse(const QStringList &arguments); - void process(const QStringList &arguments); - void process(const QCoreApplication &app); - QString errorText() const; + bool parse(const QStringList &arguments); + void process(const QStringList &arguments); + void process(const QCoreApplication &app); + QString errorText() const; - template - OptionT &add( - const char shortOption, - const QString longOption, + template + OptionT &add( + const char shortOption, + const QString longOption, const QString description, const QString default_, Args ... args) - { - OptionT * option = new OptionT( - _getNames(shortOption, longOption), - _getDescription(description, default_), - longOption, - default_, - args...); - addOption(option); - return *option; - } + { + OptionT * option = new OptionT( + _getNames(shortOption, longOption), + _getDescription(description, default_), + longOption, + default_, + args...); + addOption(option); + return *option; + } - /* gcc does not support default arguments for variadic templates which - * makes this method necessary */ - template - OptionT &add( - const char shortOption, + /* gcc does not support default arguments for variadic templates which + * makes this method necessary */ + template + OptionT &add( + const char shortOption, const QString longOption, const QString description, const QString default_ = QString()) - { - OptionT * option = new OptionT( - _getNames(shortOption, longOption), - _getDescription(description, default_), - longOption, - default_); - addOption(option); - return *option; - } + { + OptionT * option = new OptionT( + _getNames(shortOption, longOption), + _getDescription(description, default_), + longOption, + default_); + addOption(option); + return *option; + } - Parser(QString description=QString()) - {if(description.size())setApplicationDescription(description);}; - QCommandLineOption addHelpOption() - { return _parser.addHelpOption(); } - bool addOption(Option &option); - bool addOption(Option *option); - void addPositionalArgument(const QString &name, const QString &description, const QString &syntax = QString()) - { _parser.addPositionalArgument(name, description, syntax); } - QCommandLineOption addVersionOption() - { return _parser.addVersionOption(); } - QString applicationDescription() const - { return _parser.applicationDescription(); } - void clearPositionalArguments() - { _parser.clearPositionalArguments(); } - QString helpText() const - { return _parser.helpText(); } - bool isSet(const QString &name) const - { return _parser.isSet(name); } - bool isSet(const Option &option) const - { return _parser.isSet(option); } - bool isSet(const Option *option) const - { return _parser.isSet(*option); } - QStringList optionNames() const - { return _parser.optionNames(); } - QStringList positionalArguments() const - { return _parser.positionalArguments(); } - void setApplicationDescription(const QString &description) - { _parser.setApplicationDescription(description); } - void setSingleDashWordOptionMode(QCommandLineParser::SingleDashWordOptionMode singleDashWordOptionMode) - { _parser.setSingleDashWordOptionMode(singleDashWordOptionMode); } - void showHelp(int exitCode = 0) - { _parser.showHelp(exitCode); } - QStringList unknownOptionNames() const - { return _parser.unknownOptionNames(); } - QString value(const QString &optionName) const - { return _parser.value(optionName); } - QString value(const Option &option) const - { return _parser.value(option); } - QStringList values(const QString &optionName) const - { return _parser.values(optionName); } - QStringList values(const Option &option) const - { return _parser.values(option); } + Parser(QString description=QString()) + { + if(description.size())setApplicationDescription(description); + }; + + QCommandLineOption addHelpOption() + { + return _parser.addHelpOption(); + }; + + bool addOption(Option &option); + bool addOption(Option *option); + void addPositionalArgument(const QString &name, const QString &description, const QString &syntax = QString()) + { + _parser.addPositionalArgument(name, description, syntax); + }; + + QCommandLineOption addVersionOption() + { + return _parser.addVersionOption(); + }; + + QString applicationDescription() const + { return _parser.applicationDescription(); } + + void clearPositionalArguments() + { _parser.clearPositionalArguments(); } + + QString helpText() const + { return _parser.helpText(); } + + bool isSet(const QString &name) const + { return _parser.isSet(name); } + + bool isSet(const Option &option) const + { return _parser.isSet(option); } + + bool isSet(const Option *option) const + { return _parser.isSet(*option); } + + QStringList optionNames() const + { return _parser.optionNames(); } + + QStringList positionalArguments() const + { return _parser.positionalArguments(); } + + void setApplicationDescription(const QString &description) + { _parser.setApplicationDescription(description); } + + void setSingleDashWordOptionMode(QCommandLineParser::SingleDashWordOptionMode singleDashWordOptionMode) + { _parser.setSingleDashWordOptionMode(singleDashWordOptionMode); } + + void showHelp(int exitCode = 0) + { _parser.showHelp(exitCode); } + + QStringList unknownOptionNames() const + { return _parser.unknownOptionNames(); } + + QString value(const QString &optionName) const + { return _parser.value(optionName); } + + QString value(const Option &option) const + { return _parser.value(option); } + + QStringList values(const QString &optionName) const + { return _parser.values(optionName); } + + QStringList values(const Option &option) const + { return _parser.values(option); } }; } - -#endif //HYPERION_COMMANDLINEPARSER_H diff --git a/include/utils/FileUtils.h b/include/utils/FileUtils.h index 8d04dc1f..bda77bc4 100644 --- a/include/utils/FileUtils.h +++ b/include/utils/FileUtils.h @@ -1,8 +1,9 @@ +#pragma once + #include namespace FileUtils { std::string getBaseName( std::string sourceFile); - }; diff --git a/include/utils/Process.h b/include/utils/Process.h index 3e76607d..dd1055c9 100644 --- a/include/utils/Process.h +++ b/include/utils/Process.h @@ -1,3 +1,5 @@ +#pragma once + #include namespace Process { diff --git a/libsrc/commandline/Option.cpp b/libsrc/commandline/Option.cpp index d8e733e8..abc7892a 100644 --- a/libsrc/commandline/Option.cpp +++ b/libsrc/commandline/Option.cpp @@ -24,3 +24,8 @@ std::wstring Option::getStdWString(Parser &parser) return value(parser).toStdWString(); } +const char* Option::getCString(Parser &parser) +{ + return value(parser).toLocal8Bit().constData(); +} + diff --git a/libsrc/hyperion/resource.qrc b/libsrc/hyperion/resource.qrc index 4181fbe8..efc3930b 100644 --- a/libsrc/hyperion/resource.qrc +++ b/libsrc/hyperion/resource.qrc @@ -1,5 +1,6 @@ hyperion.schema.json + ../../config/hyperion.config.json.default diff --git a/src/hyperion-aml/hyperion-aml.cpp b/src/hyperion-aml/hyperion-aml.cpp index cc91a63e..ab113efe 100644 --- a/src/hyperion-aml/hyperion-aml.cpp +++ b/src/hyperion-aml/hyperion-aml.cpp @@ -34,14 +34,14 @@ int main(int argc, char ** argv) // create the option parser and initialize all parser Parser parser("AmLogic capture application for Hyperion"); - IntOption & argFps = parser.add ('f', "framerate", "Capture frame rate [default: %1]", "10"); - IntOption & argWidth = parser.add (0x0, "width", "Width of the captured image [default: %1]", "160", 160, 4096); - IntOption & argHeight = parser.add (0x0, "height", "Height of the captured image [default: %1]", "160", 160, 4096); - BooleanOption & argScreenshot = parser.add (0x0, "screenshot", "Take a single screenshot, save it to file and quit"); - Option & argAddress = parser.add