#include "core/common.h"
#include "core/devices.h"
#include "usb.h"
+#include "usb-debug.h"
/* Legacy signals */
#define SIGNAL_STATE_CHANGED "StateChanged"
gpointer data)
{
- int req, debug;
+ int req_vconf = -1;
int ret;
unsigned mode;
- g_variant_get(param, "(i)", &req);
-
- debug = 0;
- switch (req) {
- case SET_USB_DEFAULT:
- case SET_USB_SDB:
- case SET_USB_SDB_DIAG:
- mode = USB_FUNCTION_MTP | USB_FUNCTION_ACM | USB_FUNCTION_SDB;
- debug = 1;
- break;
- case SET_USB_RNDIS:
- case SET_USB_RNDIS_DIAG:
- mode = USB_FUNCTION_RNDIS | USB_FUNCTION_SDB;
- debug = 1;
- break;
- case SET_USB_RNDIS_SDB:
- mode = USB_FUNCTION_RNDIS | USB_FUNCTION_SDB | USB_FUNCTION_ACM;
- debug = 1;
- break;
- case 11: /* SET_USB_DIAG_RMNET */
- mode = USB_FUNCTION_DIAG | USB_FUNCTION_ACM | USB_FUNCTION_RMNET;
- debug = 1;
- break;
- case 12: /* SET_USB_ACM_SDB_DM */
- mode = USB_FUNCTION_ACM | USB_FUNCTION_SDB | USB_FUNCTION_DM;
- debug = 1;
- break;
- case 13: /* SET_USB_RNDIS_SDB_ACM */
- mode = USB_FUNCTION_RNDIS | USB_FUNCTION_SDB | USB_FUNCTION_ACM;
- debug = 1;
- break;
- default:
- _E("(%d) is unknown usb mode.", req);
- goto out;
+ g_variant_get(param, "(i)", &req_vconf);
+ if (req_vconf < 0) {
+ _E("Failed to get req_vconf.");
+ return;
}
- ret = vconf_set_bool(VCONFKEY_SETAPPL_USB_DEBUG_MODE_BOOL, debug);
- if (ret < 0)
- _E("Failed to set usb debug mode: %d", vconf_get_ext_errno());
+ mode = get_mode_bitmap_from_vconf(req_vconf);
+
+ if (mode == USB_FUNCTION_INVALID) {
+ _E("Failed to convert vconf to mode. There is no mode matches up with vconf %d.", req_vconf);
+ return;
+ }
ret = usb_change_mode(mode);
if (ret < 0)
_E("Failed to change usb mode: %d", ret);
-out:
- return ;
+ /* Get selected_mode once more, just in case usb_change_mode() fails */
+ mode = usb_state_get_selected_mode();
+ set_usb_debug_state((bool)(mode & USB_FUNCTION_SDB));
}
/* dbus methods */
void add_usb_config(const struct usb_config_ops *ops);
void remove_usb_config(const struct usb_config_ops *ops);
+unsigned int get_mode_bitmap_from_vconf(int mode_v);
int usb_change_mode(unsigned int mode);
void usb_state_update_state(extcon_usb_state_e state, unsigned int mode);