Skip to content

Commit

Permalink
Support USB dedicated charger tracking
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 10, 2013
1 parent 13ef1ed commit 473de07
Show file tree
Hide file tree
Showing 5 changed files with 35 additions and 2 deletions.
2 changes: 2 additions & 0 deletions src/usb_moded-dbus.h
Expand Up @@ -49,6 +49,8 @@
#define USB_CONNECTED_DIALOG_SHOW "mode_requested_show_dialog"
#define USB_PRE_UNMOUNT "pre-unmount"
#define RE_MOUNT_FAILED "mount_failed"
#define CHARGER_CONNECTED "charger_connected"
#define CHARGER_DISCONNECTED "charger_disconnected"

/* errors */
#define UMOUNT_ERROR "Unmounting filesystem failed. Exporting impossible"
Expand Down
1 change: 1 addition & 0 deletions src/usb_moded-modes.h
Expand Up @@ -28,5 +28,6 @@
#define MODE_ASK "ask"
#define MODE_DEVELOPER "developer_mode"
#define MODE_MTP "mtp_mode"
#define MODE_CHARGER "dedicated_charger"

char *get_mode_list(void);
14 changes: 13 additions & 1 deletion src/usb_moded-udev.c
Expand Up @@ -176,7 +176,7 @@ void hwal_cleanup(void)
static void udev_parse(struct udev_device *dev)
{
const char *tmp;
static int cable = 0; /* track if cable was connected as we cannot distinguish charger and cable disconnects */
static int cable = 0, charger = 0; /* track if cable was connected as we cannot distinguish charger and cable disconnects */

tmp = udev_device_get_property_value(dev, "POWER_SUPPLY_ONLINE");
if(!tmp)
Expand Down Expand Up @@ -211,11 +211,23 @@ static void udev_parse(struct udev_device *dev)
cable = 1;
set_usb_connected(TRUE);
}
if(!strcmp(tmp, "USB_DCP"))
{
log_debug("UDEV:USB dedicated charger connected\n");
charger = 1;
set_charger_connected(TRUE);
}
}
else if(cable)
{
log_debug("UDEV:USB cable disconnected\n");
set_usb_connected(FALSE);
cable = 0;
}
else if(charger)
{
log_debug("UDEV:USB dedicated charger disconnected\n");
set_charger_connected(FALSE);
charger = 0;
}
}
19 changes: 18 additions & 1 deletion src/usb_moded.c
Expand Up @@ -158,6 +158,23 @@ static gboolean set_disconnected(gpointer data)
return FALSE;
}

/** set and track charger state
*
*/
void set_charger_connected(gboolean state)
{
if(state)
{
usb_moded_send_signal(CHARGER_CONNECTED);
set_usb_mode(MODE_CHARGER);
}
else
{
usb_moded_send_signal(CHARGER_DISCONNECTED);
set_usb_mode(MODE_UNDEFINED);
}
}

/** set the chosen usb state
*
*/
Expand Down Expand Up @@ -285,7 +302,7 @@ else if(!strcmp(mode, MODE_DEVELOPER))
ret = set_mtp_mode();
goto end;
}
else if(!strcmp(mode, MODE_ASK))
else if(!strcmp(mode, MODE_ASK) || !strcmp(mode, MODE_CHARGER))
{
ret = 0;
}
Expand Down
1 change: 1 addition & 0 deletions src/usb_moded.h
Expand Up @@ -60,5 +60,6 @@ void set_usb_module(const char *module);
const char * get_usb_module(void);
gboolean get_usb_connection_state(void);
void set_usb_connection_state(gboolean state);
void set_charger_connected(gboolean state);

#endif /* USB_MODED_H */

0 comments on commit 473de07

Please sign in to comment.