Merge remote-tracking branch 'cros/upstream' into 'cros/master'

Contains the following commit:

0568676 libqrtr-glib: Add support for signaling addition/deletion of services. (Madhav)

Change-Id: Ie16a6b8dbc13be81f99c2e92417b80bb549e3562
diff --git a/src/libqrtr-glib/qrtr-control-socket.c b/src/libqrtr-glib/qrtr-control-socket.c
index 63cac4b..a4dad46 100644
--- a/src/libqrtr-glib/qrtr-control-socket.c
+++ b/src/libqrtr-glib/qrtr-control-socket.c
@@ -42,6 +42,8 @@
 enum {
     SIGNAL_NODE_ADDED,
     SIGNAL_NODE_REMOVED,
+    SIGNAL_SERVICE_ADDED,
+    SIGNAL_SERVICE_REMOVED,
     SIGNAL_LAST
 };
 
@@ -77,6 +79,7 @@
     }
 
     __qrtr_node_add_service_info (node, service, port, version, instance);
+    g_signal_emit (self, signals[SIGNAL_SERVICE_ADDED], 0, node_id, service);
 }
 
 static void
@@ -96,6 +99,7 @@
     }
 
     __qrtr_node_remove_service_info (node, service, port, version, instance);
+    g_signal_emit (self, signals[SIGNAL_SERVICE_REMOVED], 0, node_id, service);
     if (!qrtr_node_has_services (node)) {
         g_debug ("[qrtr] removing node %u", node_id);
         g_signal_emit (self, signals[SIGNAL_NODE_REMOVED], 0, node_id);
@@ -380,4 +384,48 @@
                       G_TYPE_NONE,
                       1,
                       G_TYPE_UINT);
+
+    /**
+     * QrtrControlSocket::qrtr-service-added:
+     * @self: the #QrtrControlSocket
+     * @node: the node ID where service is added
+     * @service: the service ID of the service that has been added
+     *
+     * The ::qrtr-service-added signal is emitted when a new service registers
+     * on the QRTR bus.
+     */
+    signals[SIGNAL_SERVICE_ADDED] =
+        g_signal_new (QRTR_CONTROL_SOCKET_SIGNAL_SERVICE_ADDED,
+                      G_OBJECT_CLASS_TYPE (G_OBJECT_CLASS (klass)),
+                      G_SIGNAL_RUN_LAST,
+                      0,
+                      NULL,
+                      NULL,
+                      NULL,
+                      G_TYPE_NONE,
+                      2,
+                      G_TYPE_UINT,
+                      G_TYPE_UINT);
+
+    /**
+     * QrtrControlSocket::qrtr-service-removed:
+     * @self: the #QrtrControlSocket
+     * @node: the node ID where service is removed
+     * @service: the service ID of the service that was removed
+     *
+     * The ::qrtr-service-removed signal is emitted when a service deregisters
+     * from the QRTR bus.
+     */
+    signals[SIGNAL_SERVICE_REMOVED] =
+        g_signal_new (QRTR_CONTROL_SOCKET_SIGNAL_SERVICE_REMOVED,
+                      G_OBJECT_CLASS_TYPE (G_OBJECT_CLASS (klass)),
+                      G_SIGNAL_RUN_LAST,
+                      0,
+                      NULL,
+                      NULL,
+                      NULL,
+                      G_TYPE_NONE,
+                      2,
+                      G_TYPE_UINT,
+                      G_TYPE_UINT);
 }
diff --git a/src/libqrtr-glib/qrtr-control-socket.h b/src/libqrtr-glib/qrtr-control-socket.h
index 9dff727..beea9b8 100644
--- a/src/libqrtr-glib/qrtr-control-socket.h
+++ b/src/libqrtr-glib/qrtr-control-socket.h
@@ -83,6 +83,20 @@
 #define QRTR_CONTROL_SOCKET_SIGNAL_NODE_REMOVED "qrtr-node-removed"
 
 /**
+ * QRTR_CONTROL_SOCKET_SIGNAL_SERVICE_ADDED:
+ *
+ * Symbol defining the #QrtrControlSocket::qrtr-service-added signal.
+ */
+#define QRTR_CONTROL_SOCKET_SIGNAL_SERVICE_ADDED   "qrtr-service-added"
+
+/**
+ * QRTR_CONTROL_SOCKET_SIGNAL_SERVICE_REMOVED:
+ *
+ * Symbol defining the #QrtrControlSocket::qrtr-service-removed signal.
+ */
+#define QRTR_CONTROL_SOCKET_SIGNAL_SERVICE_REMOVED "qrtr-service-removed"
+
+/**
  * qrtr_control_socket_new:
  * @cancellable: optional #GCancellable object, #NULL to ignore.
  * @error: Return location for error or %NULL.