support battery cf pole status control routine 81/14681/1
authorgiyeol.ok <giyeol.ok@samsung.com>
Wed, 3 Apr 2013 05:25:43 +0000 (14:25 +0900)
committerKrzysztof Sasiak <k.sasiak@samsung.com>
Thu, 9 Jan 2014 16:02:22 +0000 (17:02 +0100)
Change-Id: I4fe46508e3ead686522a4fb8dd72dd4ed4c41b6e
Signed-off-by: giyeol.ok <giyeol.ok@samsung.com>
src/core/device-change-handler.c

index 9d70999..c5cb5ab 100644 (file)
 #include "predefine.h"
 #include "display/poll.h"
 
+#define PREDEF_USBCON                  "usbcon"
+#define PREDEF_EARJACKCON              "earjack_predef_internal"
+#define PREDEF_DEVICE_CHANGED          "device_changed"
+#define PREDEF_BATTERY_CF_OPENED       "battery_cf_opened"
+
+#define TVOUT_X_BIN                    "/usr/bin/xberc"
+#define TVOUT_FLAG                     0x00000001
+
 #define MOVINAND_MOUNT_POINT           "/opt/media"
 #define BUFF_MAX               255
 #define SYS_CLASS_INPUT                "/sys/class/input"
@@ -362,11 +370,27 @@ static void charge_cb(struct ss_main_data *ad)
        int val = -1;
        int charge_now = -1;
        int capacity = -1;
+       int ret;
        char params[BUFF_MAX];
        static int bat_full_noti = 0;
+       static int present_status = 1;
 
        ss_lowbat_monitor(NULL);
 
+       ret = device_get_property(DEVICE_TYPE_POWER, PROP_POWER_PRESENT, &val);
+       if (ret != 0)
+               PRT_TRACE_ERR("fail to get battery present value");
+       if (val == 0 && present_status == 1) {
+               present_status = 0;
+               PRT_TRACE_ERR("battery cf is opened");
+               ss_action_entry_call_internal(PREDEF_BATTERY_CF_OPENED, 0);
+       }
+
+       if (val == 1 && present_status == 0) {
+               present_status = 1;
+               PRT_TRACE_ERR("battery cf is closed again");
+       }
+
        if (device_get_property(DEVICE_TYPE_POWER, PROP_POWER_CHARGE_NOW, &charge_now) != 0 ||
            device_get_property(DEVICE_TYPE_POWER, PROP_POWER_CAPACITY, &capacity) != 0)
                _E("fail to get battery node value");
@@ -648,6 +672,22 @@ int earjackcon_def_predefine_action(int argc, char **argv)
        return -1;
 }
 
+static int battery_def_cf_opened_actioin(int argc, char **argv)
+{
+       int ret;
+       static int present_status = 1;
+       bundle *b;
+
+       bundle_add(b, "_SYSPOPUP_CONTENT_", "battdisconnect");
+
+       ret = syspopup_launch("lowbat-syspopup", b);
+
+       if (ret < 0) {
+       PRT_TRACE_ERR("popup launch failed");
+       }
+
+       bundle_free(b);
+}
 
 static void pci_keyboard_add_cb(struct ss_main_data *ad)
 {
@@ -673,6 +713,7 @@ void ss_predefine_device_change_init(void)
 {
        ss_action_entry_add_internal(PREDEF_USBCON, usbcon_def_predefine_action, NULL, NULL);
        ss_action_entry_add_internal(PREDEF_EARJACKCON, earjackcon_def_predefine_action, NULL, NULL);
+       ss_action_entry_add_internal(PREDEF_BATTERY_CF_OPENED, battery_def_cf_opened_actioin, NULL, NULL);
 }
 
 int ss_device_change_init(struct ss_main_data *ad)