Fix dbus method: change_usb_client_mode() 66/225366/8 accepted/tizen/unified/20200221.093446 submit/tizen/20200220.052758
authorYoungjae Cho <y0.cho@samsung.com>
Wed, 19 Feb 2020 08:23:02 +0000 (17:23 +0900)
committerINSUN PYO <insun.pyo@samsung.com>
Thu, 20 Feb 2020 01:52:11 +0000 (01:52 +0000)
Change-Id: I285ecde35f611642bbec068ddade0482107603a5
Signed-off-by: Youngjae Cho <y0.cho@samsung.com>
src/usb/usb-dbus.c
src/usb/usb-state.c
src/usb/usb.h

index 3b1c6b1..69b118a 100644 (file)
@@ -27,6 +27,7 @@
 #include "core/common.h"
 #include "core/devices.h"
 #include "usb.h"
+#include "usb-debug.h"
 
 /* Legacy signals */
 #define SIGNAL_STATE_CHANGED  "StateChanged"
@@ -125,56 +126,30 @@ static void change_usb_client_mode(GDBusConnection  *conn,
        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 */
index 8d1e1e6..6470f41 100644 (file)
@@ -73,7 +73,7 @@ static const struct _usb_mode_mapping_table {
        {13,                      USB_FUNCTION_ACM | USB_FUNCTION_SDB | USB_FUNCTION_RNDIS}, /* SET_USB_RNDIS_SDB_ACM */
 };
 
-static unsigned int get_mode_bitmap_from_vconf(int mode_v)
+unsigned int get_mode_bitmap_from_vconf(int mode_v)
 {
        int i;
        int array_len = sizeof(usb_mode_mapping_table)/sizeof(usb_mode_mapping_table[0]);
index ff968ea..1b620be 100644 (file)
@@ -55,6 +55,7 @@ struct usb_config_plugin_ops {
 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);