Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Merge pull request #14 from Vesuri/supportedmodes
[usb-moded] Send supported mode list on startup and SIGHUP
  • Loading branch information
philippedeswert committed Mar 18, 2014
2 parents dabdb24 + 17f3786 commit 8437544
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 0 deletions.
3 changes: 3 additions & 0 deletions src/usb_moded-dbus-private.h
Expand Up @@ -29,3 +29,6 @@ int usb_moded_send_signal(const char *state_ind);

/* send error signal system bus */
int usb_moded_send_error_signal(const char *error);

/* send supported modes signal system bus */
int usb_moded_send_supported_modes_signal(const char *supported_modes);
36 changes: 36 additions & 0 deletions src/usb_moded-dbus.c
Expand Up @@ -375,3 +375,39 @@ int usb_moded_send_error_signal(const char *error)

return result;
}

int usb_moded_send_supported_modes_signal(const char *supported_modes)
{
int result = 1;
DBusMessage* msg = 0;

// create a signal and check for errors
msg = dbus_message_new_signal(USB_MODE_OBJECT, USB_MODE_INTERFACE, USB_MODE_SUPPORTED_MODES_SIGNAL_NAME);
if (NULL == msg)
{
log_debug("Message Null\n");
goto EXIT;
}

// append arguments onto signal
if (!dbus_message_append_args(msg, DBUS_TYPE_STRING, &supported_modes, DBUS_TYPE_INVALID))
{
log_debug("Appending arguments failed. Out Of Memory!\n");
goto EXIT;
}

// send the message on the correct bus and flush the connection
if (!dbus_connection_send(dbus_connection_sys, msg, 0))
{
log_debug("Failed sending message. Out Of Memory!\n");
goto EXIT;
}
result = 0;

EXIT:
// free the message
if(msg != 0)
dbus_message_unref(msg);

return result;
}
1 change: 1 addition & 0 deletions src/usb_moded-dbus.h
Expand Up @@ -27,6 +27,7 @@
#define USB_MODE_OBJECT "/com/meego/usb_moded"
#define USB_MODE_SIGNAL_NAME "sig_usb_state_ind"
#define USB_MODE_ERROR_SIGNAL_NAME "sig_usb_state_error_ind"
#define USB_MODE_SUPPORTED_MODES_SIGNAL_NAME "sig_usb_supported_modes_ind"

/* supported methods */
#define USB_MODE_STATE_REQUEST "mode_request"
Expand Down
13 changes: 13 additions & 0 deletions src/usb_moded.c
Expand Up @@ -87,6 +87,7 @@ static gboolean set_disconnected(gpointer data);
static void usb_moded_init(void);
static gboolean charging_fallback(gpointer data);
static void usage(void);
static void send_supported_modes_signal(void);


/* ============= Implementation starts here =========================================== */
Expand Down Expand Up @@ -620,6 +621,8 @@ static void sigint_handler(int signum)
/* free and read in modelist again */
free_mode_list(modelist);
modelist = read_mode_list(0);

send_supported_modes_signal();
}
}

Expand All @@ -644,6 +647,14 @@ static void usage(void)
"\n");
}

static void send_supported_modes_signal(void)
{
/* Send supported modes signal */
gchar *mode_list = get_mode_list();
usb_moded_send_supported_modes_signal(mode_list);
g_free(mode_list);
}

int main(int argc, char* argv[])
{
int result = EXIT_FAILURE;
Expand Down Expand Up @@ -762,6 +773,8 @@ int main(int argc, char* argv[])
}
#endif /* SYSTEMD */

send_supported_modes_signal();

/* init succesful, run main loop */
result = EXIT_SUCCESS;
g_main_loop_run(mainloop);
Expand Down

0 comments on commit 8437544

Please sign in to comment.