From 483d147ab370927ef48110fbd763e815a9a7f44d Mon Sep 17 00:00:00 2001 From: "giyeol.ok" Date: Thu, 20 Jun 2013 10:05:47 +0900 Subject: [PATCH] support switch type devices Change-Id: I458ae6ed1ad0b9e48f127b8e87e37ddc159430c6 Signed-off-by: giyeol.ok --- src/core/device-change-handler.c | 26 +++++++++++++++++++++++--- src/core/udev.h | 2 ++ 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/src/core/device-change-handler.c b/src/core/device-change-handler.c index 9a86cc5..129bc88 100644 --- a/src/core/device-change-handler.c +++ b/src/core/device-change-handler.c @@ -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); diff --git a/src/core/udev.h b/src/core/udev.h index f7c8a58..d2f9f0e 100644 --- a/src/core/udev.h +++ b/src/core/udev.h @@ -26,4 +26,6 @@ #define ADD "add" #define REMOVE "remove" +/* switch device */ +#define SWITCH_SUBSYSTEM "switch" #endif /* __UDEV_H__ */ -- 2.7.4