Get IR available information from system-info 18/62618/8 accepted/tizen/common/20160318.150253 accepted/tizen/ivi/20160321.004823 accepted/tizen/mobile/20160321.004736 accepted/tizen/tv/20160321.004751 accepted/tizen/wearable/20160321.004806 submit/tizen/20160318.091903
authorpr.jung <pr.jung@samsung.com>
Thu, 17 Mar 2016 05:28:11 +0000 (14:28 +0900)
committerpr.jung <pr.jung@samsung.com>
Fri, 18 Mar 2016 07:56:15 +0000 (16:56 +0900)
Change-Id: I70cb0de086a1db256a3f8a40b3964699ad9f27ec
Signed-off-by: pr.jung <pr.jung@samsung.com>
src/ir.c

index 35f7bb1..5b744cb 100644 (file)
--- a/src/ir.c
+++ b/src/ir.c
@@ -15,6 +15,7 @@
  */
 
 #include <stdio.h>
+#include <system_info.h>
 
 #include "ir.h"
 #include "common.h"
 
 #define METHOD_IS_AVAILABLE            "IRIsAvailable"
 #define METHOD_TRANSMIT                        "TransmitIR"
+#define IR_FEATURE                     "http://tizen.org/feature/consumer_ir"
+
 
 int device_ir_is_available(bool *available)
 {
        int ret;
+       bool ir_avail;
 
        if (!available)
                return DEVICE_ERROR_INVALID_PARAMETER;
 
+       ret = system_info_get_platform_bool(IR_FEATURE, &ir_avail);
+
+       if (ret < 0) {
+               *available = false;
+               return DEVICE_ERROR_OPERATION_FAILED;
+       } else if (ret == 0 && !ir_avail) {
+               *available = false;
+               return DEVICE_ERROR_NOT_SUPPORTED;
+       }
+
        ret = dbus_method_sync(DEVICED_BUS_NAME, DEVICED_PATH_IR,
                        DEVICED_INTERFACE_IR, METHOD_IS_AVAILABLE,
                        NULL, NULL);
 
-       if (ret < 0)
+       if (!ret) {
+               *available = false;
                return DEVICE_ERROR_OPERATION_FAILED;
+       }
 
-       *available = ret;
+       *available = ir_avail;
        return DEVICE_ERROR_NONE;
 }
 
@@ -48,9 +64,22 @@ int device_ir_transmit(int carrier_frequency, int *pattern, int size)
        int freq_pattern[size + 1];
        int ret;
        int i;
+       bool ir_avail;
 
+       ret = device_ir_is_available(&ir_avail);
+       if (!ir_avail) {
+               if (ret < 0) {
+                       _E("IR is not supported or IR operation failed");
+                       return ret;
+               }
+               _E("IR is not supported");
+               return DEVICE_ERROR_OPERATION_FAILED;
+       }
+
+       if (!pattern)
+               return DEVICE_ERROR_INVALID_PARAMETER;
        if (size <= 0) {
-               _D("IR pattern size is invalid");
+               _E("IR pattern size is invalid");
                return DEVICE_ERROR_INVALID_PARAMETER;
        }