Get IR available information from system-info
[platform/core/api/device.git] / 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;
        }