Skip to content

Commit

Permalink
Add disconnect handling for softconnect/android
Browse files Browse the repository at this point in the history
Signed-off-by: Philippe De Swert <philippe.deswert@jollamobile.com>
  • Loading branch information
philippedeswert committed May 29, 2013
1 parent 3f720ca commit aa57329
Show file tree
Hide file tree
Showing 5 changed files with 25 additions and 1 deletion.
2 changes: 2 additions & 0 deletions src/usb_moded-dyn-config.c
Expand Up @@ -84,7 +84,9 @@ static struct mode_list_elem *read_mode_file(const gchar *filename)
list_item->network_interface = g_key_file_get_string(settingsfile, MODE_ENTRY, MODE_NETWORK_INTERFACE_KEY, NULL);
list_item->sysfs_path = g_key_file_get_string(settingsfile, MODE_OPTIONS_ENTRY, MODE_SYSFS_PATH, NULL);
list_item->sysfs_value = g_key_file_get_string(settingsfile, MODE_OPTIONS_ENTRY, MODE_SYSFS_VALUE, NULL);
list_item->sysfs_reset_value = g_key_file_get_string(settingsfile, MODE_OPTIONS_ENTRY, MODE_SYSFS_RESET_VALUE, NULL);
list_item->softconnect = g_key_file_get_string(settingsfile, MODE_OPTIONS_ENTRY, MODE_SOFTCONNECT, NULL);
list_item->softconnect_disconnect = g_key_file_get_string(settingsfile, MODE_OPTIONS_ENTRY, MODE_SOFTCONNECT_DISCONNECT, NULL);
list_item->softconnect_path = g_key_file_get_string(settingsfile, MODE_OPTIONS_ENTRY, MODE_SOFTCONNECT_PATH, NULL);
g_key_file_free(settingsfile);
if(list_item->mode_name == NULL || list_item->mode_module == NULL)
Expand Down
4 changes: 4 additions & 0 deletions src/usb_moded-dyn-config.h
Expand Up @@ -34,7 +34,9 @@
#define MODE_OPTIONS_ENTRY "options"
#define MODE_SYSFS_PATH "sysfs_path"
#define MODE_SYSFS_VALUE "sysfs_value"
#define MODE_SYSFS_RESET_VALUE "sysfs_value"
#define MODE_SOFTCONNECT "softconnect"
#define MODE_SOFTCONNECT_DISCONNECT "softconnec_disconnect"
#define MODE_SOFTCONNECT_PATH "softconnect_path"

/**
Expand All @@ -50,7 +52,9 @@ typedef struct mode_list_elem
char *network_interface; /* Which network interface to bring up if network needs to be enabled */
char *sysfs_path; /* path to set sysfs options */
char *sysfs_value; /* option name/value to write to sysfs */
char *sysfs_reset_value; /* value to reset the the sysfs to default */
char *softconnect; /* value to be written to softconnect interface */
char *softconnect_disconnect; /* vlaue to set on the softconnect interface to disable after disconnect */
char *softconnect_path; /* path for the softconnect */
/*@} */
}mode_list_elem;
Expand Down
17 changes: 17 additions & 0 deletions src/usb_moded-modesetting.c
Expand Up @@ -308,6 +308,23 @@ int set_dynamic_mode(struct mode_list_elem *data)
return(0);
}

void unset_dynamic_mode(void)
{

struct mode_list_elem *data;

data = get_usb_mode_data();
if(data->sysfs_path)
{
write_to_file(data->sysfs_path, data->sysfs_reset_value);
}
if(data->softconnect)
{
write_to_file(data->softconnect_path, data->softconnect_disconnect);
}

}

#ifdef NOKIA
gboolean export_cdrom(gpointer data)
{
Expand Down
1 change: 1 addition & 0 deletions src/usb_moded-modesetting.h
Expand Up @@ -30,6 +30,7 @@ int set_mass_storage_mode(void);
int set_ovi_suite_mode(void);
int set_mtp_mode(void);
int set_dynamic_mode(struct mode_list_elem *data);
void unset_dynamic_mode(void);
/* clean up for the mode changes on disconnect */
int usb_moded_mode_cleanup(const char *module);
#ifdef NOKIA
Expand Down
2 changes: 1 addition & 1 deletion src/usb_moded.c
Expand Up @@ -291,7 +291,7 @@ void set_usb_mode(const char *mode)
{
set_usb_module(MODULE_NONE);
mode = MODE_UNDEFINED;
/*TODO: unset_dynamic_mode */
unset_dynamic_mode();
set_usb_mode_data(NULL);
}
if(net)
Expand Down

0 comments on commit aa57329

Please sign in to comment.