4 * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
6 * Contact: Hocheol Seo <hocheol.seo@samsung.com>
7 * Injun Yang <injun.yang@samsung.com>
9 * Licensed under the Apache License, Version 2.0 (the "License");
10 * you may not use this file except in compliance with the License.
11 * You may obtain a copy of the License at
13 * http://www.apache.org/licenses/LICENSE-2.0
15 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
30 #include "dr-common.h"
34 #define ACM_WAIT_TIME 300000
36 extern dr_info_t dr_info;
37 volatile gboolean dsr_status = FALSE;
39 static gboolean acm_enabled(int mode)
44 case SET_USB_SDB_DIAG:
51 static void __usb_status_noti_handler(void *data)
57 if (_get_usb_state(&usb_state) < 0) {
58 ERR(" Unable to get usb status !\n");
62 ret = vconf_get_int(VCONFKEY_USB_CUR_MODE, &usb_mode);
64 DBG("Vconf get failed\n");
68 DBG("USB noti handler, USB state : %d, Mode : %d\n", usb_state, usb_mode);
69 DBG("usb_fd = 0x%x\n", dr_info.usb.usb_fd);
73 * If USB driver builted in the Kernel, VCONFKEY_SYSMAN_USB_CONNECTED is not used.
74 * If USB driver loaded in DR/MTP then need to check VCONFKEY_SYSMAN_USB_CONNECTED.
75 * After usb driver loaded, MTP will be set vconf value as VCONFKEY_SYSMAN_USB_CONNECTED
77 if (usb_state != VCONFKEY_SYSMAN_USB_DISCONNECTED &&
78 acm_enabled(usb_mode)) {
80 } else if (usb_state == VCONFKEY_SYSMAN_USB_DISCONNECTED) {
87 static void __usb_mode_noti_handler(void *data)
92 ret = vconf_get_int(VCONFKEY_USB_CUR_MODE, &usb_mode);
94 DBG("Vconf get failed\n");
98 DBG("USB Mode noti handler, USB Mode : %d\n", usb_mode);
99 DBG("usb_fd = 0x%x\n", dr_info.usb.usb_fd);
101 if (!acm_enabled(usb_mode)) {
110 gboolean _register_vconf_notification(void)
114 ret = vconf_notify_key_changed(VCONFKEY_SYSMAN_USB_STATUS,
115 (vconf_callback_fn)__usb_status_noti_handler, NULL);
117 ERR("Error !!! VCONFKEY reg noti : %s\n", VCONFKEY_SYSMAN_USB_STATUS);
119 ret = vconf_notify_key_changed(VCONFKEY_USB_CUR_MODE,
120 (vconf_callback_fn) __usb_mode_noti_handler, NULL);
122 ERR("Error !!! VCONFKEY reg noti : %s\n", VCONFKEY_USB_CUR_MODE);
127 void _unregister_vconf_notification(void)
129 vconf_ignore_key_changed(VCONFKEY_SYSMAN_USB_STATUS,
130 (vconf_callback_fn) __usb_status_noti_handler);
131 vconf_ignore_key_changed(VCONFKEY_USB_CUR_MODE,
132 (vconf_callback_fn) __usb_mode_noti_handler);
136 gboolean _register_telephony_event(void)
141 void _unregister_telephony_event(void)