support switch type devices 67/15267/1
authorgiyeol.ok <giyeol.ok@samsung.com>
Thu, 20 Jun 2013 01:05:47 +0000 (10:05 +0900)
committerKrzysztof Sasiak <k.sasiak@samsung.com>
Thu, 16 Jan 2014 17:07:33 +0000 (18:07 +0100)
Change-Id: I458ae6ed1ad0b9e48f127b8e87e37ddc159430c6
Signed-off-by: giyeol.ok <giyeol.ok@samsung.com>
src/core/device-change-handler.c
src/core/udev.h

index 9a86cc5..129bc88 100644 (file)
@@ -106,6 +106,8 @@ enum snd_jack_types {
 #define ENV_VALUE_HDMI                 "hdmi"
 #define ENV_VALUE_KEYBOARD     "keyboard"
 
+#define SWITCH_DEVICE_USB      "usb_cable"
+
 
 #define ABNORMAL_POPUP_COUNTER 5
 
@@ -265,9 +267,10 @@ static int extcon_count_init(void)
        return ret;
 }
 
-static void usb_chgdet_cb(struct ss_main_data *ad)
+static void usb_chgdet_cb(void *data)
 {
        int val = -1;
+       int ret = 0;
        char params[BUFF_MAX];
 
        predefine_pm_change_state(LCD_NORMAL);
@@ -277,7 +280,12 @@ static void usb_chgdet_cb(struct ss_main_data *ad)
        /* check current battery level */
        ss_lowbat_monitor(NULL);
        action_entry_call_internal(PREDEF_USBCON, 0);
-       if (device_get_property(DEVICE_TYPE_EXTCON, PROP_EXTCON_USB_ONLINE, &val) == 0) {
+
+       if (data == NULL)
+               ret = device_get_property(DEVICE_TYPE_EXTCON, PROP_EXTCON_USB_ONLINE, &val);
+       else
+               val = (int)data;
+       if (ret == 0) {
                _I("jack - usb changed %d",val);
                check_lowbat_charge_device(val);
                if (val==1) {
@@ -733,6 +741,13 @@ out:
 
 int changed_device_def_predefine_action(int argc, char **argv)
 {
+       int state;
+
+       if (argc ==2 && argv[0] != NULL && argv[1] != NULL) {
+               state = atoi(argv[1]);
+               goto switch_device;
+       }
+
        if (argc != 1 || argv[0] == NULL) {
                _E("param is failed");
                return -1;
@@ -754,6 +769,11 @@ int changed_device_def_predefine_action(int argc, char **argv)
                keyboard_chgdet_cb(NULL);
 
        return 0;
+
+       switch_device:
+               if (strncmp(argv[0], SWITCH_DEVICE_USB, strlen(SWITCH_DEVICE_USB)) == 0)
+                       usb_chgdet_cb((void *)state);
+               return 0;
 }
 
 int usbcon_def_predefine_action(int argc, char **argv)
@@ -864,7 +884,7 @@ static void device_change_init(void *data)
        }
 
        /* for simple noti change cb */
-       ss_noti_add("device_usb_chgdet", (void *)usb_chgdet_cb, data);
+       ss_noti_add("device_usb_chgdet", (void *)usb_chgdet_cb, NULL);
        ss_noti_add("device_ta_chgdet", (void *)ta_chgdet_cb, data);
        ss_noti_add("device_earjack_chgdet", (void *)earjack_chgdet_cb, data);
        ss_noti_add("device_earkey_chgdet", (void *)earkey_chgdet_cb, data);
index f7c8a58..d2f9f0e 100644 (file)
@@ -26,4 +26,6 @@
 #define ADD                    "add"
 #define REMOVE                 "remove"
 
+/* switch device */
+#define SWITCH_SUBSYSTEM       "switch"
 #endif /* __UDEV_H__ */