+int modem_add_callback(struct modem_data *modem, const char *command,
+ modem_cb_t function, void *user_data)
+{
+ struct modem_callback *callback;
+
+ callback = g_try_new0(struct modem_callback, 1);
+ if (callback == NULL)
+ return -ENOMEM;
+
+ callback->command = g_strdup(command);
+ callback->function = function;
+ callback->user_data = user_data;
+
+ modem->callbacks = g_slist_append(modem->callbacks, callback);
+
+ return 0;
+}
+