From: Mariusz Polasinski Date: Wed, 17 Dec 2014 17:32:20 +0000 (+0100) Subject: [TVAudio] Stub for sync methods (except playSound()) X-Git-Tag: submit/tizen_tv/20150603.064601~1^2~677 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e8f9f0175b4f17742af9ddd4a8040de3b10a1602;p=platform%2Fcore%2Fapi%2Fwebapi-plugins.git [TVAudio] Stub for sync methods (except playSound()) [Verification] Code complies without error Methods are visible in node (and returns hardcoded values) Change-Id: I25f786b713bfcf5ad8aa52a63cbafda3b8a4069c Signed-off-by: Mariusz Polasinski --- diff --git a/src/tvaudio/tvaudio_api.js b/src/tvaudio/tvaudio_api.js index c25ca866..d3e3a30b 100644 --- a/src/tvaudio/tvaudio_api.js +++ b/src/tvaudio/tvaudio_api.js @@ -6,6 +6,12 @@ +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 @@ -22,8 +28,19 @@ function AudioControlManager() { * @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); + } }; @@ -31,7 +48,13 @@ AudioControlManager.prototype.setMute = function(mute) { * 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); }; @@ -41,7 +64,23 @@ AudioControlManager.prototype.isMute = function() { * (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); + } }; @@ -49,7 +88,11 @@ AudioControlManager.prototype.setVolume = function(volume) { * 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); + } }; @@ -57,7 +100,11 @@ AudioControlManager.prototype.setVolumeUp = function() { * 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); + } }; @@ -66,7 +113,11 @@ AudioControlManager.prototype.setVolumeDown = function() { * @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); }; @@ -92,6 +143,18 @@ AudioControlManager.prototype.unsetVolumeChangeListener = function() { * @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; }; diff --git a/src/tvaudio/tvaudio_instance.cc b/src/tvaudio/tvaudio_instance.cc index 9ff5d783..9819b269 100644 --- a/src/tvaudio/tvaudio_instance.cc +++ b/src/tvaudio/tvaudio_instance.cc @@ -2,14 +2,87 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include +#include +#include + +#include "common/picojson.h" + #include "tvaudio/tvaudio_instance.h" +#include "tvaudio/tvaudio_manager.h" namespace extension { namespace tvaudio { -TVAudioInstance::TVAudioInstance() {} +namespace { +const std::map 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(); + 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(); + 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(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 diff --git a/src/tvaudio/tvaudio_instance.h b/src/tvaudio/tvaudio_instance.h index 1fefab5f..47c6bb7e 100644 --- a/src/tvaudio/tvaudio_instance.h +++ b/src/tvaudio/tvaudio_instance.h @@ -14,6 +14,15 @@ class TVAudioInstance : public common::ParsedInstance { 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 diff --git a/src/tvaudio/tvaudio_manager.cc b/src/tvaudio/tvaudio_manager.cc index 2cc5e8d4..c86bc2d9 100755 --- a/src/tvaudio/tvaudio_manager.cc +++ b/src/tvaudio/tvaudio_manager.cc @@ -18,6 +18,30 @@ AudioControlManager& AudioControlManager::getInstance() { 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 diff --git a/src/tvaudio/tvaudio_manager.h b/src/tvaudio/tvaudio_manager.h index 77e7358d..43323efc 100755 --- a/src/tvaudio/tvaudio_manager.h +++ b/src/tvaudio/tvaudio_manager.h @@ -5,11 +5,28 @@ #ifndef SRC_TVAUDIO_TVAUDIO_MANAGER_H_ #define SRC_TVAUDIO_TVAUDIO_MANAGER_H_ +#include + 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;