From 85827cf85151da1072222ef02b543350ff0f9a7e Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Wed, 25 Feb 2015 23:30:11 +0100 Subject: [PATCH] add cn command --- daemon/Makefile.am | 1 + daemon/commands/cn.cc | 54 +++++++++++++++++++++++++++++++++++++++++++ daemon/commands/cn.h | 12 ++++++++++ daemon/daemon.cc | 2 ++ 4 files changed, 69 insertions(+) create mode 100644 daemon/commands/cn.cc create mode 100644 daemon/commands/cn.h diff --git a/daemon/Makefile.am b/daemon/Makefile.am index 065bfda7b..3837ee119 100644 --- a/daemon/Makefile.am +++ b/daemon/Makefile.am @@ -79,6 +79,7 @@ linphone_daemon_SOURCES=daemon.cc \ commands/quit.h \ commands/contact.h \ commands/netsim.cc commands/netsim.h\ + commands/cn.cc commands/cn.h \ commands/version.h linphone_daemon_pipetest_SOURCES=daemon-pipetest.c diff --git a/daemon/commands/cn.cc b/daemon/commands/cn.cc new file mode 100644 index 000000000..8f267fe78 --- /dev/null +++ b/daemon/commands/cn.cc @@ -0,0 +1,54 @@ +#include "cn.h" + +using namespace std; + +class CNResponse : public Response { +public: + CNResponse(LinphoneCore *core); +}; + +CNResponse::CNResponse(LinphoneCore *core) : Response() { + ostringstream ost; + bool cn_enabled = linphone_core_generic_confort_noise_enabled(core) == TRUE ? true : false; + ost << "State: "; + if (cn_enabled) { + ost << "enabled\n"; + } else { + ost << "disabled\n"; + } + setBody(ost.str().c_str()); +} + + +CNCommand::CNCommand() : + DaemonCommand("cn", "cn [enable|disable]", + "Enable or disable generic confort noice (CN payload type) with the 'enable' and 'disable' parameters, return the status of the use of confort noise without parameter.") { + addExample(new DaemonCommandExample("cn enable", + "Status: Ok\n\n" + "State: enabled")); + addExample(new DaemonCommandExample("cn disable", + "Status: Ok\n\n" + "State: disabled")); + addExample(new DaemonCommandExample("cn", + "Status: Ok\n\n" + "State: disabled")); +} + +void CNCommand::exec(Daemon *app, const char *args) { + string status; + istringstream ist(args); + ist >> status; + if (ist.fail()) { + app->sendResponse(CNResponse(app->getCore())); + } else { + if (status.compare("enable") == 0) { + linphone_core_enable_generic_confort_noise(app->getCore(), TRUE); + } else if (status.compare("disable") == 0) { + linphone_core_enable_generic_confort_noise(app->getCore(), FALSE); + } else { + app->sendResponse(Response("Incorrect parameter.", Response::Error)); + return; + } + app->sendResponse(CNResponse(app->getCore())); + } +} diff --git a/daemon/commands/cn.h b/daemon/commands/cn.h new file mode 100644 index 000000000..4e88e7899 --- /dev/null +++ b/daemon/commands/cn.h @@ -0,0 +1,12 @@ +#ifndef COMMAND_CN_H_ +#define COMMAND_CN_H_ + +#include "../daemon.h" + +class CNCommand: public DaemonCommand { +public: + CNCommand(); + virtual void exec(Daemon *app, const char *args); +}; + +#endif //COMMAND_IPV6_H_ diff --git a/daemon/daemon.cc b/daemon/daemon.cc index 8aa09a8b3..2e0c6deb3 100644 --- a/daemon/daemon.cc +++ b/daemon/daemon.cc @@ -51,6 +51,7 @@ #include "commands/quit.h" #include "commands/configcommand.h" #include "commands/netsim.h" +#include "commands/cn.h" #include "commands/version.h" #include "private.h" @@ -471,6 +472,7 @@ void Daemon::initCommands() { mCommands.push_back(new ConfigGetCommand()); mCommands.push_back(new ConfigSetCommand()); mCommands.push_back(new NetsimCommand()); + mCommands.push_back(new CNCommand()); } void Daemon::uninitCommands() {