[TVAudio] Stub for sync methods (except playSound())
authorMariusz Polasinski <m.polasinski@samsung.com>
Wed, 17 Dec 2014 17:32:20 +0000 (18:32 +0100)
committerLukasz Foniok <l.foniok@samsung.com>
Wed, 7 Jan 2015 12:16:08 +0000 (13:16 +0100)
[Verification]
Code complies without error
Methods are visible in node (and returns hardcoded values)

Change-Id: I25f786b713bfcf5ad8aa52a63cbafda3b8a4069c
Signed-off-by: Mariusz Polasinski <m.polasinski@samsung.com>
src/tvaudio/tvaudio_api.js
src/tvaudio/tvaudio_instance.cc
src/tvaudio/tvaudio_instance.h
src/tvaudio/tvaudio_manager.cc
src/tvaudio/tvaudio_manager.h

index c25ca86680edfea3977c0f4227aa5e0532f78c4b..d3e3a30baebd19fbec6a675ceec6cd34f8daa8d3 100644 (file)
@@ -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;
 };
 
index 9ff5d783fd8f11296e8b71a8fbdbde80daec3926..9819b269149d40ccb7fe2d288e78f0fdb9dd0871 100644 (file)
@@ -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 <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
index 1fefab5ff237c505ec4b9c02429b666237ef1bad..47c6bb7ea4054ae29e28ccb9cae951c0dd7eceaa 100644 (file)
@@ -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
index 2cc5e8d485d2a04b944c8ce6b813a67fe0012ef5..c86bc2d9a1bb6018119046e15ff5797ff7ab4697 100755 (executable)
@@ -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
 
index 77e7358d73029c5986ff4fe9b44ce541f329e310..43323efccc39dd68a9576452b7ea3d5d27d50b04 100755 (executable)
@@ -5,11 +5,28 @@
 #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;