+var native = new xwalk.utils.NativeManager(extension);
+var validator = xwalk.utils.validator;
+var types = validator.Types;
+
+
+
/**
* This class provides access to the API functionalities through the tizen.tvaudiocontrol interface.
* @constructor
* @param {!boolean} mute The mute state
* (true = turn on the silent mode, false = turn off the silent mode)
*/
+
AudioControlManager.prototype.setMute = function(mute) {
- return undefined;
+ var args = validator.validateArgs(arguments, [
+ {name: 'mute', type: types.BOOLEAN}
+ ]);
+
+ var ret = native.callSync('AudioControlManager_setMute', {
+ mute: args.mute
+ });
+
+ if (native.isFailure(ret)) {
+ throw native.getErrorObject(ret);
+ }
};
* Gets the mute state.
*/
AudioControlManager.prototype.isMute = function() {
- return undefined;
+ var ret = native.callSync('AudioControlManager_isMute');
+
+ if (native.isFailure(ret)) {
+ throw native.getErrorObject(ret);
+ }
+
+ return native.getResultObject(ret);
};
* (the available volume range is 0 ~ 100)
*/
AudioControlManager.prototype.setVolume = function(volume) {
- return undefined;
+
+ var args = validator.validateArgs(arguments, [
+ {name: 'volume', type: types.UNSIGNED_LONG}
+ ]);
+
+ if (args.volume < 0 || args.volume > 100) {
+ throw new tizen.WebAPIException(tizen.WebAPIException.INVALID_VALUES_ERR,
+ 'Volume is out of range: ' + args.volume, 'InvalidValuesError');
+ }
+
+ var ret = native.callSync('AudioControlManager_setVolume', {
+ volume: args.volume
+ });
+
+ if (native.isFailure(ret)) {
+ throw native.getErrorObject(ret);
+ }
};
* Increases the volume by 1 level.
*/
AudioControlManager.prototype.setVolumeUp = function() {
- return undefined;
+ var ret = native.callSync('AudioControlManager_setVolumeUp');
+
+ if (native.isFailure(ret)) {
+ throw native.getErrorObject(ret);
+ }
};
* Decreases the volume by 1 level.
*/
AudioControlManager.prototype.setVolumeDown = function() {
- return undefined;
+ var ret = native.callSync('AudioControlManager_setVolumeDown');
+
+ if (native.isFailure(ret)) {
+ throw native.getErrorObject(ret);
+ }
};
* @return {number} The current volume (the volume range is 0 ~ 100)
*/
AudioControlManager.prototype.getVolume = function() {
- return undefined;
+ var ret = native.callSync('AudioControlManager_getVolume');
+ if (native.isFailure(ret)) {
+ throw native.getErrorObject(ret);
+ }
+ return native.getResultObject(ret);
};
* @return {AudioOutputMode} The current audio output mode
*/
AudioControlManager.prototype.getOutputMode = function() {
+ var ret = native.callSync('AudioControlManager_getOutputMode');
+ if (native.isFailure(ret)) {
+ throw native.getErrorObject(ret);
+ }
+ return native.getResultObject(ret);
+};
+
+
+/**
+ * Plays the sound of a specific beep.
+ */
+AudioControlManager.prototype.playSound = function() {
return undefined;
};
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include <functional>
+#include <map>
+#include <string>
+
+#include "common/picojson.h"
+
#include "tvaudio/tvaudio_instance.h"
+#include "tvaudio/tvaudio_manager.h"
namespace extension {
namespace tvaudio {
-TVAudioInstance::TVAudioInstance() {}
+namespace {
+const std::map<AudioOutputMode, std::string> AudioOutputModeMap = {
+ {PCM, "PCM"},
+ {DOLBY, "DOLBY"},
+ {DTS, "DTS"},
+ {AAC, "AAC"}
+};
+} // namespace
+
+TVAudioInstance::TVAudioInstance() {
+ using std::placeholders::_1;
+ using std::placeholders::_2;
+ #define REGISTER_SYNC(c, x) \
+ RegisterSyncHandler(c, std::bind(&TVAudioInstance::x, this, _1, _2));
+ REGISTER_SYNC("AudioControlManager_setMute", setMute);
+ REGISTER_SYNC("AudioControlManager_isMute", isMute);
+ REGISTER_SYNC("AudioControlManager_setVolume", setVolume);
+ REGISTER_SYNC("AudioControlManager_setVolumeUp", setVolumeUp);
+ REGISTER_SYNC("AudioControlManager_setVolumeDown", setVolumeDown);
+ REGISTER_SYNC("AudioControlManager_getVolume", getVolume);
+ REGISTER_SYNC("AudioControlManager_getOutputMode", getOutputMode);
+ #undef REGISTER_SYNC
+}
TVAudioInstance::~TVAudioInstance() {}
+void TVAudioInstance::setMute(const picojson::value& args,
+ picojson::object& out) {
+ bool mute = args.get("mute").get<bool>();
+ AudioControlManager::getInstance().setMute(mute);
+ ReportSuccess(out);
+}
+
+void TVAudioInstance::isMute(const picojson::value& args,
+ picojson::object& out) {
+ bool mute = AudioControlManager::getInstance().isMute();
+ ReportSuccess(picojson::value(mute), out);
+}
+
+void TVAudioInstance::setVolume(const picojson::value& args,
+ picojson::object& out) {
+ double volume = args.get("volume").get<double>();
+ AudioControlManager::getInstance().setVolume(volume);
+ ReportSuccess(out);
+}
+
+void TVAudioInstance::setVolumeUp(const picojson::value& args,
+ picojson::object& out) {
+ AudioControlManager::getInstance().setVolumeUp();
+ ReportSuccess(out);
+}
+
+void TVAudioInstance::setVolumeDown(const picojson::value& args,
+ picojson::object& out) {
+ AudioControlManager::getInstance().setVolumeDown();
+ ReportSuccess(out);
+}
+
+void TVAudioInstance::getVolume(const picojson::value& args,
+ picojson::object& out) {
+ unsigned short volume = AudioControlManager::getInstance().getVolume();
+ ReportSuccess(picojson::value(static_cast<double>(volume)), out);
+}
+
+void TVAudioInstance::getOutputMode(const picojson::value& args,
+ picojson::object& out) {
+ AudioOutputMode mode = AudioControlManager::getInstance().getOutputMode();
+ ReportSuccess(picojson::value(AudioOutputModeMap.at(mode)), out);
+}
+
} // namespace tvaudio
} // namespace extension
public:
TVAudioInstance();
virtual ~TVAudioInstance();
+
+ private:
+ void setMute(const picojson::value& args, picojson::object& out);
+ void isMute(const picojson::value& args, picojson::object& out);
+ void setVolume(const picojson::value& args, picojson::object& out);
+ void setVolumeUp(const picojson::value& args, picojson::object& out);
+ void setVolumeDown(const picojson::value& args, picojson::object& out);
+ void getVolume(const picojson::value& args, picojson::object& out);
+ void getOutputMode(const picojson::value& args, picojson::object& out);
};
} // namespace tvaudio
return instance;
}
+void AudioControlManager::setMute(bool mute) {
+}
+
+bool AudioControlManager::isMute() {
+ return true;
+}
+
+void AudioControlManager::setVolume(u_int16_t volume) {
+}
+
+void AudioControlManager::setVolumeUp() {
+}
+
+void AudioControlManager::setVolumeDown() {
+}
+
+u_int16_t AudioControlManager::getVolume() {
+ return 10;
+}
+
+AudioOutputMode AudioControlManager::getOutputMode() {
+ return PCM;
+}
+
} // namespace tvaudio
} // namespace extension
#ifndef SRC_TVAUDIO_TVAUDIO_MANAGER_H_
#define SRC_TVAUDIO_TVAUDIO_MANAGER_H_
+#include <sys/types.h>
+
namespace extension {
namespace tvaudio {
+enum AudioOutputMode {
+ PCM = 0,
+ DOLBY,
+ DTS,
+ AAC
+};
+
class AudioControlManager {
public:
+ void setMute(bool mute);
+ bool isMute();
+ void setVolume(u_int16_t volume);
+ void setVolumeUp();
+ void setVolumeDown();
+ u_int16_t getVolume();
+ AudioOutputMode getOutputMode();
+
// Not copyable, assignable, movable
AudioControlManager(AudioControlManager const&) = delete;
void operator=(AudioControlManager const&) = delete;