[FMRadio][Feature] Getters
authorDominik Rekawek <d.rekawek@samsung.com>
Sat, 20 Dec 2014 16:36:27 +0000 (17:36 +0100)
committerDominik Rekawek <d.rekawek@samsung.com>
Tue, 30 Dec 2014 12:01:17 +0000 (13:01 +0100)
[Description]
Getters for readonly atributes added

JS:
Frequency
Signal Strength
Connected
State

Cpp:
Frequency
Signal Strength

[Validation]
tizen.fmradio.frequency etc.
Tested on Z910, working

Change-Id: I4ecca1ead395e96792fa4646500bf42307286077
Signed-off-by: Dominik Rekawek <d.rekawek@samsung.com>
src/radio/radio_api.js
src/radio/radio_instance.cc
src/radio/radio_instance.h
src/radio/radio_manager.cc
src/radio/radio_manager.h

index fc7a083e0ea2997f55f09eb4a91ab732f080fdca..e2b5ab9fb5003f35bb7112544e4beb7058f09b3d 100644 (file)
@@ -37,19 +37,22 @@ function FMRadioManager() {
             }
         },
         'signalStrength' : {
-            value : 'TEST',
-            writable : false,
-            enumerable : true
+            enumerable : true,
+            get : signalStrengthGetter,
+            set : function() {
+            }
         },
         'state' : {
-            value : 'READY',
-            writable : false,
-            enumerable : true
+            enumerable : true,
+            get : radioStateGetter,
+            set : function() {
+            }
         },
         'isAntennaConnected' : {
-            value : 'TEST',
-            writable : false,
-            enumerable : true
+            enumerable : true,
+            get : isAntennaConnectedGetter,
+            set : function() {
+            }
         },
         'mute' : {
             value : 'TEST',
@@ -58,9 +61,25 @@ function FMRadioManager() {
         }
     });
 
+    function radioStateGetter() {
+        var ret = native_.callSync('FMRadio_RadioStateGetter');
+        return native_.getResultObject(ret);
+    }
+
+    function isAntennaConnectedGetter() {
+        var ret = native_.callSync('FMRadio_IsAntennaConnectedGetter');
+        return native_.getResultObject(ret);
+    }
+
+    function signalStrengthGetter() {
+        var ret = native_.callSync('FMRadio_SignalStrengthGetter');
+        return native_.getResultObject(ret);
+    }
+
     function frequencyGetter() {
-        // TODO
-        return 1000;
+
+        var ret = native_.callSync('FMRadio_FrequencyGetter');
+        return native_.getResultObject(ret);
     }
 
     function frequencyUpperGetter() {
@@ -108,8 +127,9 @@ FMRadioManager.prototype.start = function() {
     if (args.frequency) {
         if (args.frequency < this.frequencyLowerBound
                 || args.frequency > this.frequencyUpperBound)
-            throw new tizen.WebAPIException(
-                    tizen.WebAPIException.INVALID_VALUES_ERR);
+            throw new tizen.WebAPIException(0,
+                    tizen.WebAPIException.INVALID_VALUES_ERR,
+                    'Frequency out of bounds');
     }
     var result = native_.callSync('FMRadio_Start', {
         'frequency' : args.frequency ? args.frequency
index 1f87cd3bb87c54dcedf3f604b43f1a4447358987..cc32de43403f68a5215d14af7d24e361883a4539 100644 (file)
@@ -28,6 +28,10 @@ namespace radio {
             REGISTER_SYNC("FMRadio_UnsetFMRadioInterruptedListener", UnsetFMRadioInterruptedListener);
             REGISTER_SYNC("FMRadio_SetAntennaChangeListener", SetAntennaChangeListener);
             REGISTER_SYNC("FMRadio_UnsetAntennaChangeListener", UnsetAntennaChangeListener);
+            REGISTER_SYNC("FMRadio_FrequencyGetter", FrequencyGetter);
+            REGISTER_SYNC("FMRadio_SignalStrengthGetter", SignalStrengthGetter);
+            REGISTER_SYNC("FMRadio_IsAntennaConnectedGetter", AntenaGetter);
+            REGISTER_SYNC("FMRadio_RadioStateGetter", StateGetter);
         #undef REGISTER_SYNC
         #define REGISTER_ASYNC(c,x) \
             RegisterHandler(c, std::bind(&RadioInstance::x, this, _1, _2));
@@ -48,6 +52,30 @@ namespace radio {
             return instance;
     }
 
+    void RadioInstance::AntenaGetter(const picojson::value& args,
+   picojson::object& out){
+   }
+
+   void RadioInstance::StateGetter(const picojson::value& args,
+   picojson::object& out){
+   }
+
+    void RadioInstance::FrequencyGetter(const picojson::value& args,
+            picojson::object& out)
+    {
+        LoggerD(".cc FrequencyGetter()");
+        double freq = FMRadioManager::GetInstance()->FrequencyGetter();
+        ReportSuccess(picojson::value(freq),out);
+    }
+
+    void RadioInstance::SignalStrengthGetter(const picojson::value& args,
+              picojson::object& out)
+      {
+          LoggerD(".cc SignalStrengthGetter()");
+          double strength = FMRadioManager::GetInstance()->SignalStrengthGetter();
+          ReportSuccess(picojson::value(strength),out);
+      }
+
     void RadioInstance::InstanceReportSuccess(picojson::object& out) {
         LoggerD(".cc InstanceReportSuccess()");
     }
@@ -71,15 +99,19 @@ namespace radio {
             FMRadioManager::GetInstance()->Start(args.get("frequency").get<double>());
         }
         catch(const PlatformException& e){
-            LoggerE(".cc RadioInstance::Start() CATCH");
             ReportError(e,out);
         }
     }
 
     void RadioInstance::Stop(const picojson::value& args,
             picojson::object& out) {
+        try{
           LoggerD(".cc Stop()");
           FMRadioManager::GetInstance()->Stop();
+        }
+        catch(const PlatformException& e){
+            ReportError(e,out);
+        }
     }
 
     void RadioInstance::ScanStart(const picojson::value& args,
index da06e7284c04b8bb725c5b47f4cece5e36e32b72..84559934a6f516a024e2d2249d9ad70c019001e4 100644 (file)
@@ -24,6 +24,10 @@ class RadioInstance
   void InstanceReportSuccess(picojson::object& out);
 
  private:
+  void FrequencyGetter(const picojson::value& args,picojson::object& out);
+  void SignalStrengthGetter(const picojson::value& args,picojson::object& out);
+  void AntenaGetter(const picojson::value& args,picojson::object& out);
+  void StateGetter(const picojson::value& args,picojson::object& out);
   void SeekUp(const picojson::value& args, picojson::object& out);
   void SeekDown(const picojson::value& args, picojson::object& out);
   void ScanStart(const picojson::value& args, picojson::object& out);
index 334d5f7dc167694abc23dfead786c5d6a6526e7e..8327c0e29cfce3e7fdc0159323624b4d55e208e5 100755 (executable)
@@ -23,6 +23,8 @@ using namespace std;
 namespace extension {
 namespace radio {
 
+static const double FREQ_LOWER = 87.5;
+
 typedef struct RadioSeekCBstruct_
 {
     double cbid;
@@ -74,6 +76,33 @@ int FMRadioManager::Create()
     return 0;
 }
 
+double FMRadioManager::FrequencyGetter()
+{
+    int freq;
+    LoggerD("FMRadioManager::FrequencyGetter()");
+    int err = radio_get_frequency(radio_instance,&freq);
+
+    if (RADIO_ERROR_NONE != err)
+    {
+        LoggerE("radio_get_frequency() error %d",err);
+        return FREQ_LOWER;
+    }
+    return static_cast<double>(freq/1000);
+}
+double FMRadioManager::SignalStrengthGetter()
+{
+    int stren;
+
+    LoggerD("FMRadioManager::SignalStrengthGetter()");
+    int err = radio_get_signal_strength(radio_instance,&stren);
+    if (RADIO_ERROR_NONE != err)
+    {
+        LoggerE("radio_get_signal_strength()");
+        return 0;
+    }
+    return static_cast<double>(stren);
+}
+
 FMRadioManager::FMRadioManager() : radio_instance(NULL)
 {
     LoggerD("FMRadioManager::FMRadioManager()");
index 4305e2d5853ba7a4b30cb514dba83d0ffb974070..f38dcbd097744cca77066103ada61272113e59e8 100755 (executable)
@@ -34,6 +34,9 @@ public:
     void SetAntennaChangeListener();
     void UnsetAntennaChangeListener();
 
+    double FrequencyGetter();
+    double SignalStrengthGetter();
+
 private:
 
     static common::PlatformException GetException(char * name,int err);