diff --git a/DBusMprisProxy.cpp b/DBusMprisProxy.cpp new file mode 100644 index 0000000..0540aed --- /dev/null +++ b/DBusMprisProxy.cpp @@ -0,0 +1,99 @@ + +/* + * File: DBusMprisProxy.cpp + * Author: SET - nmset@netcourrier.com + * License : GPL V2 + * + * Created on 10 décembre 2017, 22:23 + */ + +#include "DBusMprisProxy.h" +#include "globals.h" +#include +#include +#include +using namespace std; + +#define FFR_PAUSE 200 + +bool DBusMprisProxy::m_break = true; +extern uint g_autorewind; + +/** + * Communicates over DBus to an MPRIS compliant media player. + * @param connection + * @param service + */ +DBusMprisProxy::DBusMprisProxy(DBus::Connection &connection, const char * service) +: DBus::ObjectProxy(connection, "/org/mpris/MediaPlayer2", service) +{ +} + +DBusMprisProxy::~DBusMprisProxy() +{ +} + +void DBusMprisProxy::FastForward(const int& step) +{ + // Let the running thread die + this_thread::sleep_for(chrono::milliseconds(FFR_PAUSE + 1)); + m_break = false; + thread t(DoFastForward, this, step); + t.detach(); +} + +void DBusMprisProxy::Rewind(const int& step) +{ + this_thread::sleep_for(chrono::milliseconds(FFR_PAUSE + 1)); + m_break = false; + thread t(DoRewind, this, step); + t.detach(); +} + +void DBusMprisProxy::Reset() +{ + m_break = true; +} + +int DBusMprisProxy::DoFastForward(DBusMprisProxy * obj, const int& step) +{ + try + { + while (!m_break) + { + obj->Seek(step); // 1 sec = 1000000 + // https://stackoverflow.com/questions/4184468/sleep-for-milliseconds + this_thread::sleep_for(chrono::milliseconds(FFR_PAUSE)); + } + } + catch (DBus::Error e) + { + cout << e.message() << _NL_ << e.name() << endl; + return 1; // ??? + } + return 0; // ??? +} + +int DBusMprisProxy::DoRewind(DBusMprisProxy* obj, const int& step) +{ + try + { + while (!m_break) + { + obj->Seek(-1 * step); + this_thread::sleep_for(chrono::milliseconds(FFR_PAUSE)); + } + } + catch (DBus::Error e) + { + cout << e.message() << _NL_ << e.name() << endl; + return 1; // ??? + } + return 0; // ??? +} + +void DBusMprisProxy::AutoRewind() +{ + Seek((int64_t) g_autorewind * 1000 * -1); +} + diff --git a/DBusMprisProxy.h b/DBusMprisProxy.h new file mode 100644 index 0000000..619a645 --- /dev/null +++ b/DBusMprisProxy.h @@ -0,0 +1,68 @@ +/* + * File: DBusMprisProxy.h + * Author: SET - nmset@netcourrier.com + * License : GPL V2 + * + * Created on 10 décembre 2017, 22:23 + */ + +#ifndef DBUSMPRISPROXY_H +#define DBUSMPRISPROXY_H + +#include "mpris_proxy.hpp" + +#define FFR_STEP 5000000 // Fast forward and rewind by 5 secs +#define FFR_STEP_QUICK 50000000 // 50 secs + +/** + * Sends DBus commands to an MPRIS compliant media player. + * @param connection + * @param service + */ + +class DBusMprisProxy : public org::mpris::MediaPlayer2::Player_proxy, +public DBus::IntrospectableProxy, +public DBus::ObjectProxy +{ +public: + /** + * + * @param connection + * @param service : pedal.event, from application POD7. + */ + DBusMprisProxy(DBus::Connection &connection, const char * service); + virtual ~DBusMprisProxy(); + + /** + * Advances the media position by step milliseconds, + * pausing 200 milliseconds between steps. + * Runs in a detached thread. + * @param step + */ + void FastForward(const int& step); + /** + * Moves back the media position by step milliseconds, + * pausing 200 milliseconds between steps. + * Runs in a detached thread. + */ + void Rewind(const int& step); + /** + * Sets a flag that allows running threads to end. + */ + void Reset(); + /** + * Rewinds specified milliseconds before starting playback. + * An unavoidable feature for transcriptionists. + */ + void AutoRewind(); +private: + /** + * Flag controlling thread lifetime. + */ + static bool m_break; + static int DoFastForward(DBusMprisProxy * obj, const int& step); + static int DoRewind(DBusMprisProxy * obj, const int& step); +}; + +#endif /* DBUSMPRISPROXY_H */ + diff --git a/DBusPODProxy.cpp b/DBusPODProxy.cpp new file mode 100644 index 0000000..5356fe1 --- /dev/null +++ b/DBusPODProxy.cpp @@ -0,0 +1,93 @@ +/* + * File: DBusPODProxy.cpp + * Author: SET - nmset@netcourrier.com + * License : GPL V2 + * + * Created on 10 décembre 2017, 18:51 + */ + +#include "DBusPODProxy.h" +#include "globals.h" +#include +#include +using namespace std; + +#include "DBusMprisProxy.h" + +DBusMprisProxy * g_MprisProxy; +extern string g_backend; +extern uint g_rewind; +extern uint g_fastforward; +extern uint g_play; +extern bool g_verbose; + +/** + * Controls playback of an MPRIS compliant media player. + * @param connection + * @param service + */ +DBusPODProxy::DBusPODProxy(DBus::Connection &connection, const char * service) +: DBus::ObjectProxy(connection, "/pedal/event", service) +{ + thread t(Entry); + t.detach(); + string mpris_service("org.mpris.MediaPlayer2."); + mpris_service += g_backend; + g_MprisProxy = new DBusMprisProxy(connection, mpris_service.c_str()); +} + +DBusPODProxy::~DBusPODProxy() +{ + DBus::default_dispatcher->leave(); + delete g_MprisProxy; +} + +void DBusPODProxy::OnPedalEvent(const int32_t& code) +{ + if (g_verbose) + cout << code << endl; + try + { + // Stop evenything whenever a pedal whenever occurs + g_MprisProxy->Reset(); + g_MprisProxy->Pause(); + // switch case does not compile here + if ((uint) code == g_rewind) + { + g_MprisProxy->Rewind(FFR_STEP); + } + else if ((uint) code == g_rewind + g_play) + { + g_MprisProxy->Rewind(FFR_STEP_QUICK); + } + else if ((uint) code == g_fastforward) + { + g_MprisProxy->FastForward(FFR_STEP); + } + else if ((uint) code == g_fastforward + g_play) + { + g_MprisProxy->FastForward(FFR_STEP_QUICK); + } + else if ((uint) code == g_play) + { + g_MprisProxy->AutoRewind(); + g_MprisProxy->Play(); + } + else + { + g_MprisProxy->Reset(); + g_MprisProxy->Pause(); + } + + } + catch (DBus::Error e) + { + cout << e.message() << _NL_ << e.name() << endl; + } +} + +int DBusPODProxy::Entry() +{ + DBus::default_dispatcher->enter(); // IS BLOCKING + return 0; +} diff --git a/DBusPODProxy.h b/DBusPODProxy.h new file mode 100644 index 0000000..72f4be7 --- /dev/null +++ b/DBusPODProxy.h @@ -0,0 +1,50 @@ +/* + * File: DBusPODProxy.h + * Author: SET - nmset@netcourrier.com + * License : GPL V2 + * + * Created on 10 décembre 2017, 18:51 + */ + +#ifndef DBUSPODPROXY_H +#define DBUSPODPROXY_H + +#include "pod_proxy.hpp" + +/** + * Listen to DBus pedal events from application POD7. + * It creates an DBus proxy for an MPRIS compliant media player + * that will react to pedal events. + */ + +class DBusPODProxy : public pedal::event_proxy, +public DBus::IntrospectableProxy, +public DBus::ObjectProxy +{ +public: + /** + * + * @param connection + * @param service : pedal.event, from application POD7. + */ + DBusPODProxy(DBus::Connection &connection, const char * service); + virtual ~DBusPODProxy(); + + /** + * + * @param code : sent by a pedal event + */ + void OnPedalEvent(const int32_t& code) override; + + /** + * Enters the DBus loop in a detached thread + * @return + */ + static int Entry(); + +private: + +}; + +#endif /* DBUSPODPROXY_H */ + diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..05de621 --- /dev/null +++ b/Makefile @@ -0,0 +1,128 @@ +# +# There exist several targets which are by default empty and which can be +# used for execution of your targets. These targets are usually executed +# before and after some main targets. They are: +# +# .build-pre: called before 'build' target +# .build-post: called after 'build' target +# .clean-pre: called before 'clean' target +# .clean-post: called after 'clean' target +# .clobber-pre: called before 'clobber' target +# .clobber-post: called after 'clobber' target +# .all-pre: called before 'all' target +# .all-post: called after 'all' target +# .help-pre: called before 'help' target +# .help-post: called after 'help' target +# +# Targets beginning with '.' are not intended to be called on their own. +# +# Main targets can be executed directly, and they are: +# +# build build a specific configuration +# clean remove built files from a configuration +# clobber remove all built files +# all build all configurations +# help print help mesage +# +# Targets .build-impl, .clean-impl, .clobber-impl, .all-impl, and +# .help-impl are implemented in nbproject/makefile-impl.mk. +# +# Available make variables: +# +# CND_BASEDIR base directory for relative paths +# CND_DISTDIR default top distribution directory (build artifacts) +# CND_BUILDDIR default top build directory (object files, ...) +# CONF name of current configuration +# CND_PLATFORM_${CONF} platform name (current configuration) +# CND_ARTIFACT_DIR_${CONF} directory of build artifact (current configuration) +# CND_ARTIFACT_NAME_${CONF} name of build artifact (current configuration) +# CND_ARTIFACT_PATH_${CONF} path to build artifact (current configuration) +# CND_PACKAGE_DIR_${CONF} directory of package (current configuration) +# CND_PACKAGE_NAME_${CONF} name of package (current configuration) +# CND_PACKAGE_PATH_${CONF} path to package (current configuration) +# +# NOCDDL + + +# Environment +MKDIR=mkdir +CP=cp +CCADMIN=CCadmin + + +# build +build: .build-post + +.build-pre: +# Add your pre 'build' code here... + +.build-post: .build-impl +# Add your post 'build' code here... + + +# clean +clean: .clean-post + +.clean-pre: +# Add your pre 'clean' code here... + +.clean-post: .clean-impl +# Add your post 'clean' code here... + + +# clobber +clobber: .clobber-post + +.clobber-pre: +# Add your pre 'clobber' code here... + +.clobber-post: .clobber-impl +# Add your post 'clobber' code here... + + +# all +all: .all-post + +.all-pre: +# Add your pre 'all' code here... + +.all-post: .all-impl +# Add your post 'all' code here... + + +# build tests +build-tests: .build-tests-post + +.build-tests-pre: +# Add your pre 'build-tests' code here... + +.build-tests-post: .build-tests-impl +# Add your post 'build-tests' code here... + + +# run tests +test: .test-post + +.test-pre: build-tests +# Add your pre 'test' code here... + +.test-post: .test-impl +# Add your post 'test' code here... + + +# help +help: .help-post + +.help-pre: +# Add your pre 'help' code here... + +.help-post: .help-impl +# Add your post 'help' code here... + + + +# include project implementation makefile +include nbproject/Makefile-impl.mk + +# include project make variables +include nbproject/Makefile-variables.mk diff --git a/README.md b/README.md new file mode 100644 index 0000000..743754f --- /dev/null +++ b/README.md @@ -0,0 +1,5 @@ +PMP7 is a small utility that listens to session DBus signals sent by POD7 utility to control an MPRIS compliant media player by a foot pedal. + +Each pedal event can be assigned a unique action on the command line. A backend media player must be specified. + +Work done as a hobbyist with NetBeans, targeting GNU/Linux OS. diff --git a/globals.h b/globals.h new file mode 100644 index 0000000..2bf08fc --- /dev/null +++ b/globals.h @@ -0,0 +1,28 @@ +/* + * File: globals.h + * Author: SET - nmset@netcourrier.com + * License : GPL V2 + * + * Created on 10 décembre 2017, 20:27 + */ + +#ifndef GLOBALS_H +#define GLOBALS_H + +#define _APPNAME_ "PMP7" // Pedal control for Media Player +#define _APP_DESCRIPTION_ "Controls media playback by foot pedal" +#define _VERSION_ "1" +#define _AUTHOR_ "SET - nmset@netcourrier.com" +#define _ABOUT_ string(_APPNAME_) + string(" - version ") + string(_VERSION_) \ + + string(" - ") + string(_APP_DESCRIPTION_) + _DOT_ \ + + string("\nAuthor : ") + string(_AUTHOR_) \ + + string("\nLicense : GPL v2") + +#define _DOT_ "." +#define _SPACE_ " " +#define _COMMA_ "," +#define _COLON_ ":" +#define _NL_ "\n" + +#endif /* GLOBALS_H */ + diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..5b2bf02 --- /dev/null +++ b/main.cpp @@ -0,0 +1,133 @@ +/* + * File: main.cpp + * Author: SET - nmset@netcourrier.com + * License : GPL V2 + * + * Created on 10 décembre 2017, 16:24 + */ + +// Pedal controlled Media Player + +#include +#include +#include +#include +#include "globals.h" +#include "DBusPODProxy.h" + +using namespace std; +namespace po = boost::program_options; + +DBusPODProxy * g_pod7Proxy; +DBus::BusDispatcher g_dispatcher; +bool g_verbose = false; +string g_backend = ""; +uint g_play = 4; +uint g_fastforward = 2; +uint g_rewind = 1; +uint g_autorewind = 1500; + +void signalhandler(int sn) +{ + if (g_verbose) + cout << "Application signaled to exit." << endl; + delete g_pod7Proxy; + exit(0); +} + +bool ManageParams(int argc, char** argv) +{ + try + { + po::options_description desc(_ABOUT_); + desc.add_options() + ("help,h", "Print help messages.") + ("backend,b", po::value(&g_backend), "Media player : vlc, dragonplayer, xmms2...") + ("verbose,v", "Show some messages on stdout, namely, signaled pedal codes.") + ("play,p", po::value(&g_play), "Pedal code for - default : 4, unsigned.") + ("fastforward,f", po::value(&g_fastforward), "Pedal code for - default : 2, unsigned.") + ("rewind,r", po::value(&g_play), "Pedal code for - default : 1, unsigned.") + ("autorewind,a", po::value(&g_autorewind), "Automatically rewind for n milliseconds when playback stops - default : 1500, unsigned."); + + po::variables_map vm; + try + { + po::store(po::parse_command_line(argc, argv, desc), vm); + po::notify(vm); + if (vm.count("help")) + { + cout << desc << endl; + return false; + } + if (!vm.count("backend")) + { + cout << desc << endl; + return false; + } + if (g_rewind == g_play + || g_rewind == g_fastforward + || g_play == g_fastforward) + { + cout << "Declared pedal codes are inconsistent. A pedal code should identify a unique action." << endl; + return false; + } + if (vm.count("verbose")) + { + g_verbose = true; + } + } + catch (po::error& eb) + { + cerr << "Error : " << eb.what() << endl; + return false; + } + } + catch (exception& e) + { + cerr << "Error : " << e.what() << endl; + return false; + } + return true; +} + +bool StartPOD7Proxy() +{ + DBus::Connection bus = DBus::Connection::SessionBus(); + try + { + g_pod7Proxy = new DBusPODProxy(bus, "pedal.event"); + return true; + } + catch (DBus::Error e) + { + delete g_pod7Proxy; + cout << e.message() << _NL_ << e.name() << endl; + ; + } + return false; +} + +int main(int argc, char** argv) +{ + if (!ManageParams(argc, argv)) + return 0; + signal(SIGINT, signalhandler); + signal(SIGTERM, signalhandler); + DBus::_init_threading(); + DBus::default_dispatcher = &g_dispatcher; + if (!StartPOD7Proxy()) + { + cout << "Could not listen to pedal events." << endl; + return 0; + } + + // Any better way to do that ? + while (true) + sleep(84600); + return 0; +} + +/* + dbusxx-introspect /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.vlc + dbusxx-introspect /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.dragonplayer + */ \ No newline at end of file diff --git a/mpris_proxy.hpp b/mpris_proxy.hpp new file mode 100644 index 0000000..f1d8a3c --- /dev/null +++ b/mpris_proxy.hpp @@ -0,0 +1,730 @@ + +/* + * This file was automatically generated by dbusxx-xml2cpp; DO NOT EDIT! + */ + +#ifndef __dbusxx__mpris_proxy_hpp__PROXY_MARSHAL_H +#define __dbusxx__mpris_proxy_hpp__PROXY_MARSHAL_H + +#include +#include + +namespace org { +namespace mpris { + +class MediaPlayer2_proxy +: public ::DBus::InterfaceProxy +{ +public: + + MediaPlayer2_proxy() + : ::DBus::InterfaceProxy("org.mpris.MediaPlayer2") + { + } + +public: + + /* properties exported by this interface */ + const std::string Identity() { + ::DBus::CallMessage call ; + call.member("Get"); call.interface("org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + const std::string interface_name = "org.mpris.MediaPlayer2"; + const std::string property_name = "Identity"; + wi << interface_name; + wi << property_name; + ::DBus::Message ret = this->invoke_method (call); + ::DBus::MessageIter ri = ret.reader (); + ::DBus::Variant argout; + ri >> argout; + return argout; + }; + const std::string DesktopEntry() { + ::DBus::CallMessage call ; + call.member("Get"); call.interface("org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + const std::string interface_name = "org.mpris.MediaPlayer2"; + const std::string property_name = "DesktopEntry"; + wi << interface_name; + wi << property_name; + ::DBus::Message ret = this->invoke_method (call); + ::DBus::MessageIter ri = ret.reader (); + ::DBus::Variant argout; + ri >> argout; + return argout; + }; + const std::vector< std::string > SupportedMimeTypes() { + ::DBus::CallMessage call ; + call.member("Get"); call.interface("org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + const std::string interface_name = "org.mpris.MediaPlayer2"; + const std::string property_name = "SupportedMimeTypes"; + wi << interface_name; + wi << property_name; + ::DBus::Message ret = this->invoke_method (call); + ::DBus::MessageIter ri = ret.reader (); + ::DBus::Variant argout; + ri >> argout; + return argout; + }; + const std::vector< std::string > SupportedUriSchemes() { + ::DBus::CallMessage call ; + call.member("Get"); call.interface("org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + const std::string interface_name = "org.mpris.MediaPlayer2"; + const std::string property_name = "SupportedUriSchemes"; + wi << interface_name; + wi << property_name; + ::DBus::Message ret = this->invoke_method (call); + ::DBus::MessageIter ri = ret.reader (); + ::DBus::Variant argout; + ri >> argout; + return argout; + }; + const bool HasTrackList() { + ::DBus::CallMessage call ; + call.member("Get"); call.interface("org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + const std::string interface_name = "org.mpris.MediaPlayer2"; + const std::string property_name = "HasTrackList"; + wi << interface_name; + wi << property_name; + ::DBus::Message ret = this->invoke_method (call); + ::DBus::MessageIter ri = ret.reader (); + ::DBus::Variant argout; + ri >> argout; + return argout; + }; + const bool CanQuit() { + ::DBus::CallMessage call ; + call.member("Get"); call.interface("org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + const std::string interface_name = "org.mpris.MediaPlayer2"; + const std::string property_name = "CanQuit"; + wi << interface_name; + wi << property_name; + ::DBus::Message ret = this->invoke_method (call); + ::DBus::MessageIter ri = ret.reader (); + ::DBus::Variant argout; + ri >> argout; + return argout; + }; + const bool CanSetFullscreen() { + ::DBus::CallMessage call ; + call.member("Get"); call.interface("org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + const std::string interface_name = "org.mpris.MediaPlayer2"; + const std::string property_name = "CanSetFullscreen"; + wi << interface_name; + wi << property_name; + ::DBus::Message ret = this->invoke_method (call); + ::DBus::MessageIter ri = ret.reader (); + ::DBus::Variant argout; + ri >> argout; + return argout; + }; + const bool Fullscreen() { + ::DBus::CallMessage call ; + call.member("Get"); call.interface("org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + const std::string interface_name = "org.mpris.MediaPlayer2"; + const std::string property_name = "Fullscreen"; + wi << interface_name; + wi << property_name; + ::DBus::Message ret = this->invoke_method (call); + ::DBus::MessageIter ri = ret.reader (); + ::DBus::Variant argout; + ri >> argout; + return argout; + }; + void Fullscreen( const bool & input) { + ::DBus::CallMessage call ; + call.member("Set"); call.interface( "org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + ::DBus::Variant value; + ::DBus::MessageIter vi = value.writer (); + vi << input; + const std::string interface_name = "org.mpris.MediaPlayer2"; + const std::string property_name = "Fullscreen"; + wi << interface_name; + wi << property_name; + wi << value; + ::DBus::Message ret = this->invoke_method (call); + }; + const bool CanRaise() { + ::DBus::CallMessage call ; + call.member("Get"); call.interface("org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + const std::string interface_name = "org.mpris.MediaPlayer2"; + const std::string property_name = "CanRaise"; + wi << interface_name; + wi << property_name; + ::DBus::Message ret = this->invoke_method (call); + ::DBus::MessageIter ri = ret.reader (); + ::DBus::Variant argout; + ri >> argout; + return argout; + }; +public: + + /* methods exported by this interface, + * this functions will invoke the corresponding methods on the remote objects + */ + void Quit() + { + ::DBus::CallMessage call; + call.member("Quit"); + ::DBus::Message ret = invoke_method (call); + } + + void Raise() + { + ::DBus::CallMessage call; + call.member("Raise"); + ::DBus::Message ret = invoke_method (call); + } + + +public: + + /* signal handlers for this interface + */ + +private: + + /* unmarshalers (to unpack the DBus message before calling the actual signal handler) + */ +}; + +} } +namespace org { +namespace mpris { +namespace MediaPlayer2 { + +class Player_proxy +: public ::DBus::InterfaceProxy +{ +public: + + Player_proxy() + : ::DBus::InterfaceProxy("org.mpris.MediaPlayer2.Player") + { + } + +public: + + /* properties exported by this interface */ + const std::map< std::string, ::DBus::Variant > Metadata() { + ::DBus::CallMessage call ; + call.member("Get"); call.interface("org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + const std::string interface_name = "org.mpris.MediaPlayer2.Player"; + const std::string property_name = "Metadata"; + wi << interface_name; + wi << property_name; + ::DBus::Message ret = this->invoke_method (call); + ::DBus::MessageIter ri = ret.reader (); + ::DBus::Variant argout; + ri >> argout; + return argout; + }; + const std::string PlaybackStatus() { + ::DBus::CallMessage call ; + call.member("Get"); call.interface("org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + const std::string interface_name = "org.mpris.MediaPlayer2.Player"; + const std::string property_name = "PlaybackStatus"; + wi << interface_name; + wi << property_name; + ::DBus::Message ret = this->invoke_method (call); + ::DBus::MessageIter ri = ret.reader (); + ::DBus::Variant argout; + ri >> argout; + return argout; + }; + const std::string LoopStatus() { + ::DBus::CallMessage call ; + call.member("Get"); call.interface("org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + const std::string interface_name = "org.mpris.MediaPlayer2.Player"; + const std::string property_name = "LoopStatus"; + wi << interface_name; + wi << property_name; + ::DBus::Message ret = this->invoke_method (call); + ::DBus::MessageIter ri = ret.reader (); + ::DBus::Variant argout; + ri >> argout; + return argout; + }; + void LoopStatus( const std::string & input) { + ::DBus::CallMessage call ; + call.member("Set"); call.interface( "org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + ::DBus::Variant value; + ::DBus::MessageIter vi = value.writer (); + vi << input; + const std::string interface_name = "org.mpris.MediaPlayer2.Player"; + const std::string property_name = "LoopStatus"; + wi << interface_name; + wi << property_name; + wi << value; + ::DBus::Message ret = this->invoke_method (call); + }; + const double Volume() { + ::DBus::CallMessage call ; + call.member("Get"); call.interface("org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + const std::string interface_name = "org.mpris.MediaPlayer2.Player"; + const std::string property_name = "Volume"; + wi << interface_name; + wi << property_name; + ::DBus::Message ret = this->invoke_method (call); + ::DBus::MessageIter ri = ret.reader (); + ::DBus::Variant argout; + ri >> argout; + return argout; + }; + void Volume( const double & input) { + ::DBus::CallMessage call ; + call.member("Set"); call.interface( "org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + ::DBus::Variant value; + ::DBus::MessageIter vi = value.writer (); + vi << input; + const std::string interface_name = "org.mpris.MediaPlayer2.Player"; + const std::string property_name = "Volume"; + wi << interface_name; + wi << property_name; + wi << value; + ::DBus::Message ret = this->invoke_method (call); + }; + const double Shuffle() { + ::DBus::CallMessage call ; + call.member("Get"); call.interface("org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + const std::string interface_name = "org.mpris.MediaPlayer2.Player"; + const std::string property_name = "Shuffle"; + wi << interface_name; + wi << property_name; + ::DBus::Message ret = this->invoke_method (call); + ::DBus::MessageIter ri = ret.reader (); + ::DBus::Variant argout; + ri >> argout; + return argout; + }; + void Shuffle( const double & input) { + ::DBus::CallMessage call ; + call.member("Set"); call.interface( "org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + ::DBus::Variant value; + ::DBus::MessageIter vi = value.writer (); + vi << input; + const std::string interface_name = "org.mpris.MediaPlayer2.Player"; + const std::string property_name = "Shuffle"; + wi << interface_name; + wi << property_name; + wi << value; + ::DBus::Message ret = this->invoke_method (call); + }; + const int32_t Position() { + ::DBus::CallMessage call ; + call.member("Get"); call.interface("org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + const std::string interface_name = "org.mpris.MediaPlayer2.Player"; + const std::string property_name = "Position"; + wi << interface_name; + wi << property_name; + ::DBus::Message ret = this->invoke_method (call); + ::DBus::MessageIter ri = ret.reader (); + ::DBus::Variant argout; + ri >> argout; + return argout; + }; + const double Rate() { + ::DBus::CallMessage call ; + call.member("Get"); call.interface("org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + const std::string interface_name = "org.mpris.MediaPlayer2.Player"; + const std::string property_name = "Rate"; + wi << interface_name; + wi << property_name; + ::DBus::Message ret = this->invoke_method (call); + ::DBus::MessageIter ri = ret.reader (); + ::DBus::Variant argout; + ri >> argout; + return argout; + }; + void Rate( const double & input) { + ::DBus::CallMessage call ; + call.member("Set"); call.interface( "org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + ::DBus::Variant value; + ::DBus::MessageIter vi = value.writer (); + vi << input; + const std::string interface_name = "org.mpris.MediaPlayer2.Player"; + const std::string property_name = "Rate"; + wi << interface_name; + wi << property_name; + wi << value; + ::DBus::Message ret = this->invoke_method (call); + }; + const double MinimumRate() { + ::DBus::CallMessage call ; + call.member("Get"); call.interface("org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + const std::string interface_name = "org.mpris.MediaPlayer2.Player"; + const std::string property_name = "MinimumRate"; + wi << interface_name; + wi << property_name; + ::DBus::Message ret = this->invoke_method (call); + ::DBus::MessageIter ri = ret.reader (); + ::DBus::Variant argout; + ri >> argout; + return argout; + }; + void MinimumRate( const double & input) { + ::DBus::CallMessage call ; + call.member("Set"); call.interface( "org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + ::DBus::Variant value; + ::DBus::MessageIter vi = value.writer (); + vi << input; + const std::string interface_name = "org.mpris.MediaPlayer2.Player"; + const std::string property_name = "MinimumRate"; + wi << interface_name; + wi << property_name; + wi << value; + ::DBus::Message ret = this->invoke_method (call); + }; + const double MaximumRate() { + ::DBus::CallMessage call ; + call.member("Get"); call.interface("org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + const std::string interface_name = "org.mpris.MediaPlayer2.Player"; + const std::string property_name = "MaximumRate"; + wi << interface_name; + wi << property_name; + ::DBus::Message ret = this->invoke_method (call); + ::DBus::MessageIter ri = ret.reader (); + ::DBus::Variant argout; + ri >> argout; + return argout; + }; + void MaximumRate( const double & input) { + ::DBus::CallMessage call ; + call.member("Set"); call.interface( "org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + ::DBus::Variant value; + ::DBus::MessageIter vi = value.writer (); + vi << input; + const std::string interface_name = "org.mpris.MediaPlayer2.Player"; + const std::string property_name = "MaximumRate"; + wi << interface_name; + wi << property_name; + wi << value; + ::DBus::Message ret = this->invoke_method (call); + }; + const bool CanControl() { + ::DBus::CallMessage call ; + call.member("Get"); call.interface("org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + const std::string interface_name = "org.mpris.MediaPlayer2.Player"; + const std::string property_name = "CanControl"; + wi << interface_name; + wi << property_name; + ::DBus::Message ret = this->invoke_method (call); + ::DBus::MessageIter ri = ret.reader (); + ::DBus::Variant argout; + ri >> argout; + return argout; + }; + const bool CanPlay() { + ::DBus::CallMessage call ; + call.member("Get"); call.interface("org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + const std::string interface_name = "org.mpris.MediaPlayer2.Player"; + const std::string property_name = "CanPlay"; + wi << interface_name; + wi << property_name; + ::DBus::Message ret = this->invoke_method (call); + ::DBus::MessageIter ri = ret.reader (); + ::DBus::Variant argout; + ri >> argout; + return argout; + }; + const bool CanPause() { + ::DBus::CallMessage call ; + call.member("Get"); call.interface("org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + const std::string interface_name = "org.mpris.MediaPlayer2.Player"; + const std::string property_name = "CanPause"; + wi << interface_name; + wi << property_name; + ::DBus::Message ret = this->invoke_method (call); + ::DBus::MessageIter ri = ret.reader (); + ::DBus::Variant argout; + ri >> argout; + return argout; + }; + const bool CanSeek() { + ::DBus::CallMessage call ; + call.member("Get"); call.interface("org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + const std::string interface_name = "org.mpris.MediaPlayer2.Player"; + const std::string property_name = "CanSeek"; + wi << interface_name; + wi << property_name; + ::DBus::Message ret = this->invoke_method (call); + ::DBus::MessageIter ri = ret.reader (); + ::DBus::Variant argout; + ri >> argout; + return argout; + }; +public: + + /* methods exported by this interface, + * this functions will invoke the corresponding methods on the remote objects + */ + void Previous() + { + ::DBus::CallMessage call; + call.member("Previous"); + ::DBus::Message ret = invoke_method (call); + } + + void Next() + { + ::DBus::CallMessage call; + call.member("Next"); + ::DBus::Message ret = invoke_method (call); + } + + void Stop() + { + ::DBus::CallMessage call; + call.member("Stop"); + ::DBus::Message ret = invoke_method (call); + } + + void Play() + { + ::DBus::CallMessage call; + call.member("Play"); + ::DBus::Message ret = invoke_method (call); + } + + void Pause() + { + ::DBus::CallMessage call; + call.member("Pause"); + ::DBus::Message ret = invoke_method (call); + } + + void PlayPause() + { + ::DBus::CallMessage call; + call.member("PlayPause"); + ::DBus::Message ret = invoke_method (call); + } + + void Seek(const int64_t& argin0) + { + ::DBus::CallMessage call; + ::DBus::MessageIter wi = call.writer(); + + wi << argin0; + call.member("Seek"); + ::DBus::Message ret = invoke_method (call); + } + + void OpenUri(const std::string& argin0) + { + ::DBus::CallMessage call; + ::DBus::MessageIter wi = call.writer(); + + wi << argin0; + call.member("OpenUri"); + ::DBus::Message ret = invoke_method (call); + } + + void SetPosition(const ::DBus::Path& argin0, const int64_t& argin1) + { + ::DBus::CallMessage call; + ::DBus::MessageIter wi = call.writer(); + + wi << argin0; + wi << argin1; + call.member("SetPosition"); + ::DBus::Message ret = invoke_method (call); + } + + +public: + + /* signal handlers for this interface + */ + +private: + + /* unmarshalers (to unpack the DBus message before calling the actual signal handler) + */ +}; + +} } } +namespace org { +namespace mpris { +namespace MediaPlayer2 { + +class TrackList_proxy +: public ::DBus::InterfaceProxy +{ +public: + + TrackList_proxy() + : ::DBus::InterfaceProxy("org.mpris.MediaPlayer2.TrackList") + { + connect_signal(TrackList_proxy, TrackListReplaced, _TrackListReplaced_stub); + connect_signal(TrackList_proxy, TrackAdded, _TrackAdded_stub); + connect_signal(TrackList_proxy, TrackRemoved, _TrackRemoved_stub); + connect_signal(TrackList_proxy, TrackMetadataChanged, _TrackMetadataChanged_stub); + } + +public: + + /* properties exported by this interface */ + const std::vector< ::DBus::Path > Tracks() { + ::DBus::CallMessage call ; + call.member("Get"); call.interface("org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + const std::string interface_name = "org.mpris.MediaPlayer2.TrackList"; + const std::string property_name = "Tracks"; + wi << interface_name; + wi << property_name; + ::DBus::Message ret = this->invoke_method (call); + ::DBus::MessageIter ri = ret.reader (); + ::DBus::Variant argout; + ri >> argout; + return argout; + }; + const bool CanEditTracks() { + ::DBus::CallMessage call ; + call.member("Get"); call.interface("org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + const std::string interface_name = "org.mpris.MediaPlayer2.TrackList"; + const std::string property_name = "CanEditTracks"; + wi << interface_name; + wi << property_name; + ::DBus::Message ret = this->invoke_method (call); + ::DBus::MessageIter ri = ret.reader (); + ::DBus::Variant argout; + ri >> argout; + return argout; + }; +public: + + /* methods exported by this interface, + * this functions will invoke the corresponding methods on the remote objects + */ + std::vector< std::map< std::string, ::DBus::Variant > > GetTracksMetadata(const std::vector< ::DBus::Path >& argin0) + { + ::DBus::CallMessage call; + ::DBus::MessageIter wi = call.writer(); + + wi << argin0; + call.member("GetTracksMetadata"); + ::DBus::Message ret = invoke_method (call); + ::DBus::MessageIter ri = ret.reader(); + + std::vector< std::map< std::string, ::DBus::Variant > > argout; + ri >> argout; + return argout; + } + + void AddTrack(const std::string& argin0, const ::DBus::Path& argin1, const bool& argin2) + { + ::DBus::CallMessage call; + ::DBus::MessageIter wi = call.writer(); + + wi << argin0; + wi << argin1; + wi << argin2; + call.member("AddTrack"); + ::DBus::Message ret = invoke_method (call); + } + + void RemoveTrack(const ::DBus::Path& argin0) + { + ::DBus::CallMessage call; + ::DBus::MessageIter wi = call.writer(); + + wi << argin0; + call.member("RemoveTrack"); + ::DBus::Message ret = invoke_method (call); + } + + void GoTo(const ::DBus::Path& argin0) + { + ::DBus::CallMessage call; + ::DBus::MessageIter wi = call.writer(); + + wi << argin0; + call.member("GoTo"); + ::DBus::Message ret = invoke_method (call); + } + + +public: + + /* signal handlers for this interface + */ + virtual void TrackListReplaced(const std::vector< ::DBus::Path >& argin0, const ::DBus::Path& argin1) = 0; + virtual void TrackAdded(const std::map< std::string, ::DBus::Variant >& argin0, const ::DBus::Path& argin1) = 0; + virtual void TrackRemoved(const ::DBus::Path& argin0) = 0; + virtual void TrackMetadataChanged(const ::DBus::Path& argin0, const std::map< std::string, ::DBus::Variant >& argin1) = 0; + +private: + + /* unmarshalers (to unpack the DBus message before calling the actual signal handler) + */ + void _TrackListReplaced_stub(const ::DBus::SignalMessage &sig) + { + ::DBus::MessageIter ri = sig.reader(); + + std::vector< ::DBus::Path > arg0; + ri >> arg0; + ::DBus::Path arg1; + ri >> arg1; + TrackListReplaced(arg0, arg1); + } + void _TrackAdded_stub(const ::DBus::SignalMessage &sig) + { + ::DBus::MessageIter ri = sig.reader(); + + std::map< std::string, ::DBus::Variant > arg0; + ri >> arg0; + ::DBus::Path arg1; + ri >> arg1; + TrackAdded(arg0, arg1); + } + void _TrackRemoved_stub(const ::DBus::SignalMessage &sig) + { + ::DBus::MessageIter ri = sig.reader(); + + ::DBus::Path arg0; + ri >> arg0; + TrackRemoved(arg0); + } + void _TrackMetadataChanged_stub(const ::DBus::SignalMessage &sig) + { + ::DBus::MessageIter ri = sig.reader(); + + ::DBus::Path arg0; + ri >> arg0; + std::map< std::string, ::DBus::Variant > arg1; + ri >> arg1; + TrackMetadataChanged(arg0, arg1); + } +}; + +} } } +#endif //__dbusxx__mpris_proxy_hpp__PROXY_MARSHAL_H diff --git a/mpris_proxy.xml b/mpris_proxy.xml new file mode 100644 index 0000000..b578b1c --- /dev/null +++ b/mpris_proxy.xml @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/nbproject/Makefile-Debug.mk b/nbproject/Makefile-Debug.mk new file mode 100644 index 0000000..af10b6c --- /dev/null +++ b/nbproject/Makefile-Debug.mk @@ -0,0 +1,95 @@ +# +# Generated Makefile - do not edit! +# +# Edit the Makefile in the project folder instead (../Makefile). Each target +# has a -pre and a -post target defined where you can add customized code. +# +# This makefile implements configuration specific macros and targets. + + +# Environment +MKDIR=mkdir +CP=cp +GREP=grep +NM=nm +CCADMIN=CCadmin +RANLIB=ranlib +CC=gcc +CCC=g++ +CXX=g++ +FC=gfortran +AS=as + +# Macros +CND_PLATFORM=GNU-Linux +CND_DLIB_EXT=so +CND_CONF=Debug +CND_DISTDIR=dist +CND_BUILDDIR=build + +# Include project Makefile +include Makefile + +# Object Directory +OBJECTDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM} + +# Object Files +OBJECTFILES= \ + ${OBJECTDIR}/DBusMprisProxy.o \ + ${OBJECTDIR}/DBusPODProxy.o \ + ${OBJECTDIR}/main.o + + +# C Compiler Flags +CFLAGS= + +# CC Compiler Flags +CCFLAGS= +CXXFLAGS= + +# Fortran Compiler Flags +FFLAGS= + +# Assembler Flags +ASFLAGS= + +# Link Libraries and Options +LDLIBSOPTIONS=-ldbus-c++-1 -lboost_program_options + +# Build Targets +.build-conf: ${BUILD_SUBPROJECTS} + "${MAKE}" -f nbproject/Makefile-${CND_CONF}.mk ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/pmp7 + +${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/pmp7: ${OBJECTFILES} + ${MKDIR} -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM} + ${LINK.cc} -o ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/pmp7 ${OBJECTFILES} ${LDLIBSOPTIONS} -pthread + +${OBJECTDIR}/DBusMprisProxy.o: DBusMprisProxy.cpp + ${MKDIR} -p ${OBJECTDIR} + ${RM} "$@.d" + $(COMPILE.cc) -g -I/usr/include/dbus-c++-1 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/DBusMprisProxy.o DBusMprisProxy.cpp + +${OBJECTDIR}/DBusPODProxy.o: DBusPODProxy.cpp + ${MKDIR} -p ${OBJECTDIR} + ${RM} "$@.d" + $(COMPILE.cc) -g -I/usr/include/dbus-c++-1 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/DBusPODProxy.o DBusPODProxy.cpp + +${OBJECTDIR}/main.o: main.cpp + ${MKDIR} -p ${OBJECTDIR} + ${RM} "$@.d" + $(COMPILE.cc) -g -I/usr/include/dbus-c++-1 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/main.o main.cpp + +# Subprojects +.build-subprojects: + +# Clean Targets +.clean-conf: ${CLEAN_SUBPROJECTS} + ${RM} -r ${CND_BUILDDIR}/${CND_CONF} + +# Subprojects +.clean-subprojects: + +# Enable dependency checking +.dep.inc: .depcheck-impl + +include .dep.inc diff --git a/nbproject/Makefile-Release.mk b/nbproject/Makefile-Release.mk new file mode 100644 index 0000000..448f0a3 --- /dev/null +++ b/nbproject/Makefile-Release.mk @@ -0,0 +1,95 @@ +# +# Generated Makefile - do not edit! +# +# Edit the Makefile in the project folder instead (../Makefile). Each target +# has a -pre and a -post target defined where you can add customized code. +# +# This makefile implements configuration specific macros and targets. + + +# Environment +MKDIR=mkdir +CP=cp +GREP=grep +NM=nm +CCADMIN=CCadmin +RANLIB=ranlib +CC=gcc +CCC=g++ +CXX=g++ +FC=gfortran +AS=as + +# Macros +CND_PLATFORM=GNU-Linux +CND_DLIB_EXT=so +CND_CONF=Release +CND_DISTDIR=dist +CND_BUILDDIR=build + +# Include project Makefile +include Makefile + +# Object Directory +OBJECTDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM} + +# Object Files +OBJECTFILES= \ + ${OBJECTDIR}/DBusMprisProxy.o \ + ${OBJECTDIR}/DBusPODProxy.o \ + ${OBJECTDIR}/main.o + + +# C Compiler Flags +CFLAGS= + +# CC Compiler Flags +CCFLAGS= +CXXFLAGS= + +# Fortran Compiler Flags +FFLAGS= + +# Assembler Flags +ASFLAGS= + +# Link Libraries and Options +LDLIBSOPTIONS=-ldbus-c++-1 -lboost_program_options + +# Build Targets +.build-conf: ${BUILD_SUBPROJECTS} + "${MAKE}" -f nbproject/Makefile-${CND_CONF}.mk ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/pmp7 + +${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/pmp7: ${OBJECTFILES} + ${MKDIR} -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM} + ${LINK.cc} -o ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/pmp7 ${OBJECTFILES} ${LDLIBSOPTIONS} -pthread + +${OBJECTDIR}/DBusMprisProxy.o: DBusMprisProxy.cpp + ${MKDIR} -p ${OBJECTDIR} + ${RM} "$@.d" + $(COMPILE.cc) -O2 -I/usr/include/dbus-c++-1 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/DBusMprisProxy.o DBusMprisProxy.cpp + +${OBJECTDIR}/DBusPODProxy.o: DBusPODProxy.cpp + ${MKDIR} -p ${OBJECTDIR} + ${RM} "$@.d" + $(COMPILE.cc) -O2 -I/usr/include/dbus-c++-1 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/DBusPODProxy.o DBusPODProxy.cpp + +${OBJECTDIR}/main.o: main.cpp + ${MKDIR} -p ${OBJECTDIR} + ${RM} "$@.d" + $(COMPILE.cc) -O2 -I/usr/include/dbus-c++-1 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/main.o main.cpp + +# Subprojects +.build-subprojects: + +# Clean Targets +.clean-conf: ${CLEAN_SUBPROJECTS} + ${RM} -r ${CND_BUILDDIR}/${CND_CONF} + +# Subprojects +.clean-subprojects: + +# Enable dependency checking +.dep.inc: .depcheck-impl + +include .dep.inc diff --git a/nbproject/Makefile-impl.mk b/nbproject/Makefile-impl.mk new file mode 100644 index 0000000..86de2ec --- /dev/null +++ b/nbproject/Makefile-impl.mk @@ -0,0 +1,133 @@ +# +# Generated Makefile - do not edit! +# +# Edit the Makefile in the project folder instead (../Makefile). Each target +# has a pre- and a post- target defined where you can add customization code. +# +# This makefile implements macros and targets common to all configurations. +# +# NOCDDL + + +# Building and Cleaning subprojects are done by default, but can be controlled with the SUB +# macro. If SUB=no, subprojects will not be built or cleaned. The following macro +# statements set BUILD_SUB-CONF and CLEAN_SUB-CONF to .build-reqprojects-conf +# and .clean-reqprojects-conf unless SUB has the value 'no' +SUB_no=NO +SUBPROJECTS=${SUB_${SUB}} +BUILD_SUBPROJECTS_=.build-subprojects +BUILD_SUBPROJECTS_NO= +BUILD_SUBPROJECTS=${BUILD_SUBPROJECTS_${SUBPROJECTS}} +CLEAN_SUBPROJECTS_=.clean-subprojects +CLEAN_SUBPROJECTS_NO= +CLEAN_SUBPROJECTS=${CLEAN_SUBPROJECTS_${SUBPROJECTS}} + + +# Project Name +PROJECTNAME=PMP7 + +# Active Configuration +DEFAULTCONF=Debug +CONF=${DEFAULTCONF} + +# All Configurations +ALLCONFS=Debug Release + + +# build +.build-impl: .build-pre .validate-impl .depcheck-impl + @#echo "=> Running $@... Configuration=$(CONF)" + "${MAKE}" -f nbproject/Makefile-${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .build-conf + + +# clean +.clean-impl: .clean-pre .validate-impl .depcheck-impl + @#echo "=> Running $@... Configuration=$(CONF)" + "${MAKE}" -f nbproject/Makefile-${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .clean-conf + + +# clobber +.clobber-impl: .clobber-pre .depcheck-impl + @#echo "=> Running $@..." + for CONF in ${ALLCONFS}; \ + do \ + "${MAKE}" -f nbproject/Makefile-$${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .clean-conf; \ + done + +# all +.all-impl: .all-pre .depcheck-impl + @#echo "=> Running $@..." + for CONF in ${ALLCONFS}; \ + do \ + "${MAKE}" -f nbproject/Makefile-$${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .build-conf; \ + done + +# build tests +.build-tests-impl: .build-impl .build-tests-pre + @#echo "=> Running $@... Configuration=$(CONF)" + "${MAKE}" -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .build-tests-conf + +# run tests +.test-impl: .build-tests-impl .test-pre + @#echo "=> Running $@... Configuration=$(CONF)" + "${MAKE}" -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .test-conf + +# dependency checking support +.depcheck-impl: + @echo "# This code depends on make tool being used" >.dep.inc + @if [ -n "${MAKE_VERSION}" ]; then \ + echo "DEPFILES=\$$(wildcard \$$(addsuffix .d, \$${OBJECTFILES} \$${TESTOBJECTFILES}))" >>.dep.inc; \ + echo "ifneq (\$${DEPFILES},)" >>.dep.inc; \ + echo "include \$${DEPFILES}" >>.dep.inc; \ + echo "endif" >>.dep.inc; \ + else \ + echo ".KEEP_STATE:" >>.dep.inc; \ + echo ".KEEP_STATE_FILE:.make.state.\$${CONF}" >>.dep.inc; \ + fi + +# configuration validation +.validate-impl: + @if [ ! -f nbproject/Makefile-${CONF}.mk ]; \ + then \ + echo ""; \ + echo "Error: can not find the makefile for configuration '${CONF}' in project ${PROJECTNAME}"; \ + echo "See 'make help' for details."; \ + echo "Current directory: " `pwd`; \ + echo ""; \ + fi + @if [ ! -f nbproject/Makefile-${CONF}.mk ]; \ + then \ + exit 1; \ + fi + + +# help +.help-impl: .help-pre + @echo "This makefile supports the following configurations:" + @echo " ${ALLCONFS}" + @echo "" + @echo "and the following targets:" + @echo " build (default target)" + @echo " clean" + @echo " clobber" + @echo " all" + @echo " help" + @echo "" + @echo "Makefile Usage:" + @echo " make [CONF=] [SUB=no] build" + @echo " make [CONF=] [SUB=no] clean" + @echo " make [SUB=no] clobber" + @echo " make [SUB=no] all" + @echo " make help" + @echo "" + @echo "Target 'build' will build a specific configuration and, unless 'SUB=no'," + @echo " also build subprojects." + @echo "Target 'clean' will clean a specific configuration and, unless 'SUB=no'," + @echo " also clean subprojects." + @echo "Target 'clobber' will remove all built files from all configurations and," + @echo " unless 'SUB=no', also from subprojects." + @echo "Target 'all' will will build all configurations and, unless 'SUB=no'," + @echo " also build subprojects." + @echo "Target 'help' prints this message." + @echo "" + diff --git a/nbproject/Makefile-variables.mk b/nbproject/Makefile-variables.mk new file mode 100644 index 0000000..01944a7 --- /dev/null +++ b/nbproject/Makefile-variables.mk @@ -0,0 +1,35 @@ +# +# Generated - do not edit! +# +# NOCDDL +# +CND_BASEDIR=`pwd` +CND_BUILDDIR=build +CND_DISTDIR=dist +# Debug configuration +CND_PLATFORM_Debug=GNU-Linux +CND_ARTIFACT_DIR_Debug=dist/Debug/GNU-Linux +CND_ARTIFACT_NAME_Debug=pmp7 +CND_ARTIFACT_PATH_Debug=dist/Debug/GNU-Linux/pmp7 +CND_PACKAGE_DIR_Debug=dist/Debug/GNU-Linux/package +CND_PACKAGE_NAME_Debug=pmp7.tar +CND_PACKAGE_PATH_Debug=dist/Debug/GNU-Linux/package/pmp7.tar +# Release configuration +CND_PLATFORM_Release=GNU-Linux +CND_ARTIFACT_DIR_Release=dist/Release/GNU-Linux +CND_ARTIFACT_NAME_Release=pmp7 +CND_ARTIFACT_PATH_Release=dist/Release/GNU-Linux/pmp7 +CND_PACKAGE_DIR_Release=dist/Release/GNU-Linux/package +CND_PACKAGE_NAME_Release=pmp7.tar +CND_PACKAGE_PATH_Release=dist/Release/GNU-Linux/package/pmp7.tar +# +# include compiler specific variables +# +# dmake command +ROOT:sh = test -f nbproject/private/Makefile-variables.mk || \ + (mkdir -p nbproject/private && touch nbproject/private/Makefile-variables.mk) +# +# gmake command +.PHONY: $(shell test -f nbproject/private/Makefile-variables.mk || (mkdir -p nbproject/private && touch nbproject/private/Makefile-variables.mk)) +# +include nbproject/private/Makefile-variables.mk diff --git a/nbproject/Package-Debug.bash b/nbproject/Package-Debug.bash new file mode 100644 index 0000000..d85bcfe --- /dev/null +++ b/nbproject/Package-Debug.bash @@ -0,0 +1,76 @@ +#!/bin/bash -x + +# +# Generated - do not edit! +# + +# Macros +TOP=`pwd` +CND_PLATFORM=GNU-Linux +CND_CONF=Debug +CND_DISTDIR=dist +CND_BUILDDIR=build +CND_DLIB_EXT=so +NBTMPDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM}/tmp-packaging +TMPDIRNAME=tmp-packaging +OUTPUT_PATH=${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/pmp7 +OUTPUT_BASENAME=pmp7 +PACKAGE_TOP_DIR=pmp7/ + +# Functions +function checkReturnCode +{ + rc=$? + if [ $rc != 0 ] + then + exit $rc + fi +} +function makeDirectory +# $1 directory path +# $2 permission (optional) +{ + mkdir -p "$1" + checkReturnCode + if [ "$2" != "" ] + then + chmod $2 "$1" + checkReturnCode + fi +} +function copyFileToTmpDir +# $1 from-file path +# $2 to-file path +# $3 permission +{ + cp "$1" "$2" + checkReturnCode + if [ "$3" != "" ] + then + chmod $3 "$2" + checkReturnCode + fi +} + +# Setup +cd "${TOP}" +mkdir -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package +rm -rf ${NBTMPDIR} +mkdir -p ${NBTMPDIR} + +# Copy files and create directories and links +cd "${TOP}" +makeDirectory "${NBTMPDIR}/pmp7/bin" +copyFileToTmpDir "${OUTPUT_PATH}" "${NBTMPDIR}/${PACKAGE_TOP_DIR}bin/${OUTPUT_BASENAME}" 0755 + + +# Generate tar file +cd "${TOP}" +rm -f ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/pmp7.tar +cd ${NBTMPDIR} +tar -vcf ../../../../${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/pmp7.tar * +checkReturnCode + +# Cleanup +cd "${TOP}" +rm -rf ${NBTMPDIR} diff --git a/nbproject/Package-Release.bash b/nbproject/Package-Release.bash new file mode 100644 index 0000000..639db23 --- /dev/null +++ b/nbproject/Package-Release.bash @@ -0,0 +1,76 @@ +#!/bin/bash -x + +# +# Generated - do not edit! +# + +# Macros +TOP=`pwd` +CND_PLATFORM=GNU-Linux +CND_CONF=Release +CND_DISTDIR=dist +CND_BUILDDIR=build +CND_DLIB_EXT=so +NBTMPDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM}/tmp-packaging +TMPDIRNAME=tmp-packaging +OUTPUT_PATH=${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/pmp7 +OUTPUT_BASENAME=pmp7 +PACKAGE_TOP_DIR=pmp7/ + +# Functions +function checkReturnCode +{ + rc=$? + if [ $rc != 0 ] + then + exit $rc + fi +} +function makeDirectory +# $1 directory path +# $2 permission (optional) +{ + mkdir -p "$1" + checkReturnCode + if [ "$2" != "" ] + then + chmod $2 "$1" + checkReturnCode + fi +} +function copyFileToTmpDir +# $1 from-file path +# $2 to-file path +# $3 permission +{ + cp "$1" "$2" + checkReturnCode + if [ "$3" != "" ] + then + chmod $3 "$2" + checkReturnCode + fi +} + +# Setup +cd "${TOP}" +mkdir -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package +rm -rf ${NBTMPDIR} +mkdir -p ${NBTMPDIR} + +# Copy files and create directories and links +cd "${TOP}" +makeDirectory "${NBTMPDIR}/pmp7/bin" +copyFileToTmpDir "${OUTPUT_PATH}" "${NBTMPDIR}/${PACKAGE_TOP_DIR}bin/${OUTPUT_BASENAME}" 0755 + + +# Generate tar file +cd "${TOP}" +rm -f ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/pmp7.tar +cd ${NBTMPDIR} +tar -vcf ../../../../${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/pmp7.tar * +checkReturnCode + +# Cleanup +cd "${TOP}" +rm -rf ${NBTMPDIR} diff --git a/nbproject/configurations.xml b/nbproject/configurations.xml new file mode 100644 index 0000000..258f60e --- /dev/null +++ b/nbproject/configurations.xml @@ -0,0 +1,138 @@ + + + + + DBusMprisProxy.h + DBusPODProxy.h + globals.h + mpris_proxy.hpp + pod_proxy.hpp + + + mpris_proxy.xml + pod_proxy.xml + + + DBusMprisProxy.cpp + DBusPODProxy.cpp + main.cpp + + + + + Makefile + + README.md + + Makefile + + + + default + true + false + + + + + /usr/include/dbus-c++-1 + + + + + dbus-c++-1 + boost_program_options + + -pthread + + + + + + + + + + + + + + + + + + + + + + + + + + + + default + true + false + + + + 5 + + + 5 + + /usr/include/dbus-c++-1 + + + + 5 + + + 5 + + + + dbus-c++-1 + boost_program_options + + -pthread + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/nbproject/private/Makefile-variables.mk b/nbproject/private/Makefile-variables.mk new file mode 100644 index 0000000..a64183e --- /dev/null +++ b/nbproject/private/Makefile-variables.mk @@ -0,0 +1,7 @@ +# +# Generated - do not edit! +# +# NOCDDL +# +# Debug configuration +# Release configuration diff --git a/nbproject/private/c_standard_headers_indexer.c b/nbproject/private/c_standard_headers_indexer.c new file mode 100644 index 0000000..c2548d2 --- /dev/null +++ b/nbproject/private/c_standard_headers_indexer.c @@ -0,0 +1,75 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 2016 Oracle and/or its affiliates. All rights reserved. + * + * Oracle and Java are registered trademarks of Oracle and/or its affiliates. + * Other names may be trademarks of their respective owners. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common + * Development and Distribution License("CDDL") (collectively, the + * "License"). You may not use this file except in compliance with the + * License. You can obtain a copy of the License at + * http://www.netbeans.org/cddl-gplv2.html + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the + * specific language governing permissions and limitations under the + * License. When distributing the software, include this License Header + * Notice in each file and include the License file at + * nbbuild/licenses/CDDL-GPL-2-CP. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the GPL Version 2 section of the License file that + * accompanied this code. If applicable, add the following below the + * License Header, with the fields enclosed by brackets [] replaced by + * your own identifying information: + * "Portions Copyrighted [year] [name of copyright owner]" + * + * If you wish your version of this file to be governed by only the CDDL + * or only the GPL Version 2, indicate your decision by adding + * "[Contributor] elects to include this software in this distribution + * under the [CDDL or GPL Version 2] license." If you do not indicate a + * single choice of license, a recipient has the option to distribute + * your version of this file under either the CDDL, the GPL Version 2 or + * to extend the choice of license to its licensees as provided above. + * However, if you add GPL Version 2 code and therefore, elected the GPL + * Version 2 license, then the option applies only if the new code is + * made subject to such option by the copyright holder. + * + * Contributor(s): + */ + +// List of standard headers was taken in http://en.cppreference.com/w/c/header + +#include // Conditionally compiled macro that compares its argument to zero +#include // Functions to determine the type contained in character data +#include // Macros reporting error conditions +#include // Limits of float types +#include // Sizes of basic types +#include // Localization utilities +#include // Common mathematics functions +#include // Nonlocal jumps +#include // Signal handling +#include // Variable arguments +#include // Common macro definitions +#include // Input/output +#include // String handling +#include // General utilities: memory management, program utilities, string conversions, random numbers +#include // Time/date utilities +#include // (since C95) Alternative operator spellings +#include // (since C95) Extended multibyte and wide character utilities +#include // (since C95) Wide character classification and mapping utilities +#ifdef _STDC_C99 +#include // (since C99) Complex number arithmetic +#include // (since C99) Floating-point environment +#include // (since C99) Format conversion of integer types +#include // (since C99) Boolean type +#include // (since C99) Fixed-width integer types +#include // (since C99) Type-generic math (macros wrapping math.h and complex.h) +#endif +#ifdef _STDC_C11 +#include // (since C11) alignas and alignof convenience macros +#include // (since C11) Atomic types +#include // (since C11) noreturn convenience macros +#include // (since C11) Thread library +#include // (since C11) UTF-16 and UTF-32 character utilities +#endif diff --git a/nbproject/private/configurations.xml b/nbproject/private/configurations.xml new file mode 100644 index 0000000..32b7898 --- /dev/null +++ b/nbproject/private/configurations.xml @@ -0,0 +1,73 @@ + + + Makefile + + + + localhost + 2 + + + + + + + + + + + + + + + gdb + + + + "${OUTPUT_PATH}" + "${OUTPUT_PATH}" -b vlc + + "${OUTPUT_PATH}" -b vlc + + true + 0 + 0 + + + + + + + localhost + 2 + + + + + + + + + + + + + + + gdb + + + + "${OUTPUT_PATH}" + + "${OUTPUT_PATH}" + + true + 0 + 0 + + + + + + diff --git a/nbproject/private/cpp_standard_headers_indexer.cpp b/nbproject/private/cpp_standard_headers_indexer.cpp new file mode 100644 index 0000000..04f6fa6 --- /dev/null +++ b/nbproject/private/cpp_standard_headers_indexer.cpp @@ -0,0 +1,135 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 2016 Oracle and/or its affiliates. All rights reserved. + * + * Oracle and Java are registered trademarks of Oracle and/or its affiliates. + * Other names may be trademarks of their respective owners. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common + * Development and Distribution License("CDDL") (collectively, the + * "License"). You may not use this file except in compliance with the + * License. You can obtain a copy of the License at + * http://www.netbeans.org/cddl-gplv2.html + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the + * specific language governing permissions and limitations under the + * License. When distributing the software, include this License Header + * Notice in each file and include the License file at + * nbbuild/licenses/CDDL-GPL-2-CP. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the GPL Version 2 section of the License file that + * accompanied this code. If applicable, add the following below the + * License Header, with the fields enclosed by brackets [] replaced by + * your own identifying information: + * "Portions Copyrighted [year] [name of copyright owner]" + * + * If you wish your version of this file to be governed by only the CDDL + * or only the GPL Version 2, indicate your decision by adding + * "[Contributor] elects to include this software in this distribution + * under the [CDDL or GPL Version 2] license." If you do not indicate a + * single choice of license, a recipient has the option to distribute + * your version of this file under either the CDDL, the GPL Version 2 or + * to extend the choice of license to its licensees as provided above. + * However, if you add GPL Version 2 code and therefore, elected the GPL + * Version 2 license, then the option applies only if the new code is + * made subject to such option by the copyright holder. + * + * Contributor(s): + */ + +// List of standard headers was taken in http://en.cppreference.com/w/cpp/header + +#include // General purpose utilities: program control, dynamic memory allocation, random numbers, sort and search +#include // Functions and macro constants for signal management +#include // Macro (and function) that saves (and jumps) to an execution context +#include // Handling of variable length argument lists +#include // Runtime type information utilities +#include // std::bitset class template +#include // Function objects, designed for use with the standard algorithms +#include // Various utility components +#include // C-style time/date utilites +#include // typedefs for types such as size_t, NULL and others +#include // Low-level memory management utilities +#include // Higher level memory management utilities +#include // limits of integral types +#include // limits of float types +#include // standardized way to query properties of arithmetic types +#include // Exception handling utilities +#include // Standard exception objects +#include // Conditionally compiled macro that compares its argument to zero +#include // Macro containing the last error number +#include // functions to determine the type contained in character data +#include // functions for determining the type of wide character data +#include // various narrow character string handling functions +#include // various wide and multibyte string handling functions +#include // std::basic_string class template +#include // std::vector container +#include // std::deque container +#include // std::list container +#include // std::set and std::multiset associative containers +#include // std::map and std::multimap associative containers +#include // std::stack container adaptor +#include // std::queue and std::priority_queue container adaptors +#include // Algorithms that operate on containers +#include // Container iterators +#include // Common mathematics functions +#include // Complex number type +#include // Class for representing and manipulating arrays of values +#include // Numeric operations on values in containers +#include // forward declarations of all classes in the input/output library +#include // std::ios_base class, std::basic_ios class template and several typedefs +#include // std::basic_istream class template and several typedefs +#include // std::basic_ostream, std::basic_iostream class templates and several typedefs +#include // several standard stream objects +#include // std::basic_fstream, std::basic_ifstream, std::basic_ofstream class templates and several typedefs +#include // std::basic_stringstream, std::basic_istringstream, std::basic_ostringstream class templates and several typedefs +#include // std::strstream, std::istrstream, std::ostrstream(deprecated) +#include // Helper functions to control the format or input and output +#include // std::basic_streambuf class template +#include // C-style input-output functions +#include // Localization utilities +#include // C localization utilities +#include // empty header. The macros that appear in iso646.h in C are keywords in C++ +#if __cplusplus >= 201103L +#include // (since C++11) std::type_index +#include // (since C++11) Compile-time type information +#include // (since C++11) C++ time utilites +#include // (since C++11) std::initializer_list class template +#include // (since C++11) std::tuple class template +#include // (since C++11) Nested allocator class +#include // (since C++11) fixed-size types and limits of other types +#include // (since C++11) formatting macros , intmax_t and uintmax_t math and conversions +#include // (since C++11) defines std::error_code, a platform-dependent error code +#include // (since C++11) C-style Unicode character conversion functions +#include // (since C++11) std::array container +#include // (since C++11) std::forward_list container +#include // (since C++11) std::unordered_set and std::unordered_multiset unordered associative containers +#include // (since C++11) std::unordered_map and std::unordered_multimap unordered associative containers +#include // (since C++11) Random number generators and distributions +#include // (since C++11) Compile-time rational arithmetic +#include // (since C++11) Floating-point environment access functions +#include // (since C++11) Unicode conversion facilities +#include // (since C++11) Classes, algorithms and iterators to support regular expression processing +#include // (since C++11) Atomic operations library +#include // (since C++11)(deprecated in C++17) simply includes the header +#include // (since C++11)(deprecated in C++17) simply includes the headers (until C++17) (since C++17) and : the overloads equivalent to the contents of the C header tgmath.h are already provided by those headers +#include // (since C++11)(deprecated in C++17) defines one compatibility macro constant +#include // (since C++11)(deprecated in C++17) defines one compatibility macro constant +#include // (since C++11) std::thread class and supporting functions +#include // (since C++11) mutual exclusion primitives +#include // (since C++11) primitives for asynchronous computations +#include // (since C++11) thread waiting conditions +#endif +#if __cplusplus >= 201300L +#include // (since C++14) shared mutual exclusion primitives +#endif +#if __cplusplus >= 201500L +#include // (since C++17) std::any class template +#include // (since C++17) std::optional class template +#include // (since C++17) std::variant class template +#include // (since C++17) Polymorphic allocators and memory resources +#include // (since C++17) std::basic_string_view class template +#include // (since C++17) Predefined execution policies for parallel versions of the algorithms +#include // (since C++17) std::path class and supporting functions +#endif diff --git a/nbproject/private/launcher.properties b/nbproject/private/launcher.properties new file mode 100644 index 0000000..3edc2d8 --- /dev/null +++ b/nbproject/private/launcher.properties @@ -0,0 +1,42 @@ +# Launchers File syntax: +# +# [Must-have property line] +# launcher1.runCommand= +# [Optional extra properties] +# launcher1.displayName= +# launcher1.hide= +# launcher1.buildCommand= +# launcher1.runDir= +# launcher1.runInOwnTab= +# launcher1.symbolFiles= +# launcher1.env.= +# (If this value is quoted with ` it is handled as a native command which execution result will become the value) +# [Common launcher properties] +# common.runDir= +# (This value is overwritten by a launcher specific runDir value if the latter exists) +# common.env.= +# (Environment variables from common launcher are merged with launcher specific variables) +# common.symbolFiles= +# (This value is overwritten by a launcher specific symbolFiles value if the latter exists) +# +# In runDir, symbolFiles and env fields you can use these macroses: +# ${PROJECT_DIR} - project directory absolute path +# ${OUTPUT_PATH} - linker output path (relative to project directory path) +# ${OUTPUT_BASENAME}- linker output filename +# ${TESTDIR} - test files directory (relative to project directory path) +# ${OBJECTDIR} - object files directory (relative to project directory path) +# ${CND_DISTDIR} - distribution directory (relative to project directory path) +# ${CND_BUILDDIR} - build directory (relative to project directory path) +# ${CND_PLATFORM} - platform name +# ${CND_CONF} - configuration name +# ${CND_DLIB_EXT} - dynamic library extension +# +# All the project launchers must be listed in the file! +# +# launcher1.runCommand=... +# launcher2.runCommand=... +# ... +# common.runDir=... +# common.env.KEY=VALUE + +# launcher1.runCommand= \ No newline at end of file diff --git a/nbproject/private/private.xml b/nbproject/private/private.xml new file mode 100644 index 0000000..516ee4c --- /dev/null +++ b/nbproject/private/private.xml @@ -0,0 +1,14 @@ + + + + 1 + 0 + + + + + file:/home/user/tmp/cpp/NetBeansProjects/PMP7/main.cpp + file:/home/user/tmp/cpp/NetBeansProjects/PMP7/README.md + + + diff --git a/nbproject/project.xml b/nbproject/project.xml new file mode 100644 index 0000000..49970be --- /dev/null +++ b/nbproject/project.xml @@ -0,0 +1,31 @@ + + + org.netbeans.modules.cnd.makeproject + + + PMP7 + + cpp + h,hpp + UTF-8 + + + + + Debug + 1 + + + Release + 1 + + + + true + ANSI|ANSI + ANSI|ANSI + ANSI|ANSI + + + + diff --git a/pod_proxy.hpp b/pod_proxy.hpp new file mode 100644 index 0000000..7d5bbb2 --- /dev/null +++ b/pod_proxy.hpp @@ -0,0 +1,62 @@ + +/* + * This file was automatically generated by dbusxx-xml2cpp; DO NOT EDIT! + */ + +#ifndef __dbusxx__pod_proxy_hpp__PROXY_MARSHAL_H +#define __dbusxx__pod_proxy_hpp__PROXY_MARSHAL_H + +#include +#include + +namespace pedal { + +class event_proxy +: public ::DBus::InterfaceProxy +{ +public: + + event_proxy() + : ::DBus::InterfaceProxy("pedal.event") + { + connect_signal(event_proxy, OnPedalEvent, _OnPedalEvent_stub); + } + +public: + + /* properties exported by this interface */ +public: + + /* methods exported by this interface, + * this functions will invoke the corresponding methods on the remote objects + */ + void Quit() + { + ::DBus::CallMessage call; + call.member("Quit"); + ::DBus::Message ret = invoke_method (call); + } + + +public: + + /* signal handlers for this interface + */ + virtual void OnPedalEvent(const int32_t& code) = 0; + +private: + + /* unmarshalers (to unpack the DBus message before calling the actual signal handler) + */ + void _OnPedalEvent_stub(const ::DBus::SignalMessage &sig) + { + ::DBus::MessageIter ri = sig.reader(); + + int32_t code; + ri >> code; + OnPedalEvent(code); + } +}; + +} +#endif //__dbusxx__pod_proxy_hpp__PROXY_MARSHAL_H diff --git a/pod_proxy.xml b/pod_proxy.xml new file mode 100644 index 0000000..f39ab54 --- /dev/null +++ b/pod_proxy.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + \ No newline at end of file