[Feature]add MT2731_MP2_MR2_SVN388 baseline version

Change-Id: Ief04314834b31e27effab435d3ca8ba33b499059
diff --git a/src/lynq/lib/liblynq-broadcast/MODULE_LICENSE_APACHE2 b/src/lynq/lib/liblynq-broadcast/MODULE_LICENSE_APACHE2
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/lynq/lib/liblynq-broadcast/MODULE_LICENSE_APACHE2
diff --git a/src/lynq/lib/liblynq-broadcast/Makefile b/src/lynq/lib/liblynq-broadcast/Makefile
new file mode 100644
index 0000000..99ec82e
--- /dev/null
+++ b/src/lynq/lib/liblynq-broadcast/Makefile
@@ -0,0 +1,63 @@
+PREFIX   = ../install
+CROSS    = arm-none-linux-
+ROOT     = $(PREFIX)/$(CROSS:%-=%)
+
+#For Yocto use
+
+RFX_TEST_CLIENT = false
+RFX_TEST_AOSP = false
+
+$(warning ########## libvendor_ril BB_TELEFWK_OPTION $(BB_TELEFWK_OPTION) ##########)
+
+		   
+
+SUBDIRS +=  liblynq-broadcast
+
+
+
+
+
+$(warning ########## lynq-rilcmd SUBDIRS  $(SUBDIRS) ##########)
+export SIM_COUNT?=1
+
+.PHONY: all build clean pack_rootfs
+
+all: build
+
+build: clean
+
+clean:
+	$(warning ########## clean ril ##########)
+	for i in $(SUBDIRS); do			\
+		(cd $$i && make clean);			\
+		if [ $$? != 0 ]; then		\
+			exit 1;					\
+		fi							\
+	done
+
+build:
+	$(warning ########## build ril ##########)
+	for i in $(SUBDIRS); do			\
+		(cd $$i && make);			\
+		if [ $$? != 0 ]; then		\
+			exit 1;					\
+		fi							\
+	done
+
+install:
+	$(warning ########## install ril ##########)
+	for i in $(SUBDIRS); do			\
+		(cd $$i && make install);			\
+		if [ $$? != 0 ]; then		\
+			exit 1;					\
+		fi							\
+	done
+
+pack_rootfs:
+	$(warning ########## pack_rootfs ril ##########)
+	for i in $(SUBDIRS); do			\
+		(cd $$i && make pack_rootfs);			\
+		if [ $$? != 0 ]; then		\
+			exit 1;					\
+		fi							\
+	done
diff --git a/src/lynq/lib/liblynq-broadcast/NOTICE b/src/lynq/lib/liblynq-broadcast/NOTICE
new file mode 100644
index 0000000..c5b1efa
--- /dev/null
+++ b/src/lynq/lib/liblynq-broadcast/NOTICE
@@ -0,0 +1,190 @@
+
+   Copyright (c) 2005-2008, The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
diff --git a/src/lynq/lib/liblynq-broadcast/README b/src/lynq/lib/liblynq-broadcast/README
new file mode 100644
index 0000000..9a7e82f
--- /dev/null
+++ b/src/lynq/lib/liblynq-broadcast/README
@@ -0,0 +1,13 @@
+WHAT IT DOES?
+=============
+MTK ril proxy core library
+
+HOW IT WAS BUILT?
+==================
+This module is source code released.
+
+HOW TO USE IT?
+==============
+MTK ril proxy daemon will use this library to communicate with GSM and C2K RILD.
+
+All the source code of this folder were written by MediaTek co..
diff --git a/src/lynq/lib/liblynq-broadcast/include/liblynq-broadcast/broadcast_receiver.h b/src/lynq/lib/liblynq-broadcast/include/liblynq-broadcast/broadcast_receiver.h
new file mode 100644
index 0000000..e9fbbcb
--- /dev/null
+++ b/src/lynq/lib/liblynq-broadcast/include/liblynq-broadcast/broadcast_receiver.h
@@ -0,0 +1,25 @@
+#ifndef __LYNQ_BROADCAST_RECEIVE_H__
+#define __LYNQ_BROADCAST_RECEIVE_H__
+#include <gio/gio.h>
+#include <glib.h>
+#include <pthread.h>
+
+#define BUFMAX	2048
+typedef void (*BroadcastCallbackByName)(const char*, int data_length,const char*);
+typedef void (*BroadcastCallbackById)(int id, int data_length,const char*);
+typedef void (*BroadcastCallbackParamUnfixed)(char* name,GVariant *parameters);
+/*
+struct BroadcastName {
+	char *product_id;
+	char *product_name;
+};*/
+
+void delete_receive();
+void register_broadcast_receiver();
+int broadcast_loop();
+void register_broadcast_loop(void);
+//BOOL ServiceIsReady(void);
+void receive_callback_by_name(char* name,BroadcastCallbackByName callback);
+void receive_callback_by_id(int id,BroadcastCallbackById callback);
+void receive_callback_prame_unfixed(char* name,BroadcastCallbackParamUnfixed callback);
+#endif  //__LOG_H__
diff --git a/src/lynq/lib/liblynq-broadcast/include/liblynq-broadcast/broadcast_send.h b/src/lynq/lib/liblynq-broadcast/include/liblynq-broadcast/broadcast_send.h
new file mode 100644
index 0000000..912a98e
--- /dev/null
+++ b/src/lynq/lib/liblynq-broadcast/include/liblynq-broadcast/broadcast_send.h
@@ -0,0 +1,10 @@
+#ifndef __LYNQ_BROADCAST_RECEIVE_H__
+#define __LYNQ_BROADCAST_RECEIVE_H__
+void register_broadcast_send();
+void register_broadcast_send_loop(void);
+int broadcast_send_loop();
+int send_broadcast_by_name (char* broadcast_name,int data_length,char *param);
+int send_broadcast_by_id (int broadcast_id,int data_length ,char *param);
+void unregister_broadcast_send(void);
+
+#endif  //__LOG_H__
diff --git a/src/lynq/lib/liblynq-broadcast/include/liblynq-broadcast/link_id.h b/src/lynq/lib/liblynq-broadcast/include/liblynq-broadcast/link_id.h
new file mode 100644
index 0000000..5f7c685
--- /dev/null
+++ b/src/lynq/lib/liblynq-broadcast/include/liblynq-broadcast/link_id.h
@@ -0,0 +1,17 @@
+#ifndef __LYNQ_LINK_ID_H__
+#define __LYNQ_LINK_ID_H__
+
+struct NodeId
+{
+	int id;				
+	struct NodeId* next;	
+};
+
+void AddListTill(int id );
+void ScanList();
+struct NodeId* FindNode(int id );
+void FreeList();
+void DeleteListTail();
+void DeleteListHead();
+void DeleteListRand(int id);
+#endif  
\ No newline at end of file
diff --git a/src/lynq/lib/liblynq-broadcast/include/liblynq-broadcast/link_name.h b/src/lynq/lib/liblynq-broadcast/include/liblynq-broadcast/link_name.h
new file mode 100644
index 0000000..d2ee218
--- /dev/null
+++ b/src/lynq/lib/liblynq-broadcast/include/liblynq-broadcast/link_name.h
@@ -0,0 +1,17 @@
+#ifndef __LYNQ_LINK_NAME_H__
+#define __LYNQ_LINK_NAME_H__
+
+struct NodeName
+{
+	char *name;				
+	struct NodeName* next;	
+};
+
+void AddListTillByName(char *name);
+void ScanListByName();
+struct NodeName* FindNodeByName(char *name);
+void FreeListByName();
+void DeleteListTailByName();
+void DeleteListHeadByName();
+void DeleteListRand(char *name);
+#endif  
\ No newline at end of file
diff --git a/src/lynq/lib/liblynq-broadcast/include/lynq_dbus/dbus-generated.h b/src/lynq/lib/liblynq-broadcast/include/lynq_dbus/dbus-generated.h
new file mode 100644
index 0000000..f5a7caf
--- /dev/null
+++ b/src/lynq/lib/liblynq-broadcast/include/lynq_dbus/dbus-generated.h
@@ -0,0 +1,262 @@
+/*
+ * Generated by gdbus-codegen 2.56.4. DO NOT EDIT.
+ *
+ * The license of this code is the same as for the D-Bus interface description
+ * it was derived from.
+ */
+
+#ifndef ___HOME_WW_SHARE_TEST_NEW_DBUS_DBUS_CLT_BUILD_DBUS_GENERATED_H__
+#define ___HOME_WW_SHARE_TEST_NEW_DBUS_DBUS_CLT_BUILD_DBUS_GENERATED_H__
+
+#include <gio/gio.h>
+
+G_BEGIN_DECLS
+
+
+/* ------------------------------------------------------------------------ */
+/* Declarations for com.lynq.dbus.name */
+
+#define ZMO_TYPE_COM_LYNQ_DBUS_NAME (zmo_com_lynq_dbus_name_get_type ())
+#define ZMO_COM_LYNQ_DBUS_NAME(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), ZMO_TYPE_COM_LYNQ_DBUS_NAME, ZMoComLynqDbusName))
+#define ZMO_IS_COM_LYNQ_DBUS_NAME(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), ZMO_TYPE_COM_LYNQ_DBUS_NAME))
+#define ZMO_COM_LYNQ_DBUS_NAME_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), ZMO_TYPE_COM_LYNQ_DBUS_NAME, ZMoComLynqDbusNameIface))
+
+struct _ZMoComLynqDbusName;
+typedef struct _ZMoComLynqDbusName ZMoComLynqDbusName;
+typedef struct _ZMoComLynqDbusNameIface ZMoComLynqDbusNameIface;
+
+struct _ZMoComLynqDbusNameIface
+{
+  GTypeInterface parent_iface;
+
+
+  gboolean (*handle_my_method1) (
+    ZMoComLynqDbusName *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *arg_InArg);
+
+  gboolean (*handle_my_method2) (
+    ZMoComLynqDbusName *object,
+    GDBusMethodInvocation *invocation,
+    GVariant *arg_InArg);
+
+  gboolean (*handle_my_method3) (
+    ZMoComLynqDbusName *object,
+    GDBusMethodInvocation *invocation,
+    GVariant *arg_InArg);
+
+  void (*my_signal1) (
+    ZMoComLynqDbusName *object,
+    const gchar *arg_Value);
+
+  void (*my_signal2) (
+    ZMoComLynqDbusName *object,
+    GVariant *arg_Value);
+
+};
+
+GType zmo_com_lynq_dbus_name_get_type (void) G_GNUC_CONST;
+
+GDBusInterfaceInfo *zmo_com_lynq_dbus_name_interface_info (void);
+guint zmo_com_lynq_dbus_name_override_properties (GObjectClass *klass, guint property_id_begin);
+
+
+/* D-Bus method call completion functions: */
+void zmo_com_lynq_dbus_name_complete_my_method1 (
+    ZMoComLynqDbusName *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *OutArg);
+
+void zmo_com_lynq_dbus_name_complete_my_method2 (
+    ZMoComLynqDbusName *object,
+    GDBusMethodInvocation *invocation,
+    GVariant *OutArg);
+
+void zmo_com_lynq_dbus_name_complete_my_method3 (
+    ZMoComLynqDbusName *object,
+    GDBusMethodInvocation *invocation,
+    GVariant *OutArg);
+
+
+
+/* D-Bus signal emissions functions: */
+void zmo_com_lynq_dbus_name_emit_my_signal1 (
+    ZMoComLynqDbusName *object,
+    const gchar *arg_Value);
+
+void zmo_com_lynq_dbus_name_emit_my_signal2 (
+    ZMoComLynqDbusName *object,
+    GVariant *arg_Value);
+
+
+
+/* D-Bus method calls: */
+void zmo_com_lynq_dbus_name_call_my_method1 (
+    ZMoComLynqDbusName *proxy,
+    const gchar *arg_InArg,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean zmo_com_lynq_dbus_name_call_my_method1_finish (
+    ZMoComLynqDbusName *proxy,
+    gchar **out_OutArg,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean zmo_com_lynq_dbus_name_call_my_method1_sync (
+    ZMoComLynqDbusName *proxy,
+    const gchar *arg_InArg,
+    gchar **out_OutArg,
+    GCancellable *cancellable,
+    GError **error);
+
+void zmo_com_lynq_dbus_name_call_my_method2 (
+    ZMoComLynqDbusName *proxy,
+    GVariant *arg_InArg,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean zmo_com_lynq_dbus_name_call_my_method2_finish (
+    ZMoComLynqDbusName *proxy,
+    GVariant **out_OutArg,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean zmo_com_lynq_dbus_name_call_my_method2_sync (
+    ZMoComLynqDbusName *proxy,
+    GVariant *arg_InArg,
+    GVariant **out_OutArg,
+    GCancellable *cancellable,
+    GError **error);
+
+void zmo_com_lynq_dbus_name_call_my_method3 (
+    ZMoComLynqDbusName *proxy,
+    GVariant *arg_InArg,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data);
+
+gboolean zmo_com_lynq_dbus_name_call_my_method3_finish (
+    ZMoComLynqDbusName *proxy,
+    GVariant **out_OutArg,
+    GAsyncResult *res,
+    GError **error);
+
+gboolean zmo_com_lynq_dbus_name_call_my_method3_sync (
+    ZMoComLynqDbusName *proxy,
+    GVariant *arg_InArg,
+    GVariant **out_OutArg,
+    GCancellable *cancellable,
+    GError **error);
+
+
+
+/* ---- */
+
+#define ZMO_TYPE_COM_LYNQ_DBUS_NAME_PROXY (zmo_com_lynq_dbus_name_proxy_get_type ())
+#define ZMO_COM_LYNQ_DBUS_NAME_PROXY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), ZMO_TYPE_COM_LYNQ_DBUS_NAME_PROXY, ZMoComLynqDbusNameProxy))
+#define ZMO_COM_LYNQ_DBUS_NAME_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), ZMO_TYPE_COM_LYNQ_DBUS_NAME_PROXY, ZMoComLynqDbusNameProxyClass))
+#define ZMO_COM_LYNQ_DBUS_NAME_PROXY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), ZMO_TYPE_COM_LYNQ_DBUS_NAME_PROXY, ZMoComLynqDbusNameProxyClass))
+#define ZMO_IS_COM_LYNQ_DBUS_NAME_PROXY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), ZMO_TYPE_COM_LYNQ_DBUS_NAME_PROXY))
+#define ZMO_IS_COM_LYNQ_DBUS_NAME_PROXY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), ZMO_TYPE_COM_LYNQ_DBUS_NAME_PROXY))
+
+typedef struct _ZMoComLynqDbusNameProxy ZMoComLynqDbusNameProxy;
+typedef struct _ZMoComLynqDbusNameProxyClass ZMoComLynqDbusNameProxyClass;
+typedef struct _ZMoComLynqDbusNameProxyPrivate ZMoComLynqDbusNameProxyPrivate;
+
+struct _ZMoComLynqDbusNameProxy
+{
+  /*< private >*/
+  GDBusProxy parent_instance;
+  ZMoComLynqDbusNameProxyPrivate *priv;
+};
+
+struct _ZMoComLynqDbusNameProxyClass
+{
+  GDBusProxyClass parent_class;
+};
+
+GType zmo_com_lynq_dbus_name_proxy_get_type (void) G_GNUC_CONST;
+
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ZMoComLynqDbusNameProxy, g_object_unref)
+#endif
+
+void zmo_com_lynq_dbus_name_proxy_new (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data);
+ZMoComLynqDbusName *zmo_com_lynq_dbus_name_proxy_new_finish (
+    GAsyncResult        *res,
+    GError             **error);
+ZMoComLynqDbusName *zmo_com_lynq_dbus_name_proxy_new_sync (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error);
+
+void zmo_com_lynq_dbus_name_proxy_new_for_bus (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data);
+ZMoComLynqDbusName *zmo_com_lynq_dbus_name_proxy_new_for_bus_finish (
+    GAsyncResult        *res,
+    GError             **error);
+ZMoComLynqDbusName *zmo_com_lynq_dbus_name_proxy_new_for_bus_sync (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error);
+
+
+/* ---- */
+
+#define ZMO_TYPE_COM_LYNQ_DBUS_NAME_SKELETON (zmo_com_lynq_dbus_name_skeleton_get_type ())
+#define ZMO_COM_LYNQ_DBUS_NAME_SKELETON(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), ZMO_TYPE_COM_LYNQ_DBUS_NAME_SKELETON, ZMoComLynqDbusNameSkeleton))
+#define ZMO_COM_LYNQ_DBUS_NAME_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), ZMO_TYPE_COM_LYNQ_DBUS_NAME_SKELETON, ZMoComLynqDbusNameSkeletonClass))
+#define ZMO_COM_LYNQ_DBUS_NAME_SKELETON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), ZMO_TYPE_COM_LYNQ_DBUS_NAME_SKELETON, ZMoComLynqDbusNameSkeletonClass))
+#define ZMO_IS_COM_LYNQ_DBUS_NAME_SKELETON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), ZMO_TYPE_COM_LYNQ_DBUS_NAME_SKELETON))
+#define ZMO_IS_COM_LYNQ_DBUS_NAME_SKELETON_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), ZMO_TYPE_COM_LYNQ_DBUS_NAME_SKELETON))
+
+typedef struct _ZMoComLynqDbusNameSkeleton ZMoComLynqDbusNameSkeleton;
+typedef struct _ZMoComLynqDbusNameSkeletonClass ZMoComLynqDbusNameSkeletonClass;
+typedef struct _ZMoComLynqDbusNameSkeletonPrivate ZMoComLynqDbusNameSkeletonPrivate;
+
+struct _ZMoComLynqDbusNameSkeleton
+{
+  /*< private >*/
+  GDBusInterfaceSkeleton parent_instance;
+  ZMoComLynqDbusNameSkeletonPrivate *priv;
+};
+
+struct _ZMoComLynqDbusNameSkeletonClass
+{
+  GDBusInterfaceSkeletonClass parent_class;
+};
+
+GType zmo_com_lynq_dbus_name_skeleton_get_type (void) G_GNUC_CONST;
+
+#if GLIB_CHECK_VERSION(2, 44, 0)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (ZMoComLynqDbusNameSkeleton, g_object_unref)
+#endif
+
+ZMoComLynqDbusName *zmo_com_lynq_dbus_name_skeleton_new (void);
+
+
+G_END_DECLS
+
+#endif /* ___HOME_WW_SHARE_TEST_NEW_DBUS_DBUS_CLT_BUILD_DBUS_GENERATED_H__ */
diff --git a/src/lynq/lib/liblynq-broadcast/include/lynq_dbus/dbusCommon.h b/src/lynq/lib/liblynq-broadcast/include/lynq_dbus/dbusCommon.h
new file mode 100644
index 0000000..99cbfe9
--- /dev/null
+++ b/src/lynq/lib/liblynq-broadcast/include/lynq_dbus/dbusCommon.h
@@ -0,0 +1,14 @@
+#ifndef YANLIN_GDBUS_EXAMPLE_H
+#define YANLIN_GDBUS_EXAMPLE_H
+#include "dbus-generated.h"
+#include <gio/gio.h> /* Bus define */
+#define _ZMoProxyNewSync zmo_com_lynq_dbus_name_proxy_new_sync;
+#define _ZMoSkeletonNew zmo_com_lynq_dbus_name_skeleton_new;
+#define YANLIN_GDBUS_EXAMPLE_BUS         G_BUS_TYPE_SESSION
+#define GDBUS_NAME    "com.lynq.dbus.Broadcast"
+#define GDBUS_OBJECT_PATH "/com/lynq/Dbus/Broadcast"
+
+typedef struct ZMoComLynqDbusName _ZMoDbusName;
+
+
+#endif
diff --git a/src/lynq/lib/liblynq-broadcast/include/lynq_dbus/libServer.h b/src/lynq/lib/liblynq-broadcast/include/lynq_dbus/libServer.h
new file mode 100644
index 0000000..2c5f1ad
--- /dev/null
+++ b/src/lynq/lib/liblynq-broadcast/include/lynq_dbus/libServer.h
@@ -0,0 +1,22 @@
+#ifndef __SERVER_H__
+#define __SERVER_H__
+
+#include <string.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include <stdbool.h>
+#include "dbusCommon.h"
+/** thread function's definition */
+static _ZMoDbusName *pSkeleton = NULL;
+static gboolean Emit_My_signal1(gconstpointer p);
+static gboolean Emit_My_Signal2(gconstpointer p);
+static gboolean My_Method1(_ZMoDbusName* object, GDBusMethodInvocation* invocation, const gchar* in_arg, gpointer user_data);
+static gboolean My_Method2(_ZMoDbusName* object, GDBusMethodInvocation* invocation, GVariant* in_arg, gpointer user_data);
+static void bus_acquired_cb(GDBusConnection* connection, const gchar* bus_name, gpointer user_data);
+static void name_acquired_cb(GDBusConnection* connection, const gchar* bus_name, gpointer user_data);
+static void name_lost_cb(GDBusConnection* connection, const gchar* bus_name, gpointer user_data);
+void* service_thread_run(void*);
+int service_thread_create(void);
+bool InitDBusCommunicationServer();
+bool DeinitDBusCommunicationServer(void);
+#endif
diff --git a/src/lynq/lib/liblynq-broadcast/include/lynq_dbus/libclient.h b/src/lynq/lib/liblynq-broadcast/include/lynq_dbus/libclient.h
new file mode 100644
index 0000000..055c676
--- /dev/null
+++ b/src/lynq/lib/liblynq-broadcast/include/lynq_dbus/libclient.h
@@ -0,0 +1,47 @@
+#ifndef __LIB_CLIENT__
+#define __LIB_CLIENT__
+
+#include <string.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include <stdbool.h>
+#include <glib-2.0/glib.h>
+
+#include "dbusCommon.h"
+#define RET_SIGNAL_HANDLE_SIZE 3
+
+typedef void (*SIGNAL1CALLBACK)(const gchar*);
+typedef void (*SIGNAL2CALLBACK)(const gint, const gchar*);
+typedef struct signalcallback
+{
+    SIGNAL1CALLBACK callback1;  
+    SIGNAL2CALLBACK callback2;
+}S_SIGNAL_CALLBACK;
+
+typedef void (*METHOD1CALLBACK)(const gchar*, const GError*);
+typedef void (*METHOD2CALLBACK)(const gchar*, const gint, GError*);
+typedef struct methodcallback
+{
+    METHOD1CALLBACK callback1;  
+    METHOD2CALLBACK callback2;
+}S_METHOD_CALLBACK;
+
+
+static gboolean My_Signal_1_Handler(_ZMoDbusName *object, const gchar *arg, gpointer userdata);
+static gboolean My_Signal_2_Handler(_ZMoDbusName *object,  GVariant *arg, gpointer userdata);
+static void cb_OwnerNameChangedNotify(GObject *object, GParamSpec *pspec, gpointer userdata);
+bool registerClientSignalHandler(_ZMoDbusName *pProxy);
+void registerSignalCallback(S_SIGNAL_CALLBACK *callback);
+void registerMethodCallback(S_METHOD_CALLBACK *callback);
+static void MethodCallback_1(GObject* source_object, GAsyncResult* res, gpointer userdata);
+void myMethodAsync_1(const char* in_arg);
+void myMethod_1(const gchar *in_arg, gchar** out_arg, GError** pError);
+static void MethodCallback_2(GObject* source_object, GAsyncResult* res, gpointer user_data);
+void myMethodAsync_2(const gint in_arg1, const gint in_arg2);
+void myMethod_2(const gint in_arg1, const gint in_arg2, gchar **out_arg1, gint *out_arg2, GError** pError);
+void *client_run_tread(void* arg);
+int client_thread_create(void);
+bool ExampleDBusServiceIsReady(void);
+bool InitDBusCommunication(const gchar* bus_name, const gchar* object_path);
+bool DeInitDBusCommunication(void);
+#endif
diff --git a/src/lynq/lib/liblynq-broadcast/liblynq-broadcast/broadcast_receiver.c b/src/lynq/lib/liblynq-broadcast/liblynq-broadcast/broadcast_receiver.c
new file mode 100644
index 0000000..d7a11e6
--- /dev/null
+++ b/src/lynq/lib/liblynq-broadcast/liblynq-broadcast/broadcast_receiver.c
@@ -0,0 +1,222 @@
+#include <stdio.h>
+#include <string.h>
+#include <pthread.h>
+#include <ctype.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <log/log.h>
+#include "broadcast_receiver.h"
+#include "link_id.h"
+#define BROADCAST_BY_NAME "broadcast_to_name"
+#define BROADCAST_BY_ID   "broadcast_to_id"
+#define BROADCAST_UNFIXED_PARM   "broadcast_parme_unfixed"
+#define BROADCAST_SERVICE "broadcast.lynq" /*well-known bus name */
+#define BROADCAST_DATA_INTERFACE "broadcast.lynq.Data" /*interface name*/
+#define BROADCAST_DATA_PATH "/broadcast/lynq/data" /*object name*/
+#define LOG_TAG "BROADCAST_RECEIVE"
+static GMainLoop *loop = NULL;
+static GDBusProxy *pProxy = NULL;
+BroadcastCallbackByName callback_by_name = NULL;
+BroadcastCallbackById Callback_by_id = NULL;
+BroadcastCallbackParamUnfixed callbacke_param_unfixed = NULL;
+static pthread_mutex_t mutex_id = PTHREAD_MUTEX_INITIALIZER;
+static pthread_mutex_t mutex_name = PTHREAD_MUTEX_INITIALIZER;
+
+void proxy_signals_on_signal_by_name (GDBusProxy  *proxy,
+                              const gchar *sender_name,
+                              const gchar *signal_name,
+                              GVariant    *parameters,
+                              gpointer     user_data)
+{
+    const gchar *name, *param;
+    int id;
+    int data_length;
+    RLOGD("signal_name: %s,sender_name:%s\n", signal_name,sender_name);
+    if(!strcmp(signal_name,BROADCAST_BY_NAME)){
+        
+        g_variant_get (parameters,"(sis)",&name,&data_length,&param);
+        pthread_mutex_lock(&mutex_name);
+        if((NULL != FindNodeByName(name)) && (NULL != callback_by_name))
+        {
+            callback_by_name(name,data_length,param);
+        }
+        else
+        {
+            RLOGE("callback_by_name NULL");
+        }
+        pthread_mutex_unlock(&mutex_name);
+    }
+    else if(!strcmp(signal_name,BROADCAST_BY_ID))
+    {
+        g_variant_get (parameters,"(iis)",&id,&data_length,&param);	
+        pthread_mutex_lock(&mutex_id);
+        if((NULL != FindNode(id)) && (NULL != Callback_by_id))
+        {
+            Callback_by_id(id,data_length,param);
+        }
+        
+        else
+        {
+            RLOGE("Callback_by_id NULL or  not has this broadcast id");
+        }
+        pthread_mutex_unlock(&mutex_id);
+    }
+    else if(!strcmp(signal_name,BROADCAST_UNFIXED_PARM))
+    {
+        GVariant  *data;
+        g_variant_get (parameters,"(s@*)",&name,&data);
+        pthread_mutex_lock(&mutex_name);
+        if((NULL != FindNodeByName(name)) && (NULL != callbacke_param_unfixed))
+        {
+            callbacke_param_unfixed(name,data);
+            RLOGD("callbacke_param_unfixed");
+        }
+        else
+        {
+            RLOGE("Callback_by_id NULL");
+        }
+        pthread_mutex_unlock(&mutex_name);
+        
+    }
+    else
+    {
+        RLOGD("discard broadcast");
+        return;
+    }
+
+}
+
+gboolean register_signal(GDBusProxy *proxy)
+{
+    gulong signal_handler_id;
+    signal_handler_id = g_signal_connect(proxy, "g-signal",
+                      G_CALLBACK (proxy_signals_on_signal_by_name), NULL);
+
+    RLOGD("proxy is ready");
+    if (signal_handler_id == 0) {
+        RLOGD("listen singal fail!");
+        return FALSE;
+    }
+    return TRUE;
+}
+void receive_callback_by_name( char* name,BroadcastCallbackByName callback)
+{
+    if (NULL != callback){
+        //memcpy(&mbroadcastcallback, callback, sizeof(broadcastCallback));
+        pthread_mutex_lock(&mutex_name);
+        AddListTillByName(name);
+        pthread_mutex_unlock(&mutex_name);
+        callback_by_name = callback;
+
+    }
+    else{
+        RLOGD("registerSignalCallback: parameter point is NULL");
+    }
+}
+void receive_callback_by_id(int id,BroadcastCallbackById callback)
+{
+    if (NULL != callback){
+        //memcpy(&mbroadcastcallback, callback, sizeof(broadcastCallback));
+        pthread_mutex_lock(&mutex_id);
+        AddListTill(id);
+        pthread_mutex_unlock(&mutex_id);
+        Callback_by_id = callback;
+    }
+    else{
+        RLOGD("registerSignalCallback: parameter point is NULL");
+    }
+}
+
+void receive_callback_prame_unfixed(char* name,BroadcastCallbackParamUnfixed callback)
+{
+    if (NULL != callback){
+        //memcpy(&mbroadcastcallback, callback, sizeof(broadcastCallback));
+        pthread_mutex_lock(&mutex_name);
+        AddListTillByName(name);
+        pthread_mutex_unlock(&mutex_name);       
+        callbacke_param_unfixed = callback;
+    }
+    else{
+        RLOGD("registerSignalCallback: parameter point is NULL");
+    }
+}
+void *run_broadcast(void* arg)
+{
+    g_main_loop_run(loop);
+    return ((void*)0);
+}
+
+void delete_receive(void)
+{
+    if(pProxy != NULL) {
+        g_object_unref (pProxy);
+    }
+    if(loop != NULL) {
+        g_main_loop_unref(loop);
+    }
+}
+int thread_broadcast_create(void)
+{
+    int err;
+    pthread_t thr;
+    err = pthread_create(&thr, NULL, run_broadcast, NULL);
+    if(0 != err){
+            RLOGD("Can't create thread: %s\n", strerror(err));
+    }
+    else{       
+            RLOGD("New thread created: %s\n", strerror(err));
+    }
+
+    return err;
+}
+int broadcast_loop()
+{
+    g_main_loop_run(loop);
+}
+gboolean service_ready(void)
+{
+    gchar *owner_name = NULL;
+    owner_name = g_dbus_proxy_get_name_owner((GDBusProxy*)pProxy);
+    if(NULL != owner_name)
+    {
+        RLOGD("Owner Name: %s\n", owner_name);        
+        g_free(owner_name);
+        return TRUE;
+    }
+    else
+    {   
+        //RLOGD("Owner Name is NULL."); 
+		//sleep(5);
+        return FALSE;
+    }
+}
+void register_broadcast_loop(void)
+{
+    register_broadcast_receiver();
+    thread_broadcast_create();
+}
+
+void register_broadcast_receiver(void){
+     GError *error = NULL;
+     RLOGD("go!\n");	
+     loop = g_main_loop_new(NULL, FALSE);
+     pProxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SYSTEM,
+                                         G_DBUS_PROXY_FLAGS_NONE,
+                                         NULL, /* GDBusInterfaceInfo */
+                                         BROADCAST_SERVICE,
+                                         BROADCAST_DATA_PATH,
+                                         BROADCAST_DATA_INTERFACE,
+                                         NULL, /* GCancellable */
+                                         &error);
+    if (pProxy == NULL)
+    {
+      RLOGD ("Error creating proxy: %s\n", error->message);
+      delete_receive();
+    }
+    if (register_signal(pProxy)== FALSE){
+      RLOGD ("register Error");
+      delete_receive();
+    }
+    while(service_ready() != TRUE);
+}
\ No newline at end of file
diff --git a/src/lynq/lib/liblynq-broadcast/liblynq-broadcast/broadcast_send.c b/src/lynq/lib/liblynq-broadcast/liblynq-broadcast/broadcast_send.c
new file mode 100644
index 0000000..3e0e2b9
--- /dev/null
+++ b/src/lynq/lib/liblynq-broadcast/liblynq-broadcast/broadcast_send.c
@@ -0,0 +1,168 @@
+#include <gio/gio.h>
+#include <stdlib.h>
+#include "broadcast_send.h"
+#include <log/log.h>
+
+#define BROADCAST_SERVICE "broadcast.lynq" /*well-known bus name */
+#define BROADCAST_DATA_INTERFACE "broadcast.lynq.Data" /*interface name*/
+#define BROADCAST_DATA_PATH "/broadcast/lynq/data" /*object name*/
+#define LOG_TAG "BROADCAST_SEND"
+static GMainLoop *loop = NULL;
+static GDBusProxy *proxy = NULL;
+void unregister_broadcast_send(void)
+{
+    if(proxy != NULL) 
+    {
+     g_object_unref (proxy);
+    }
+}
+
+int send_broadcast_by_name (char * broadcast_name,int data_length ,char *param)
+{
+  
+    GDBusConnection *c1;
+    GVariant *result;
+    GError *error;
+    GMainLoop *loop;
+    gint32  set_result = -1;
+    g_type_init();
+    loop = g_main_loop_new(NULL, FALSE);   /** create main loop, but do not start it.*/
+    error = NULL;
+    c1 = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &error);
+    result = g_dbus_connection_call_sync (c1,
+                                        BROADCAST_SERVICE,  /* bus name */
+                                        BROADCAST_DATA_PATH, /* object path */
+                                        BROADCAST_DATA_INTERFACE,  /* interface name */
+                                        "send_broadcast_by_name",                 /* method name */
+                                        g_variant_new("(sis)", broadcast_name,data_length, param),
+                                        NULL,                    /* return type */
+                                        G_DBUS_CALL_FLAGS_NONE,
+                                        -1,
+                                        NULL,
+                                        &error);
+    g_variant_unref (result);
+    //g_main_loop_run (loop);
+    g_main_loop_unref (loop);
+    return set_result;
+}
+int send_broadcast_by_id (int broadcast_id,int data_length ,char *param)
+{
+
+    GDBusConnection *c1;
+    GVariant *result;
+    GError *error;
+    GMainLoop *loop;
+    gint32  set_result = -1;
+    g_type_init();
+    loop = g_main_loop_new(NULL, FALSE);   /** create main loop, but do not start it.*/
+    error = NULL;
+    c1 = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &error);
+    result = g_dbus_connection_call_sync (c1,
+                                        BROADCAST_SERVICE,  /* bus name */
+                                        BROADCAST_DATA_PATH, /* object path */
+                                        BROADCAST_DATA_INTERFACE,  /* interface name */
+                                        "send_broadcast_by_id",                 /* method name */
+                                        g_variant_new("(iis)", broadcast_id,data_length, param),
+                                        NULL,                    /* return type */
+                                        G_DBUS_CALL_FLAGS_NONE,
+                                        -1,
+                                        NULL,
+                                        &error);
+    g_variant_unref (result);
+    g_main_loop_unref (loop);
+}
+
+int send_broadcast_param_unfixed (char * broadcast_name,GVariant *arg_InArg)
+{
+
+    GDBusConnection *c1;
+    GVariant *result;
+    GError *error;
+    GMainLoop *loop;
+    gint32  set_result = -1;
+    g_type_init();
+    loop = g_main_loop_new(NULL, FALSE);   /** create main loop, but do not start it.*/
+    error = NULL;
+    c1 = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &error);
+    result = g_dbus_connection_call_sync (c1,
+                                        BROADCAST_SERVICE,  /* bus name */
+                                        BROADCAST_DATA_PATH, /* object path */
+                                        BROADCAST_DATA_INTERFACE,  /* interface name */
+                                        "send_broadcast_param_unfixed",                 /* method name */
+                                        g_variant_new("(s@*)",broadcast_name,arg_InArg),
+                                        NULL,                    /* return type */
+                                        G_DBUS_CALL_FLAGS_NONE,
+                                        -1,
+                                        NULL,
+                                        &error);
+    g_variant_unref (result);
+    g_main_loop_unref (loop);
+}
+void proxy_ready(GObject *source, GAsyncResult *result, gpointer user_data) {
+    GError *error;
+
+    error = NULL;
+    proxy = g_dbus_proxy_new_for_bus_finish(result, &error);
+    if (proxy == NULL) 
+    {
+        RLOGE("create proxy fail");
+        unregister_broadcast_send();
+        return ;
+    }
+    while(service_ready_send() != TRUE);
+    RLOGD("proxy is ready");
+
+}
+void *run_send(void* arg)
+{
+    if(loop != NULL) {
+        g_main_loop_run(loop);
+    }else{
+        RLOGD("loop null");
+    }
+    return ((void*)0);
+}
+
+gboolean service_ready_send(void)
+{
+    gchar *owner_name = NULL;
+    owner_name = g_dbus_proxy_get_name_owner((GDBusProxy*)proxy);
+    if(NULL != owner_name)
+    {
+        RLOGD("Owner Name: %s\n", owner_name);        
+        g_free(owner_name);
+        return TRUE;
+    }
+    else
+    {   
+        RLOGD("Owner Name is NULL.");  
+        sleep(5);
+        return FALSE;
+    }
+}
+
+void register_broadcast_send ()
+{
+     GError *error = NULL;
+    proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SYSTEM,
+                                         G_DBUS_PROXY_FLAGS_NONE,
+                                         NULL, /* GDBusInterfaceInfo */
+                                         BROADCAST_SERVICE,
+                                         BROADCAST_DATA_PATH,
+                                         BROADCAST_DATA_INTERFACE,
+                                         NULL, /* GCancellable */
+                                         &error);
+    if (proxy == NULL)
+    {
+     RLOGD("broadcast proxy null");  
+     return;
+    }
+    while(service_ready_send() != TRUE);
+        
+}
+void register_broadcast_send_loop(void)
+{
+    register_broadcast_send();
+}
+
+
diff --git a/src/lynq/lib/liblynq-broadcast/liblynq-broadcast/com.ZMo.Gdbus.Example.xml b/src/lynq/lib/liblynq-broadcast/liblynq-broadcast/com.ZMo.Gdbus.Example.xml
new file mode 100644
index 0000000..337388a
--- /dev/null
+++ b/src/lynq/lib/liblynq-broadcast/liblynq-broadcast/com.ZMo.Gdbus.Example.xml
@@ -0,0 +1,29 @@
+<node >
+  <interface name="com.lynq.dbus.name">
+
+    <signal name="MySignal1">
+      <arg name="Value" type="s"/>
+    </signal>
+
+    <signal name="MySignal2">
+      <arg name="Value" type="(is)"/>
+    </signal>
+
+    <method name="MyMethod1">
+      <arg name="InArg"  direction="in"  type="s"/>
+      <arg name="OutArg" direction="out" type="s"/>
+    </method>
+
+    <method name="MyMethod2">
+      <arg name="InArg"  direction="in"  type="(ii)"/>
+      <arg name="OutArg" direction="out" type="(si)"/>
+    </method>
+
+    <method name="MyMethod3">
+      <arg name="InArg"  direction="in"  type="(iia{ss})"/>
+      <arg name="OutArg" direction="out" type="m(ii)s"/>
+    </method>
+
+  </interface>
+</node>
+
diff --git a/src/lynq/lib/liblynq-broadcast/liblynq-broadcast/dbus-generated.c b/src/lynq/lib/liblynq-broadcast/liblynq-broadcast/dbus-generated.c
new file mode 100644
index 0000000..c320211
--- /dev/null
+++ b/src/lynq/lib/liblynq-broadcast/liblynq-broadcast/dbus-generated.c
@@ -0,0 +1,1641 @@
+/*
+ * Generated by gdbus-codegen 2.56.4. DO NOT EDIT.
+ *
+ * The license of this code is the same as for the D-Bus interface description
+ * it was derived from.
+ */
+
+#ifdef HAVE_CONFIG_H
+#  include "config.h"
+#endif
+
+#include <dbus-generated.h>
+#include <string.h>
+#ifdef G_OS_UNIX
+#  include <gio-unix-2.0/gio/gunixfdlist.h>
+#endif
+
+typedef struct
+{
+  GDBusArgInfo parent_struct;
+  gboolean use_gvariant;
+} _ExtendedGDBusArgInfo;
+
+typedef struct
+{
+  GDBusMethodInfo parent_struct;
+  const gchar *signal_name;
+  gboolean pass_fdlist;
+} _ExtendedGDBusMethodInfo;
+
+typedef struct
+{
+  GDBusSignalInfo parent_struct;
+  const gchar *signal_name;
+} _ExtendedGDBusSignalInfo;
+
+typedef struct
+{
+  GDBusPropertyInfo parent_struct;
+  const gchar *hyphen_name;
+  gboolean use_gvariant;
+} _ExtendedGDBusPropertyInfo;
+
+typedef struct
+{
+  GDBusInterfaceInfo parent_struct;
+  const gchar *hyphen_name;
+} _ExtendedGDBusInterfaceInfo;
+
+typedef struct
+{
+  const _ExtendedGDBusPropertyInfo *info;
+  guint prop_id;
+  GValue orig_value; /* the value before the change */
+} ChangedProperty;
+
+static void
+_changed_property_free (ChangedProperty *data)
+{
+  g_value_unset (&data->orig_value);
+  g_free (data);
+}
+
+static gboolean
+_g_strv_equal0 (gchar **a, gchar **b)
+{
+  gboolean ret = FALSE;
+  guint n;
+  if (a == NULL && b == NULL)
+    {
+      ret = TRUE;
+      goto out;
+    }
+  if (a == NULL || b == NULL)
+    goto out;
+  if (g_strv_length (a) != g_strv_length (b))
+    goto out;
+  for (n = 0; a[n] != NULL; n++)
+    if (g_strcmp0 (a[n], b[n]) != 0)
+      goto out;
+  ret = TRUE;
+out:
+  return ret;
+}
+
+static gboolean
+_g_variant_equal0 (GVariant *a, GVariant *b)
+{
+  gboolean ret = FALSE;
+  if (a == NULL && b == NULL)
+    {
+      ret = TRUE;
+      goto out;
+    }
+  if (a == NULL || b == NULL)
+    goto out;
+  ret = g_variant_equal (a, b);
+out:
+  return ret;
+}
+
+G_GNUC_UNUSED static gboolean
+_g_value_equal (const GValue *a, const GValue *b)
+{
+  gboolean ret = FALSE;
+  g_assert (G_VALUE_TYPE (a) == G_VALUE_TYPE (b));
+  switch (G_VALUE_TYPE (a))
+    {
+      case G_TYPE_BOOLEAN:
+        ret = (g_value_get_boolean (a) == g_value_get_boolean (b));
+        break;
+      case G_TYPE_UCHAR:
+        ret = (g_value_get_uchar (a) == g_value_get_uchar (b));
+        break;
+      case G_TYPE_INT:
+        ret = (g_value_get_int (a) == g_value_get_int (b));
+        break;
+      case G_TYPE_UINT:
+        ret = (g_value_get_uint (a) == g_value_get_uint (b));
+        break;
+      case G_TYPE_INT64:
+        ret = (g_value_get_int64 (a) == g_value_get_int64 (b));
+        break;
+      case G_TYPE_UINT64:
+        ret = (g_value_get_uint64 (a) == g_value_get_uint64 (b));
+        break;
+      case G_TYPE_DOUBLE:
+        {
+          /* Avoid -Wfloat-equal warnings by doing a direct bit compare */
+          gdouble da = g_value_get_double (a);
+          gdouble db = g_value_get_double (b);
+          ret = memcmp (&da, &db, sizeof (gdouble)) == 0;
+        }
+        break;
+      case G_TYPE_STRING:
+        ret = (g_strcmp0 (g_value_get_string (a), g_value_get_string (b)) == 0);
+        break;
+      case G_TYPE_VARIANT:
+        ret = _g_variant_equal0 (g_value_get_variant (a), g_value_get_variant (b));
+        break;
+      default:
+        if (G_VALUE_TYPE (a) == G_TYPE_STRV)
+          ret = _g_strv_equal0 (g_value_get_boxed (a), g_value_get_boxed (b));
+        else
+          g_critical ("_g_value_equal() does not handle type %s", g_type_name (G_VALUE_TYPE (a)));
+        break;
+    }
+  return ret;
+}
+
+/* ------------------------------------------------------------------------
+ * Code for interface com.lynq.dbus.name
+ * ------------------------------------------------------------------------
+ */
+
+/**
+ * SECTION:ZMoComLynqDbusName
+ * @title: ZMoComLynqDbusName
+ * @short_description: Generated C code for the com.lynq.dbus.name D-Bus interface
+ *
+ * This section contains code for working with the <link linkend="gdbus-interface-com-lynq-dbus-name.top_of_page">com.lynq.dbus.name</link> D-Bus interface in C.
+ */
+
+/* ---- Introspection data for com.lynq.dbus.name ---- */
+
+static const _ExtendedGDBusArgInfo _zmo_com_lynq_dbus_name_method_info_my_method1_IN_ARG_InArg =
+{
+  {
+    -1,
+    (gchar *) "InArg",
+    (gchar *) "s",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _zmo_com_lynq_dbus_name_method_info_my_method1_IN_ARG_pointers[] =
+{
+  &_zmo_com_lynq_dbus_name_method_info_my_method1_IN_ARG_InArg,
+  NULL
+};
+
+static const _ExtendedGDBusArgInfo _zmo_com_lynq_dbus_name_method_info_my_method1_OUT_ARG_OutArg =
+{
+  {
+    -1,
+    (gchar *) "OutArg",
+    (gchar *) "s",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _zmo_com_lynq_dbus_name_method_info_my_method1_OUT_ARG_pointers[] =
+{
+  &_zmo_com_lynq_dbus_name_method_info_my_method1_OUT_ARG_OutArg,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _zmo_com_lynq_dbus_name_method_info_my_method1 =
+{
+  {
+    -1,
+    (gchar *) "MyMethod1",
+    (GDBusArgInfo **) &_zmo_com_lynq_dbus_name_method_info_my_method1_IN_ARG_pointers,
+    (GDBusArgInfo **) &_zmo_com_lynq_dbus_name_method_info_my_method1_OUT_ARG_pointers,
+    NULL
+  },
+  "handle-my-method1",
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _zmo_com_lynq_dbus_name_method_info_my_method2_IN_ARG_InArg =
+{
+  {
+    -1,
+    (gchar *) "InArg",
+    (gchar *) "(ii)",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _zmo_com_lynq_dbus_name_method_info_my_method2_IN_ARG_pointers[] =
+{
+  &_zmo_com_lynq_dbus_name_method_info_my_method2_IN_ARG_InArg,
+  NULL
+};
+
+static const _ExtendedGDBusArgInfo _zmo_com_lynq_dbus_name_method_info_my_method2_OUT_ARG_OutArg =
+{
+  {
+    -1,
+    (gchar *) "OutArg",
+    (gchar *) "(si)",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _zmo_com_lynq_dbus_name_method_info_my_method2_OUT_ARG_pointers[] =
+{
+  &_zmo_com_lynq_dbus_name_method_info_my_method2_OUT_ARG_OutArg,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _zmo_com_lynq_dbus_name_method_info_my_method2 =
+{
+  {
+    -1,
+    (gchar *) "MyMethod2",
+    (GDBusArgInfo **) &_zmo_com_lynq_dbus_name_method_info_my_method2_IN_ARG_pointers,
+    (GDBusArgInfo **) &_zmo_com_lynq_dbus_name_method_info_my_method2_OUT_ARG_pointers,
+    NULL
+  },
+  "handle-my-method2",
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo _zmo_com_lynq_dbus_name_method_info_my_method3_IN_ARG_InArg =
+{
+  {
+    -1,
+    (gchar *) "InArg",
+    (gchar *) "(iia{ss})",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _zmo_com_lynq_dbus_name_method_info_my_method3_IN_ARG_pointers[] =
+{
+  &_zmo_com_lynq_dbus_name_method_info_my_method3_IN_ARG_InArg,
+  NULL
+};
+
+static const _ExtendedGDBusArgInfo _zmo_com_lynq_dbus_name_method_info_my_method3_OUT_ARG_OutArg =
+{
+  {
+    -1,
+    (gchar *) "OutArg",
+    (gchar *) "m(ii)s",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _zmo_com_lynq_dbus_name_method_info_my_method3_OUT_ARG_pointers[] =
+{
+  &_zmo_com_lynq_dbus_name_method_info_my_method3_OUT_ARG_OutArg,
+  NULL
+};
+
+static const _ExtendedGDBusMethodInfo _zmo_com_lynq_dbus_name_method_info_my_method3 =
+{
+  {
+    -1,
+    (gchar *) "MyMethod3",
+    (GDBusArgInfo **) &_zmo_com_lynq_dbus_name_method_info_my_method3_IN_ARG_pointers,
+    (GDBusArgInfo **) &_zmo_com_lynq_dbus_name_method_info_my_method3_OUT_ARG_pointers,
+    NULL
+  },
+  "handle-my-method3",
+  FALSE
+};
+
+static const _ExtendedGDBusMethodInfo * const _zmo_com_lynq_dbus_name_method_info_pointers[] =
+{
+  &_zmo_com_lynq_dbus_name_method_info_my_method1,
+  &_zmo_com_lynq_dbus_name_method_info_my_method2,
+  &_zmo_com_lynq_dbus_name_method_info_my_method3,
+  NULL
+};
+
+static const _ExtendedGDBusArgInfo _zmo_com_lynq_dbus_name_signal_info_my_signal1_ARG_Value =
+{
+  {
+    -1,
+    (gchar *) "Value",
+    (gchar *) "s",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _zmo_com_lynq_dbus_name_signal_info_my_signal1_ARG_pointers[] =
+{
+  &_zmo_com_lynq_dbus_name_signal_info_my_signal1_ARG_Value,
+  NULL
+};
+
+static const _ExtendedGDBusSignalInfo _zmo_com_lynq_dbus_name_signal_info_my_signal1 =
+{
+  {
+    -1,
+    (gchar *) "MySignal1",
+    (GDBusArgInfo **) &_zmo_com_lynq_dbus_name_signal_info_my_signal1_ARG_pointers,
+    NULL
+  },
+  "my-signal1"
+};
+
+static const _ExtendedGDBusArgInfo _zmo_com_lynq_dbus_name_signal_info_my_signal2_ARG_Value =
+{
+  {
+    -1,
+    (gchar *) "Value",
+    (gchar *) "(is)",
+    NULL
+  },
+  FALSE
+};
+
+static const _ExtendedGDBusArgInfo * const _zmo_com_lynq_dbus_name_signal_info_my_signal2_ARG_pointers[] =
+{
+  &_zmo_com_lynq_dbus_name_signal_info_my_signal2_ARG_Value,
+  NULL
+};
+
+static const _ExtendedGDBusSignalInfo _zmo_com_lynq_dbus_name_signal_info_my_signal2 =
+{
+  {
+    -1,
+    (gchar *) "MySignal2",
+    (GDBusArgInfo **) &_zmo_com_lynq_dbus_name_signal_info_my_signal2_ARG_pointers,
+    NULL
+  },
+  "my-signal2"
+};
+
+static const _ExtendedGDBusSignalInfo * const _zmo_com_lynq_dbus_name_signal_info_pointers[] =
+{
+  &_zmo_com_lynq_dbus_name_signal_info_my_signal1,
+  &_zmo_com_lynq_dbus_name_signal_info_my_signal2,
+  NULL
+};
+
+static const _ExtendedGDBusInterfaceInfo _zmo_com_lynq_dbus_name_interface_info =
+{
+  {
+    -1,
+    (gchar *) "com.lynq.dbus.name",
+    (GDBusMethodInfo **) &_zmo_com_lynq_dbus_name_method_info_pointers,
+    (GDBusSignalInfo **) &_zmo_com_lynq_dbus_name_signal_info_pointers,
+    NULL,
+    NULL
+  },
+  "com-lynq-dbus-name",
+};
+
+
+/**
+ * zmo_com_lynq_dbus_name_interface_info:
+ *
+ * Gets a machine-readable description of the <link linkend="gdbus-interface-com-lynq-dbus-name.top_of_page">com.lynq.dbus.name</link> D-Bus interface.
+ *
+ * Returns: (transfer none): A #GDBusInterfaceInfo. Do not free.
+ */
+GDBusInterfaceInfo *
+zmo_com_lynq_dbus_name_interface_info (void)
+{
+  return (GDBusInterfaceInfo *) &_zmo_com_lynq_dbus_name_interface_info.parent_struct;
+}
+
+/**
+ * zmo_com_lynq_dbus_name_override_properties:
+ * @klass: The class structure for a #GObject derived class.
+ * @property_id_begin: The property id to assign to the first overridden property.
+ *
+ * Overrides all #GObject properties in the #ZMoComLynqDbusName interface for a concrete class.
+ * The properties are overridden in the order they are defined.
+ *
+ * Returns: The last property id.
+ */
+guint
+zmo_com_lynq_dbus_name_override_properties (GObjectClass *klass, guint property_id_begin)
+{
+  return property_id_begin - 1;
+}
+
+
+
+/**
+ * ZMoComLynqDbusName:
+ *
+ * Abstract interface type for the D-Bus interface <link linkend="gdbus-interface-com-lynq-dbus-name.top_of_page">com.lynq.dbus.name</link>.
+ */
+
+/**
+ * ZMoComLynqDbusNameIface:
+ * @parent_iface: The parent interface.
+ * @handle_my_method1: Handler for the #ZMoComLynqDbusName::handle-my-method1 signal.
+ * @handle_my_method2: Handler for the #ZMoComLynqDbusName::handle-my-method2 signal.
+ * @handle_my_method3: Handler for the #ZMoComLynqDbusName::handle-my-method3 signal.
+ * @my_signal1: Handler for the #ZMoComLynqDbusName::my-signal1 signal.
+ * @my_signal2: Handler for the #ZMoComLynqDbusName::my-signal2 signal.
+ *
+ * Virtual table for the D-Bus interface <link linkend="gdbus-interface-com-lynq-dbus-name.top_of_page">com.lynq.dbus.name</link>.
+ */
+
+typedef ZMoComLynqDbusNameIface ZMoComLynqDbusNameInterface;
+G_DEFINE_INTERFACE (ZMoComLynqDbusName, zmo_com_lynq_dbus_name, G_TYPE_OBJECT)
+
+static void
+zmo_com_lynq_dbus_name_default_init (ZMoComLynqDbusNameIface *iface)
+{
+  /* GObject signals for incoming D-Bus method calls: */
+  /**
+   * ZMoComLynqDbusName::handle-my-method1:
+   * @object: A #ZMoComLynqDbusName.
+   * @invocation: A #GDBusMethodInvocation.
+   * @arg_InArg: Argument passed by remote caller.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-com-lynq-dbus-name.MyMethod1">MyMethod1()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call zmo_com_lynq_dbus_name_complete_my_method1() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-my-method1",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (ZMoComLynqDbusNameIface, handle_my_method1),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    2,
+    G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_STRING);
+
+  /**
+   * ZMoComLynqDbusName::handle-my-method2:
+   * @object: A #ZMoComLynqDbusName.
+   * @invocation: A #GDBusMethodInvocation.
+   * @arg_InArg: Argument passed by remote caller.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-com-lynq-dbus-name.MyMethod2">MyMethod2()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call zmo_com_lynq_dbus_name_complete_my_method2() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-my-method2",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (ZMoComLynqDbusNameIface, handle_my_method2),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    2,
+    G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_VARIANT);
+
+  /**
+   * ZMoComLynqDbusName::handle-my-method3:
+   * @object: A #ZMoComLynqDbusName.
+   * @invocation: A #GDBusMethodInvocation.
+   * @arg_InArg: Argument passed by remote caller.
+   *
+   * Signal emitted when a remote caller is invoking the <link linkend="gdbus-method-com-lynq-dbus-name.MyMethod3">MyMethod3()</link> D-Bus method.
+   *
+   * If a signal handler returns %TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call zmo_com_lynq_dbus_name_complete_my_method3() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %G_DBUS_ERROR_UNKNOWN_METHOD error is returned.
+   *
+   * Returns: %TRUE if the invocation was handled, %FALSE to let other signal handlers run.
+   */
+  g_signal_new ("handle-my-method3",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (ZMoComLynqDbusNameIface, handle_my_method3),
+    g_signal_accumulator_true_handled,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_BOOLEAN,
+    2,
+    G_TYPE_DBUS_METHOD_INVOCATION, G_TYPE_VARIANT);
+
+  /* GObject signals for received D-Bus signals: */
+  /**
+   * ZMoComLynqDbusName::my-signal1:
+   * @object: A #ZMoComLynqDbusName.
+   * @arg_Value: Argument.
+   *
+   * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-com-lynq-dbus-name.MySignal1">"MySignal1"</link> is received.
+   *
+   * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
+   */
+  g_signal_new ("my-signal1",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (ZMoComLynqDbusNameIface, my_signal1),
+    NULL,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_NONE,
+    1, G_TYPE_STRING);
+
+  /**
+   * ZMoComLynqDbusName::my-signal2:
+   * @object: A #ZMoComLynqDbusName.
+   * @arg_Value: Argument.
+   *
+   * On the client-side, this signal is emitted whenever the D-Bus signal <link linkend="gdbus-signal-com-lynq-dbus-name.MySignal2">"MySignal2"</link> is received.
+   *
+   * On the service-side, this signal can be used with e.g. g_signal_emit_by_name() to make the object emit the D-Bus signal.
+   */
+  g_signal_new ("my-signal2",
+    G_TYPE_FROM_INTERFACE (iface),
+    G_SIGNAL_RUN_LAST,
+    G_STRUCT_OFFSET (ZMoComLynqDbusNameIface, my_signal2),
+    NULL,
+    NULL,
+    g_cclosure_marshal_generic,
+    G_TYPE_NONE,
+    1, G_TYPE_VARIANT);
+
+}
+
+/**
+ * zmo_com_lynq_dbus_name_emit_my_signal1:
+ * @object: A #ZMoComLynqDbusName.
+ * @arg_Value: Argument to pass with the signal.
+ *
+ * Emits the <link linkend="gdbus-signal-com-lynq-dbus-name.MySignal1">"MySignal1"</link> D-Bus signal.
+ */
+void
+zmo_com_lynq_dbus_name_emit_my_signal1 (
+    ZMoComLynqDbusName *object,
+    const gchar *arg_Value)
+{
+  g_signal_emit_by_name (object, "my-signal1", arg_Value);
+}
+
+/**
+ * zmo_com_lynq_dbus_name_emit_my_signal2:
+ * @object: A #ZMoComLynqDbusName.
+ * @arg_Value: Argument to pass with the signal.
+ *
+ * Emits the <link linkend="gdbus-signal-com-lynq-dbus-name.MySignal2">"MySignal2"</link> D-Bus signal.
+ */
+void
+zmo_com_lynq_dbus_name_emit_my_signal2 (
+    ZMoComLynqDbusName *object,
+    GVariant *arg_Value)
+{
+  g_signal_emit_by_name (object, "my-signal2", arg_Value);
+}
+
+/**
+ * zmo_com_lynq_dbus_name_call_my_method1:
+ * @proxy: A #ZMoComLynqDbusNameProxy.
+ * @arg_InArg: Argument to pass with the method invocation.
+ * @cancellable: (nullable): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-com-lynq-dbus-name.MyMethod1">MyMethod1()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call zmo_com_lynq_dbus_name_call_my_method1_finish() to get the result of the operation.
+ *
+ * See zmo_com_lynq_dbus_name_call_my_method1_sync() for the synchronous, blocking version of this method.
+ */
+void
+zmo_com_lynq_dbus_name_call_my_method1 (
+    ZMoComLynqDbusName *proxy,
+    const gchar *arg_InArg,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "MyMethod1",
+    g_variant_new ("(s)",
+                   arg_InArg),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * zmo_com_lynq_dbus_name_call_my_method1_finish:
+ * @proxy: A #ZMoComLynqDbusNameProxy.
+ * @out_OutArg: (out): Return location for return parameter or %NULL to ignore.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to zmo_com_lynq_dbus_name_call_my_method1().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with zmo_com_lynq_dbus_name_call_my_method1().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+zmo_com_lynq_dbus_name_call_my_method1_finish (
+    ZMoComLynqDbusName *proxy,
+    gchar **out_OutArg,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(s)",
+                 out_OutArg);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * zmo_com_lynq_dbus_name_call_my_method1_sync:
+ * @proxy: A #ZMoComLynqDbusNameProxy.
+ * @arg_InArg: Argument to pass with the method invocation.
+ * @out_OutArg: (out): Return location for return parameter or %NULL to ignore.
+ * @cancellable: (nullable): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-com-lynq-dbus-name.MyMethod1">MyMethod1()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See zmo_com_lynq_dbus_name_call_my_method1() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+zmo_com_lynq_dbus_name_call_my_method1_sync (
+    ZMoComLynqDbusName *proxy,
+    const gchar *arg_InArg,
+    gchar **out_OutArg,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "MyMethod1",
+    g_variant_new ("(s)",
+                   arg_InArg),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(s)",
+                 out_OutArg);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * zmo_com_lynq_dbus_name_call_my_method2:
+ * @proxy: A #ZMoComLynqDbusNameProxy.
+ * @arg_InArg: Argument to pass with the method invocation.
+ * @cancellable: (nullable): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-com-lynq-dbus-name.MyMethod2">MyMethod2()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call zmo_com_lynq_dbus_name_call_my_method2_finish() to get the result of the operation.
+ *
+ * See zmo_com_lynq_dbus_name_call_my_method2_sync() for the synchronous, blocking version of this method.
+ */
+void
+zmo_com_lynq_dbus_name_call_my_method2 (
+    ZMoComLynqDbusName *proxy,
+    GVariant *arg_InArg,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "MyMethod2",
+    g_variant_new ("(@(ii))",
+                   arg_InArg),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * zmo_com_lynq_dbus_name_call_my_method2_finish:
+ * @proxy: A #ZMoComLynqDbusNameProxy.
+ * @out_OutArg: (out): Return location for return parameter or %NULL to ignore.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to zmo_com_lynq_dbus_name_call_my_method2().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with zmo_com_lynq_dbus_name_call_my_method2().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+zmo_com_lynq_dbus_name_call_my_method2_finish (
+    ZMoComLynqDbusName *proxy,
+    GVariant **out_OutArg,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(@(si))",
+                 out_OutArg);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * zmo_com_lynq_dbus_name_call_my_method2_sync:
+ * @proxy: A #ZMoComLynqDbusNameProxy.
+ * @arg_InArg: Argument to pass with the method invocation.
+ * @out_OutArg: (out): Return location for return parameter or %NULL to ignore.
+ * @cancellable: (nullable): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-com-lynq-dbus-name.MyMethod2">MyMethod2()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See zmo_com_lynq_dbus_name_call_my_method2() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+zmo_com_lynq_dbus_name_call_my_method2_sync (
+    ZMoComLynqDbusName *proxy,
+    GVariant *arg_InArg,
+    GVariant **out_OutArg,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "MyMethod2",
+    g_variant_new ("(@(ii))",
+                   arg_InArg),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(@(si))",
+                 out_OutArg);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * zmo_com_lynq_dbus_name_call_my_method3:
+ * @proxy: A #ZMoComLynqDbusNameProxy.
+ * @arg_InArg: Argument to pass with the method invocation.
+ * @cancellable: (nullable): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied or %NULL.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously invokes the <link linkend="gdbus-method-com-lynq-dbus-name.MyMethod3">MyMethod3()</link> D-Bus method on @proxy.
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call zmo_com_lynq_dbus_name_call_my_method3_finish() to get the result of the operation.
+ *
+ * See zmo_com_lynq_dbus_name_call_my_method3_sync() for the synchronous, blocking version of this method.
+ */
+void
+zmo_com_lynq_dbus_name_call_my_method3 (
+    ZMoComLynqDbusName *proxy,
+    GVariant *arg_InArg,
+    GCancellable *cancellable,
+    GAsyncReadyCallback callback,
+    gpointer user_data)
+{
+  g_dbus_proxy_call (G_DBUS_PROXY (proxy),
+    "MyMethod3",
+    g_variant_new ("(@(iia{ss}))",
+                   arg_InArg),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    callback,
+    user_data);
+}
+
+/**
+ * zmo_com_lynq_dbus_name_call_my_method3_finish:
+ * @proxy: A #ZMoComLynqDbusNameProxy.
+ * @out_OutArg: (out): Return location for return parameter or %NULL to ignore.
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to zmo_com_lynq_dbus_name_call_my_method3().
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes an operation started with zmo_com_lynq_dbus_name_call_my_method3().
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+zmo_com_lynq_dbus_name_call_my_method3_finish (
+    ZMoComLynqDbusName *proxy,
+    GVariant **out_OutArg,
+    GAsyncResult *res,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_finish (G_DBUS_PROXY (proxy), res, error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(@m(ii)s)",
+                 out_OutArg);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * zmo_com_lynq_dbus_name_call_my_method3_sync:
+ * @proxy: A #ZMoComLynqDbusNameProxy.
+ * @arg_InArg: Argument to pass with the method invocation.
+ * @out_OutArg: (out): Return location for return parameter or %NULL to ignore.
+ * @cancellable: (nullable): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously invokes the <link linkend="gdbus-method-com-lynq-dbus-name.MyMethod3">MyMethod3()</link> D-Bus method on @proxy. The calling thread is blocked until a reply is received.
+ *
+ * See zmo_com_lynq_dbus_name_call_my_method3() for the asynchronous version of this method.
+ *
+ * Returns: (skip): %TRUE if the call succeded, %FALSE if @error is set.
+ */
+gboolean
+zmo_com_lynq_dbus_name_call_my_method3_sync (
+    ZMoComLynqDbusName *proxy,
+    GVariant *arg_InArg,
+    GVariant **out_OutArg,
+    GCancellable *cancellable,
+    GError **error)
+{
+  GVariant *_ret;
+  _ret = g_dbus_proxy_call_sync (G_DBUS_PROXY (proxy),
+    "MyMethod3",
+    g_variant_new ("(@(iia{ss}))",
+                   arg_InArg),
+    G_DBUS_CALL_FLAGS_NONE,
+    -1,
+    cancellable,
+    error);
+  if (_ret == NULL)
+    goto _out;
+  g_variant_get (_ret,
+                 "(@m(ii)s)",
+                 out_OutArg);
+  g_variant_unref (_ret);
+_out:
+  return _ret != NULL;
+}
+
+/**
+ * zmo_com_lynq_dbus_name_complete_my_method1:
+ * @object: A #ZMoComLynqDbusName.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ * @OutArg: Parameter to return.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-com-lynq-dbus-name.MyMethod1">MyMethod1()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+zmo_com_lynq_dbus_name_complete_my_method1 (
+    ZMoComLynqDbusName *object,
+    GDBusMethodInvocation *invocation,
+    const gchar *OutArg)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("(s)",
+                   OutArg));
+}
+
+/**
+ * zmo_com_lynq_dbus_name_complete_my_method2:
+ * @object: A #ZMoComLynqDbusName.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ * @OutArg: Parameter to return.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-com-lynq-dbus-name.MyMethod2">MyMethod2()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+zmo_com_lynq_dbus_name_complete_my_method2 (
+    ZMoComLynqDbusName *object,
+    GDBusMethodInvocation *invocation,
+    GVariant *OutArg)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("(@(si))",
+                   OutArg));
+}
+
+/**
+ * zmo_com_lynq_dbus_name_complete_my_method3:
+ * @object: A #ZMoComLynqDbusName.
+ * @invocation: (transfer full): A #GDBusMethodInvocation.
+ * @OutArg: Parameter to return.
+ *
+ * Helper function used in service implementations to finish handling invocations of the <link linkend="gdbus-method-com-lynq-dbus-name.MyMethod3">MyMethod3()</link> D-Bus method. If you instead want to finish handling an invocation by returning an error, use g_dbus_method_invocation_return_error() or similar.
+ *
+ * This method will free @invocation, you cannot use it afterwards.
+ */
+void
+zmo_com_lynq_dbus_name_complete_my_method3 (
+    ZMoComLynqDbusName *object,
+    GDBusMethodInvocation *invocation,
+    GVariant *OutArg)
+{
+  g_dbus_method_invocation_return_value (invocation,
+    g_variant_new ("(@m(ii)s)",
+                   OutArg));
+}
+
+/* ------------------------------------------------------------------------ */
+
+/**
+ * ZMoComLynqDbusNameProxy:
+ *
+ * The #ZMoComLynqDbusNameProxy structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * ZMoComLynqDbusNameProxyClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #ZMoComLynqDbusNameProxy.
+ */
+
+struct _ZMoComLynqDbusNameProxyPrivate
+{
+  GData *qdata;
+};
+
+static void zmo_com_lynq_dbus_name_proxy_iface_init (ZMoComLynqDbusNameIface *iface);
+
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+G_DEFINE_TYPE_WITH_CODE (ZMoComLynqDbusNameProxy, zmo_com_lynq_dbus_name_proxy, G_TYPE_DBUS_PROXY,
+                         G_ADD_PRIVATE (ZMoComLynqDbusNameProxy)
+                         G_IMPLEMENT_INTERFACE (ZMO_TYPE_COM_LYNQ_DBUS_NAME, zmo_com_lynq_dbus_name_proxy_iface_init))
+
+#else
+G_DEFINE_TYPE_WITH_CODE (ZMoComLynqDbusNameProxy, zmo_com_lynq_dbus_name_proxy, G_TYPE_DBUS_PROXY,
+                         G_IMPLEMENT_INTERFACE (ZMO_TYPE_COM_LYNQ_DBUS_NAME, zmo_com_lynq_dbus_name_proxy_iface_init))
+
+#endif
+static void
+zmo_com_lynq_dbus_name_proxy_finalize (GObject *object)
+{
+  ZMoComLynqDbusNameProxy *proxy = ZMO_COM_LYNQ_DBUS_NAME_PROXY (object);
+  g_datalist_clear (&proxy->priv->qdata);
+  G_OBJECT_CLASS (zmo_com_lynq_dbus_name_proxy_parent_class)->finalize (object);
+}
+
+static void
+zmo_com_lynq_dbus_name_proxy_get_property (GObject      *object,
+  guint         prop_id,
+  GValue       *value,
+  GParamSpec   *pspec G_GNUC_UNUSED)
+{
+}
+
+static void
+zmo_com_lynq_dbus_name_proxy_set_property (GObject      *object,
+  guint         prop_id,
+  const GValue *value,
+  GParamSpec   *pspec G_GNUC_UNUSED)
+{
+}
+
+static void
+zmo_com_lynq_dbus_name_proxy_g_signal (GDBusProxy *proxy,
+  const gchar *sender_name G_GNUC_UNUSED,
+  const gchar *signal_name,
+  GVariant *parameters)
+{
+  _ExtendedGDBusSignalInfo *info;
+  GVariantIter iter;
+  GVariant *child;
+  GValue *paramv;
+  gsize num_params;
+  gsize n;
+  guint signal_id;
+  info = (_ExtendedGDBusSignalInfo *) g_dbus_interface_info_lookup_signal ((GDBusInterfaceInfo *) &_zmo_com_lynq_dbus_name_interface_info.parent_struct, signal_name);
+  if (info == NULL)
+    return;
+  num_params = g_variant_n_children (parameters);
+  paramv = g_new0 (GValue, num_params + 1);
+  g_value_init (&paramv[0], ZMO_TYPE_COM_LYNQ_DBUS_NAME);
+  g_value_set_object (&paramv[0], proxy);
+  g_variant_iter_init (&iter, parameters);
+  n = 1;
+  while ((child = g_variant_iter_next_value (&iter)) != NULL)
+    {
+      _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.args[n - 1];
+      if (arg_info->use_gvariant)
+        {
+          g_value_init (&paramv[n], G_TYPE_VARIANT);
+          g_value_set_variant (&paramv[n], child);
+          n++;
+        }
+      else
+        g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
+      g_variant_unref (child);
+    }
+  signal_id = g_signal_lookup (info->signal_name, ZMO_TYPE_COM_LYNQ_DBUS_NAME);
+  g_signal_emitv (paramv, signal_id, 0, NULL);
+  for (n = 0; n < num_params + 1; n++)
+    g_value_unset (&paramv[n]);
+  g_free (paramv);
+}
+
+static void
+zmo_com_lynq_dbus_name_proxy_g_properties_changed (GDBusProxy *_proxy,
+  GVariant *changed_properties,
+  const gchar *const *invalidated_properties)
+{
+  ZMoComLynqDbusNameProxy *proxy = ZMO_COM_LYNQ_DBUS_NAME_PROXY (_proxy);
+  guint n;
+  const gchar *key;
+  GVariantIter *iter;
+  _ExtendedGDBusPropertyInfo *info;
+  g_variant_get (changed_properties, "a{sv}", &iter);
+  while (g_variant_iter_next (iter, "{&sv}", &key, NULL))
+    {
+      info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_zmo_com_lynq_dbus_name_interface_info.parent_struct, key);
+      g_datalist_remove_data (&proxy->priv->qdata, key);
+      if (info != NULL)
+        g_object_notify (G_OBJECT (proxy), info->hyphen_name);
+    }
+  g_variant_iter_free (iter);
+  for (n = 0; invalidated_properties[n] != NULL; n++)
+    {
+      info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_zmo_com_lynq_dbus_name_interface_info.parent_struct, invalidated_properties[n]);
+      g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);
+      if (info != NULL)
+        g_object_notify (G_OBJECT (proxy), info->hyphen_name);
+    }
+}
+
+static void
+zmo_com_lynq_dbus_name_proxy_init (ZMoComLynqDbusNameProxy *proxy)
+{
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+  proxy->priv = zmo_com_lynq_dbus_name_proxy_get_instance_private (proxy);
+#else
+  proxy->priv = G_TYPE_INSTANCE_GET_PRIVATE (proxy, ZMO_TYPE_COM_LYNQ_DBUS_NAME_PROXY, ZMoComLynqDbusNameProxyPrivate);
+#endif
+
+  g_dbus_proxy_set_interface_info (G_DBUS_PROXY (proxy), zmo_com_lynq_dbus_name_interface_info ());
+}
+
+static void
+zmo_com_lynq_dbus_name_proxy_class_init (ZMoComLynqDbusNameProxyClass *klass)
+{
+  GObjectClass *gobject_class;
+  GDBusProxyClass *proxy_class;
+
+  gobject_class = G_OBJECT_CLASS (klass);
+  gobject_class->finalize     = zmo_com_lynq_dbus_name_proxy_finalize;
+  gobject_class->get_property = zmo_com_lynq_dbus_name_proxy_get_property;
+  gobject_class->set_property = zmo_com_lynq_dbus_name_proxy_set_property;
+
+  proxy_class = G_DBUS_PROXY_CLASS (klass);
+  proxy_class->g_signal = zmo_com_lynq_dbus_name_proxy_g_signal;
+  proxy_class->g_properties_changed = zmo_com_lynq_dbus_name_proxy_g_properties_changed;
+
+#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
+  g_type_class_add_private (klass, sizeof (ZMoComLynqDbusNameProxyPrivate));
+#endif
+}
+
+static void
+zmo_com_lynq_dbus_name_proxy_iface_init (ZMoComLynqDbusNameIface *iface)
+{
+}
+
+/**
+ * zmo_com_lynq_dbus_name_proxy_new:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: (nullable): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-com-lynq-dbus-name.top_of_page">com.lynq.dbus.name</link>. See g_dbus_proxy_new() for more details.
+ *
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call zmo_com_lynq_dbus_name_proxy_new_finish() to get the result of the operation.
+ *
+ * See zmo_com_lynq_dbus_name_proxy_new_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+zmo_com_lynq_dbus_name_proxy_new (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data)
+{
+  g_async_initable_new_async (ZMO_TYPE_COM_LYNQ_DBUS_NAME_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "com.lynq.dbus.name", NULL);
+}
+
+/**
+ * zmo_com_lynq_dbus_name_proxy_new_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to zmo_com_lynq_dbus_name_proxy_new().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with zmo_com_lynq_dbus_name_proxy_new().
+ *
+ * Returns: (transfer full) (type ZMoComLynqDbusNameProxy): The constructed proxy object or %NULL if @error is set.
+ */
+ZMoComLynqDbusName *
+zmo_com_lynq_dbus_name_proxy_new_finish (
+    GAsyncResult        *res,
+    GError             **error)
+{
+  GObject *ret;
+  GObject *source_object;
+  source_object = g_async_result_get_source_object (res);
+  ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
+  g_object_unref (source_object);
+  if (ret != NULL)
+    return ZMO_COM_LYNQ_DBUS_NAME (ret);
+  else
+    return NULL;
+}
+
+/**
+ * zmo_com_lynq_dbus_name_proxy_new_sync:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: (nullable): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: (nullable): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL
+ *
+ * Synchronously creates a proxy for the D-Bus interface <link linkend="gdbus-interface-com-lynq-dbus-name.top_of_page">com.lynq.dbus.name</link>. See g_dbus_proxy_new_sync() for more details.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See zmo_com_lynq_dbus_name_proxy_new() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type ZMoComLynqDbusNameProxy): The constructed proxy object or %NULL if @error is set.
+ */
+ZMoComLynqDbusName *
+zmo_com_lynq_dbus_name_proxy_new_sync (
+    GDBusConnection     *connection,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error)
+{
+  GInitable *ret;
+  ret = g_initable_new (ZMO_TYPE_COM_LYNQ_DBUS_NAME_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-connection", connection, "g-object-path", object_path, "g-interface-name", "com.lynq.dbus.name", NULL);
+  if (ret != NULL)
+    return ZMO_COM_LYNQ_DBUS_NAME (ret);
+  else
+    return NULL;
+}
+
+
+/**
+ * zmo_com_lynq_dbus_name_proxy_new_for_bus:
+ * @bus_type: A #GBusType.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: (nullable): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: User data to pass to @callback.
+ *
+ * Like zmo_com_lynq_dbus_name_proxy_new() but takes a #GBusType instead of a #GDBusConnection.
+ *
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call zmo_com_lynq_dbus_name_proxy_new_for_bus_finish() to get the result of the operation.
+ *
+ * See zmo_com_lynq_dbus_name_proxy_new_for_bus_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+zmo_com_lynq_dbus_name_proxy_new_for_bus (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GAsyncReadyCallback  callback,
+    gpointer             user_data)
+{
+  g_async_initable_new_async (ZMO_TYPE_COM_LYNQ_DBUS_NAME_PROXY, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "com.lynq.dbus.name", NULL);
+}
+
+/**
+ * zmo_com_lynq_dbus_name_proxy_new_for_bus_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to zmo_com_lynq_dbus_name_proxy_new_for_bus().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with zmo_com_lynq_dbus_name_proxy_new_for_bus().
+ *
+ * Returns: (transfer full) (type ZMoComLynqDbusNameProxy): The constructed proxy object or %NULL if @error is set.
+ */
+ZMoComLynqDbusName *
+zmo_com_lynq_dbus_name_proxy_new_for_bus_finish (
+    GAsyncResult        *res,
+    GError             **error)
+{
+  GObject *ret;
+  GObject *source_object;
+  source_object = g_async_result_get_source_object (res);
+  ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
+  g_object_unref (source_object);
+  if (ret != NULL)
+    return ZMO_COM_LYNQ_DBUS_NAME (ret);
+  else
+    return NULL;
+}
+
+/**
+ * zmo_com_lynq_dbus_name_proxy_new_for_bus_sync:
+ * @bus_type: A #GBusType.
+ * @flags: Flags from the #GDBusProxyFlags enumeration.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: (nullable): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL
+ *
+ * Like zmo_com_lynq_dbus_name_proxy_new_sync() but takes a #GBusType instead of a #GDBusConnection.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See zmo_com_lynq_dbus_name_proxy_new_for_bus() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type ZMoComLynqDbusNameProxy): The constructed proxy object or %NULL if @error is set.
+ */
+ZMoComLynqDbusName *
+zmo_com_lynq_dbus_name_proxy_new_for_bus_sync (
+    GBusType             bus_type,
+    GDBusProxyFlags      flags,
+    const gchar         *name,
+    const gchar         *object_path,
+    GCancellable        *cancellable,
+    GError             **error)
+{
+  GInitable *ret;
+  ret = g_initable_new (ZMO_TYPE_COM_LYNQ_DBUS_NAME_PROXY, cancellable, error, "g-flags", flags, "g-name", name, "g-bus-type", bus_type, "g-object-path", object_path, "g-interface-name", "com.lynq.dbus.name", NULL);
+  if (ret != NULL)
+    return ZMO_COM_LYNQ_DBUS_NAME (ret);
+  else
+    return NULL;
+}
+
+
+/* ------------------------------------------------------------------------ */
+
+/**
+ * ZMoComLynqDbusNameSkeleton:
+ *
+ * The #ZMoComLynqDbusNameSkeleton structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * ZMoComLynqDbusNameSkeletonClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #ZMoComLynqDbusNameSkeleton.
+ */
+
+struct _ZMoComLynqDbusNameSkeletonPrivate
+{
+  GValue *properties;
+  GList *changed_properties;
+  GSource *changed_properties_idle_source;
+  GMainContext *context;
+  GMutex lock;
+};
+
+static void
+_zmo_com_lynq_dbus_name_skeleton_handle_method_call (
+  GDBusConnection *connection G_GNUC_UNUSED,
+  const gchar *sender G_GNUC_UNUSED,
+  const gchar *object_path G_GNUC_UNUSED,
+  const gchar *interface_name,
+  const gchar *method_name,
+  GVariant *parameters,
+  GDBusMethodInvocation *invocation,
+  gpointer user_data)
+{
+  ZMoComLynqDbusNameSkeleton *skeleton = ZMO_COM_LYNQ_DBUS_NAME_SKELETON (user_data);
+  _ExtendedGDBusMethodInfo *info;
+  GVariantIter iter;
+  GVariant *child;
+  GValue *paramv;
+  gsize num_params;
+  guint num_extra;
+  gsize n;
+  guint signal_id;
+  GValue return_value = G_VALUE_INIT;
+  info = (_ExtendedGDBusMethodInfo *) g_dbus_method_invocation_get_method_info (invocation);
+  g_assert (info != NULL);
+  num_params = g_variant_n_children (parameters);
+  num_extra = info->pass_fdlist ? 3 : 2;  paramv = g_new0 (GValue, num_params + num_extra);
+  n = 0;
+  g_value_init (&paramv[n], ZMO_TYPE_COM_LYNQ_DBUS_NAME);
+  g_value_set_object (&paramv[n++], skeleton);
+  g_value_init (&paramv[n], G_TYPE_DBUS_METHOD_INVOCATION);
+  g_value_set_object (&paramv[n++], invocation);
+  if (info->pass_fdlist)
+    {
+#ifdef G_OS_UNIX
+      g_value_init (&paramv[n], G_TYPE_UNIX_FD_LIST);
+      g_value_set_object (&paramv[n++], g_dbus_message_get_unix_fd_list (g_dbus_method_invocation_get_message (invocation)));
+#else
+      g_assert_not_reached ();
+#endif
+    }
+  g_variant_iter_init (&iter, parameters);
+  while ((child = g_variant_iter_next_value (&iter)) != NULL)
+    {
+      _ExtendedGDBusArgInfo *arg_info = (_ExtendedGDBusArgInfo *) info->parent_struct.in_args[n - num_extra];
+      if (arg_info->use_gvariant)
+        {
+          g_value_init (&paramv[n], G_TYPE_VARIANT);
+          g_value_set_variant (&paramv[n], child);
+          n++;
+        }
+      else
+        g_dbus_gvariant_to_gvalue (child, &paramv[n++]);
+      g_variant_unref (child);
+    }
+  signal_id = g_signal_lookup (info->signal_name, ZMO_TYPE_COM_LYNQ_DBUS_NAME);
+  g_value_init (&return_value, G_TYPE_BOOLEAN);
+  g_signal_emitv (paramv, signal_id, 0, &return_value);
+  if (!g_value_get_boolean (&return_value))
+    g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, G_DBUS_ERROR_UNKNOWN_METHOD, "Method %s is not implemented on interface %s", method_name, interface_name);
+  g_value_unset (&return_value);
+  for (n = 0; n < num_params + num_extra; n++)
+    g_value_unset (&paramv[n]);
+  g_free (paramv);
+}
+
+static GVariant *
+_zmo_com_lynq_dbus_name_skeleton_handle_get_property (
+  GDBusConnection *connection G_GNUC_UNUSED,
+  const gchar *sender G_GNUC_UNUSED,
+  const gchar *object_path G_GNUC_UNUSED,
+  const gchar *interface_name G_GNUC_UNUSED,
+  const gchar *property_name,
+  GError **error,
+  gpointer user_data)
+{
+  ZMoComLynqDbusNameSkeleton *skeleton = ZMO_COM_LYNQ_DBUS_NAME_SKELETON (user_data);
+  GValue value = G_VALUE_INIT;
+  GParamSpec *pspec;
+  _ExtendedGDBusPropertyInfo *info;
+  GVariant *ret;
+  ret = NULL;
+  info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_zmo_com_lynq_dbus_name_interface_info.parent_struct, property_name);
+  g_assert (info != NULL);
+  pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
+  if (pspec == NULL)
+    {
+      g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
+    }
+  else
+    {
+      g_value_init (&value, pspec->value_type);
+      g_object_get_property (G_OBJECT (skeleton), info->hyphen_name, &value);
+      ret = g_dbus_gvalue_to_gvariant (&value, G_VARIANT_TYPE (info->parent_struct.signature));
+      g_value_unset (&value);
+    }
+  return ret;
+}
+
+static gboolean
+_zmo_com_lynq_dbus_name_skeleton_handle_set_property (
+  GDBusConnection *connection G_GNUC_UNUSED,
+  const gchar *sender G_GNUC_UNUSED,
+  const gchar *object_path G_GNUC_UNUSED,
+  const gchar *interface_name G_GNUC_UNUSED,
+  const gchar *property_name,
+  GVariant *variant,
+  GError **error,
+  gpointer user_data)
+{
+  ZMoComLynqDbusNameSkeleton *skeleton = ZMO_COM_LYNQ_DBUS_NAME_SKELETON (user_data);
+  GValue value = G_VALUE_INIT;
+  GParamSpec *pspec;
+  _ExtendedGDBusPropertyInfo *info;
+  gboolean ret;
+  ret = FALSE;
+  info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_zmo_com_lynq_dbus_name_interface_info.parent_struct, property_name);
+  g_assert (info != NULL);
+  pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (skeleton), info->hyphen_name);
+  if (pspec == NULL)
+    {
+      g_set_error (error, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS, "No property with name %s", property_name);
+    }
+  else
+    {
+      if (info->use_gvariant)
+        g_value_set_variant (&value, variant);
+      else
+        g_dbus_gvariant_to_gvalue (variant, &value);
+      g_object_set_property (G_OBJECT (skeleton), info->hyphen_name, &value);
+      g_value_unset (&value);
+      ret = TRUE;
+    }
+  return ret;
+}
+
+static const GDBusInterfaceVTable _zmo_com_lynq_dbus_name_skeleton_vtable =
+{
+  _zmo_com_lynq_dbus_name_skeleton_handle_method_call,
+  _zmo_com_lynq_dbus_name_skeleton_handle_get_property,
+  _zmo_com_lynq_dbus_name_skeleton_handle_set_property,
+  {NULL}
+};
+
+static GDBusInterfaceInfo *
+zmo_com_lynq_dbus_name_skeleton_dbus_interface_get_info (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
+{
+  return zmo_com_lynq_dbus_name_interface_info ();
+}
+
+static GDBusInterfaceVTable *
+zmo_com_lynq_dbus_name_skeleton_dbus_interface_get_vtable (GDBusInterfaceSkeleton *skeleton G_GNUC_UNUSED)
+{
+  return (GDBusInterfaceVTable *) &_zmo_com_lynq_dbus_name_skeleton_vtable;
+}
+
+static GVariant *
+zmo_com_lynq_dbus_name_skeleton_dbus_interface_get_properties (GDBusInterfaceSkeleton *_skeleton)
+{
+  ZMoComLynqDbusNameSkeleton *skeleton = ZMO_COM_LYNQ_DBUS_NAME_SKELETON (_skeleton);
+
+  GVariantBuilder builder;
+  guint n;
+  g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
+  if (_zmo_com_lynq_dbus_name_interface_info.parent_struct.properties == NULL)
+    goto out;
+  for (n = 0; _zmo_com_lynq_dbus_name_interface_info.parent_struct.properties[n] != NULL; n++)
+    {
+      GDBusPropertyInfo *info = _zmo_com_lynq_dbus_name_interface_info.parent_struct.properties[n];
+      if (info->flags & G_DBUS_PROPERTY_INFO_FLAGS_READABLE)
+        {
+          GVariant *value;
+          value = _zmo_com_lynq_dbus_name_skeleton_handle_get_property (g_dbus_interface_skeleton_get_connection (G_DBUS_INTERFACE_SKELETON (skeleton)), NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "com.lynq.dbus.name", info->name, NULL, skeleton);
+          if (value != NULL)
+            {
+              g_variant_take_ref (value);
+              g_variant_builder_add (&builder, "{sv}", info->name, value);
+              g_variant_unref (value);
+            }
+        }
+    }
+out:
+  return g_variant_builder_end (&builder);
+}
+
+static void
+zmo_com_lynq_dbus_name_skeleton_dbus_interface_flush (GDBusInterfaceSkeleton *_skeleton)
+{
+}
+
+static void
+_zmo_com_lynq_dbus_name_on_signal_my_signal1 (
+    ZMoComLynqDbusName *object,
+    const gchar *arg_Value)
+{
+  ZMoComLynqDbusNameSkeleton *skeleton = ZMO_COM_LYNQ_DBUS_NAME_SKELETON (object);
+
+  GList      *connections, *l;
+  GVariant   *signal_variant;
+  connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
+
+  signal_variant = g_variant_ref_sink (g_variant_new ("(s)",
+                   arg_Value));
+  for (l = connections; l != NULL; l = l->next)
+    {
+      GDBusConnection *connection = l->data;
+      g_dbus_connection_emit_signal (connection,
+        NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "com.lynq.dbus.name", "MySignal1",
+        signal_variant, NULL);
+    }
+  g_variant_unref (signal_variant);
+  g_list_free_full (connections, g_object_unref);
+}
+
+static void
+_zmo_com_lynq_dbus_name_on_signal_my_signal2 (
+    ZMoComLynqDbusName *object,
+    GVariant *arg_Value)
+{
+  ZMoComLynqDbusNameSkeleton *skeleton = ZMO_COM_LYNQ_DBUS_NAME_SKELETON (object);
+
+  GList      *connections, *l;
+  GVariant   *signal_variant;
+  connections = g_dbus_interface_skeleton_get_connections (G_DBUS_INTERFACE_SKELETON (skeleton));
+
+  signal_variant = g_variant_ref_sink (g_variant_new ("(@(is))",
+                   arg_Value));
+  for (l = connections; l != NULL; l = l->next)
+    {
+      GDBusConnection *connection = l->data;
+      g_dbus_connection_emit_signal (connection,
+        NULL, g_dbus_interface_skeleton_get_object_path (G_DBUS_INTERFACE_SKELETON (skeleton)), "com.lynq.dbus.name", "MySignal2",
+        signal_variant, NULL);
+    }
+  g_variant_unref (signal_variant);
+  g_list_free_full (connections, g_object_unref);
+}
+
+static void zmo_com_lynq_dbus_name_skeleton_iface_init (ZMoComLynqDbusNameIface *iface);
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+G_DEFINE_TYPE_WITH_CODE (ZMoComLynqDbusNameSkeleton, zmo_com_lynq_dbus_name_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
+                         G_ADD_PRIVATE (ZMoComLynqDbusNameSkeleton)
+                         G_IMPLEMENT_INTERFACE (ZMO_TYPE_COM_LYNQ_DBUS_NAME, zmo_com_lynq_dbus_name_skeleton_iface_init))
+
+#else
+G_DEFINE_TYPE_WITH_CODE (ZMoComLynqDbusNameSkeleton, zmo_com_lynq_dbus_name_skeleton, G_TYPE_DBUS_INTERFACE_SKELETON,
+                         G_IMPLEMENT_INTERFACE (ZMO_TYPE_COM_LYNQ_DBUS_NAME, zmo_com_lynq_dbus_name_skeleton_iface_init))
+
+#endif
+static void
+zmo_com_lynq_dbus_name_skeleton_finalize (GObject *object)
+{
+  ZMoComLynqDbusNameSkeleton *skeleton = ZMO_COM_LYNQ_DBUS_NAME_SKELETON (object);
+  g_list_free_full (skeleton->priv->changed_properties, (GDestroyNotify) _changed_property_free);
+  if (skeleton->priv->changed_properties_idle_source != NULL)
+    g_source_destroy (skeleton->priv->changed_properties_idle_source);
+  g_main_context_unref (skeleton->priv->context);
+  g_mutex_clear (&skeleton->priv->lock);
+  G_OBJECT_CLASS (zmo_com_lynq_dbus_name_skeleton_parent_class)->finalize (object);
+}
+
+static void
+zmo_com_lynq_dbus_name_skeleton_init (ZMoComLynqDbusNameSkeleton *skeleton)
+{
+#if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38
+  skeleton->priv = zmo_com_lynq_dbus_name_skeleton_get_instance_private (skeleton);
+#else
+  skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, ZMO_TYPE_COM_LYNQ_DBUS_NAME_SKELETON, ZMoComLynqDbusNameSkeletonPrivate);
+#endif
+
+  g_mutex_init (&skeleton->priv->lock);
+  skeleton->priv->context = g_main_context_ref_thread_default ();
+}
+
+static void
+zmo_com_lynq_dbus_name_skeleton_class_init (ZMoComLynqDbusNameSkeletonClass *klass)
+{
+  GObjectClass *gobject_class;
+  GDBusInterfaceSkeletonClass *skeleton_class;
+
+  gobject_class = G_OBJECT_CLASS (klass);
+  gobject_class->finalize = zmo_com_lynq_dbus_name_skeleton_finalize;
+
+  skeleton_class = G_DBUS_INTERFACE_SKELETON_CLASS (klass);
+  skeleton_class->get_info = zmo_com_lynq_dbus_name_skeleton_dbus_interface_get_info;
+  skeleton_class->get_properties = zmo_com_lynq_dbus_name_skeleton_dbus_interface_get_properties;
+  skeleton_class->flush = zmo_com_lynq_dbus_name_skeleton_dbus_interface_flush;
+  skeleton_class->get_vtable = zmo_com_lynq_dbus_name_skeleton_dbus_interface_get_vtable;
+
+#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_38
+  g_type_class_add_private (klass, sizeof (ZMoComLynqDbusNameSkeletonPrivate));
+#endif
+}
+
+static void
+zmo_com_lynq_dbus_name_skeleton_iface_init (ZMoComLynqDbusNameIface *iface)
+{
+  iface->my_signal1 = _zmo_com_lynq_dbus_name_on_signal_my_signal1;
+  iface->my_signal2 = _zmo_com_lynq_dbus_name_on_signal_my_signal2;
+}
+
+/**
+ * zmo_com_lynq_dbus_name_skeleton_new:
+ *
+ * Creates a skeleton object for the D-Bus interface <link linkend="gdbus-interface-com-lynq-dbus-name.top_of_page">com.lynq.dbus.name</link>.
+ *
+ * Returns: (transfer full) (type ZMoComLynqDbusNameSkeleton): The skeleton object.
+ */
+ZMoComLynqDbusName *
+zmo_com_lynq_dbus_name_skeleton_new (void)
+{
+  return ZMO_COM_LYNQ_DBUS_NAME (g_object_new (ZMO_TYPE_COM_LYNQ_DBUS_NAME_SKELETON, NULL));
+}
+
diff --git a/src/lynq/lib/liblynq-broadcast/liblynq-broadcast/libClient.c b/src/lynq/lib/liblynq-broadcast/liblynq-broadcast/libClient.c
new file mode 100644
index 0000000..e99af81
--- /dev/null
+++ b/src/lynq/lib/liblynq-broadcast/liblynq-broadcast/libClient.c
@@ -0,0 +1,308 @@
+/**
+    Header files
+*/
+
+/**
+    Own header
+*/
+#include "libclient.h"
+
+/**
+    Generated headers
+*/
+
+
+/**
+    System header
+*/
+#include <gio/gio.h>    /** GIO for dbus*/
+#include <glib-2.0/glib.h>  /** GLIB for main loop*/  
+#include <pthread.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+/**
+    instance init
+*/
+static GMainLoop *pLoop = NULL;
+static GDBusConnection *pConnection = NULL;
+static _ZMoDbusName *pProxy = NULL;
+static gulong g_RetSignalHandler[RET_SIGNAL_HANDLE_SIZE];
+static S_SIGNAL_CALLBACK g_signal_callback;
+static S_METHOD_CALLBACK g_method_callback;
+
+static gboolean My_Signal_1_Handler(_ZMoDbusName *object, const gchar *arg, gpointer userdata)
+{
+    if (NULL != g_signal_callback.callback1){
+        g_signal_callback.callback1(arg);
+    }
+
+    return TRUE;
+}
+
+static gboolean My_Signal_2_Handler(_ZMoDbusName *object,  GVariant *arg, gpointer userdata)
+{
+    /** get the value from GVariant */
+    gint int_arg = 0;
+    gchar *char_arg = NULL;
+
+    g_variant_get(arg, "(is)", &int_arg, &char_arg);
+
+    if (NULL != g_signal_callback.callback2){
+        g_signal_callback.callback2(int_arg, char_arg);
+    }
+    g_free(char_arg);
+
+    return TRUE;
+}
+
+static void cb_OwnerNameChangedNotify(GObject *object, GParamSpec *pspec, gpointer userdata)
+{
+    gchar *pname_owner = NULL;
+    pname_owner = g_dbus_proxy_get_name_owner((GDBusProxy*)object);
+
+    if (NULL != pname_owner){
+        g_print("DBus service is ready!\n");
+        g_free(pname_owner);
+    }
+    else{
+        g_print("DBus service is NOT ready!\n");
+        g_free(pname_owner);
+    }
+}
+bool registerClientSignalHandler(_ZMoDbusName *pProxy)
+{
+    g_print("registerClientSignalHandler call.\n");
+    g_RetSignalHandler[0] = g_signal_connect(pProxy, "notify::g-name-owner", G_CALLBACK(cb_OwnerNameChangedNotify), NULL);
+    g_RetSignalHandler[1] = g_signal_connect(pProxy, "my-signal1", G_CALLBACK(My_Signal_1_Handler), NULL);
+    g_RetSignalHandler[2] = g_signal_connect(pProxy, "my-signal2", G_CALLBACK(My_Signal_2_Handler), NULL);
+    return TRUE;
+}
+
+void registerSignalCallback(S_SIGNAL_CALLBACK *callback)
+{
+    if (NULL != callback){
+        memcpy(&g_signal_callback, callback, sizeof(S_SIGNAL_CALLBACK));
+    }
+    else{
+            g_print("registerSignalCallback: parameter point is NULL");
+    }
+}
+
+void registerMethodCallback(S_METHOD_CALLBACK *callback)
+{
+    if (NULL != callback){
+        memcpy(&g_method_callback, callback, sizeof(S_SIGNAL_CALLBACK));
+    }
+    else{
+            g_print("registerMethodCallback: parameter point is NULL");
+    }
+}
+
+static void MethodCallback_1(GObject* source_object, GAsyncResult* res, gpointer userdata)
+{
+    g_print("client MethodCallback_1 call.\n");
+
+    gchar* out_arg = NULL;
+    GError* pError = NULL;
+
+    zmo_com_lynq_dbus_name_call_my_method1_finish(pProxy, &out_arg, res, &pError);
+
+    if(NULL == pError){
+        if(NULL != g_method_callback.callback1){
+            g_method_callback.callback1(out_arg, pError);
+            g_free(out_arg);
+        }
+    }
+    else{
+        g_error_free(pError);
+    }
+}
+void myMethodAsync_1(const char* in_arg)
+{
+    g_print("client myMethodAsync_1 call, in_arg = %s.\n", in_arg);
+
+    zmo_com_lynq_dbus_name_call_my_method1(pProxy, in_arg, NULL, MethodCallback_1, NULL);
+    return;
+}
+
+void myMethod_1(const gchar *in_arg, gchar** out_arg, GError** pError)
+{
+    zmo_com_lynq_dbus_name_call_my_method1_sync(pProxy, in_arg, out_arg, NULL, pError);
+
+    if (*pError == NULL){
+        g_print("client myMethod_1 call, in_arg = %s out_arg = %s.\n", in_arg, *out_arg);
+            g_free(*out_arg);
+    }
+    else{
+            g_print("client myMethod_1: Failed to call method. Reason: %s.\n", (*pError)->message);
+            g_error_free(*pError);
+    }
+
+    return; 
+}
+
+static void MethodCallback_2(GObject* source_object, GAsyncResult* res, gpointer user_data)
+{
+    g_print("client MethodCallback_2 call.\n");
+
+    GVariant *out_arg = NULL;
+    GError *pError = NULL;
+    gchar *out_arg1 = NULL;
+    gint out_arg2 = 0;
+
+    zmo_com_lynq_dbus_name_call_my_method2_finish(pProxy, &out_arg, res, &pError);
+    if (NULL == pError){
+        /** get the result from the output paramter */
+        g_variant_get(out_arg, "(si)", &out_arg1, &out_arg2);
+        if(NULL != g_method_callback.callback2){
+            g_method_callback.callback2(out_arg1, out_arg2, pError);
+            g_free(out_arg1);
+        }
+    }
+    else{
+        g_error_free(pError);
+    }
+
+}
+void myMethodAsync_2(const gint in_arg1, const gint in_arg2)
+{
+    g_print("client myMethodAsync_2 call, in_arg1 = %d, in_arg2 = %d.\n", in_arg1, in_arg2);
+
+    GVariant *in_arg = g_variant_new("(ii)", in_arg1, in_arg2);
+    zmo_com_lynq_dbus_name_call_my_method2(pProxy, in_arg, NULL, MethodCallback_2, NULL);
+
+    return;
+}
+
+void myMethod_2(const gint in_arg1, const gint in_arg2, gchar **out_arg1, gint *out_arg2, GError** pError)
+{
+    GVariant *in_arg = NULL;
+    GVariant *out_arg = NULL;
+    GError *Error = NULL;
+
+    /** generate the input parameters */
+    in_arg = g_variant_new("(ii)", in_arg1, in_arg2);
+
+    /** call the server's dbus methods */
+    zmo_com_lynq_dbus_name_call_my_method2_sync(pProxy, in_arg, &out_arg, NULL, pError);
+    if(NULL == *pError){
+        /** get the result from the output parameter */
+        g_variant_get(out_arg, "(si)", out_arg1, out_arg2);
+        g_print("client myMethod_2 call, in_arg1 = %d, in_arg2 = %d, out_arg1 = %s, out_arg2 = %d.\n", in_arg1, in_arg2, *out_arg1, *out_arg2);
+            g_free(*pError);
+    }
+    else{
+            g_print("client myMethod_2: Failed to call method. Reason: %s.\n", (*pError)->message);
+            g_error_free(*pError);
+    }
+
+    return; 
+}
+
+void *client_run_tread(void* arg)
+{
+    g_print("run call in the client.\n");
+    /** start the main event loop which manages all available sources of events */
+    g_main_loop_run(pLoop);
+
+    return ((void*)0);
+}
+
+int client_thread_create(void)
+{
+    int err;
+    pthread_t thr;
+
+    err = pthread_create(&thr, NULL, client_run_tread, NULL);
+
+    if(0 != err){
+            g_print("Can't create thread: %s\n", strerror(err));
+    }
+    else{       
+            g_print("New thread created: %s\n", strerror(err));
+    }
+
+    return err;
+}
+
+bool ExampleDBusServiceIsReady(void)
+{
+    gchar *owner_name = NULL;
+    owner_name = g_dbus_proxy_get_name_owner((GDBusProxy*)pProxy);
+    if(NULL != owner_name)
+    {
+        g_print("Owner Name: %s\n", owner_name);        
+        g_free(owner_name);
+        return true;
+    }
+    else
+    {   
+        g_print("Owner Name is NULL.");     
+        return false;
+    }
+}
+
+bool InitDBusCommunication(const gchar* bus_name, const gchar* object_path)
+{
+    bool bRet = TRUE;
+    GError *pConnError = NULL;
+    GError *pProxyError = NULL;
+
+    g_type_init();  /** initial for usage of "g" types */
+
+    g_print("InitDBusCommunication: Client started.\n");
+
+    do{
+        bRet = TRUE;
+        pLoop = g_main_loop_new(NULL, FALSE);   /** create main loop, but do not start it.*/
+
+        /** First step: get a connection */
+        pConnection = g_bus_get_sync(G_BUS_TYPE_SESSION, NULL, &pConnError);
+
+        if (NULL == pConnError){
+            /** Second step: try to get a connection to the given bus.*/
+            pProxy = _ZMoProxyNewSync(pConnection,
+                                        G_DBUS_PROXY_FLAGS_NONE,
+                                        bus_name,
+                                        object_path,
+                                        NULL,
+                                        &pProxyError);
+            if (0 == pProxy){
+                g_print("InitDBusCommunication: Failed to create proxy. Reason: %s.\n", pProxyError->message);
+                g_error_free(pProxyError);
+                bRet = FALSE;
+            }
+
+
+        }
+        else{
+            g_print("InitDBusCommunication: Failed to connect to dbus. Reason: %s.\n", pConnError->message);
+            g_error_free(pConnError);
+            bRet = FALSE;
+        }
+    }while(FALSE == bRet);
+
+    if (TRUE == bRet){
+        /** Third step: Attach to dbus signals */
+        registerClientSignalHandler(pProxy);
+    }
+
+    client_thread_create();
+}
+
+bool DeInitDBusCommunication(void)
+{
+    bool bRet = FALSE;
+
+    if(0 != pLoop){
+        g_main_loop_quit(pLoop);
+        g_main_loop_unref(pLoop);
+        bRet = TRUE;
+    }
+
+    return bRet;
+}
diff --git a/src/lynq/lib/liblynq-broadcast/liblynq-broadcast/libServer.c b/src/lynq/lib/liblynq-broadcast/liblynq-broadcast/libServer.c
new file mode 100644
index 0000000..4563f71
--- /dev/null
+++ b/src/lynq/lib/liblynq-broadcast/liblynq-broadcast/libServer.c
@@ -0,0 +1,221 @@
+/**
+    Header files
+*/
+
+/** 
+    Own header
+*/
+
+#include "libServer.h"
+
+/** 
+    System header
+*/
+#include <gio/gio.h>   // GIO for dbus
+#include <glib-2.0/glib.h>   // GLIB for main loop
+#include <stdio.h>
+#include <pthread.h>
+#include <string.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+/**
+    Generated headers
+*/
+
+/**
+    Instance init
+*/
+static GMainLoop         *pLoop     = NULL;
+static int callNum = 0;
+
+/**
+    Normal functions
+*/
+static gboolean Emit_My_signal1(gconstpointer p)
+{
+    g_print("Emit_My_Signal1() is called.\n");
+
+    gchar buf[20];
+    memset(buf, 0, 20);
+    callNum++;
+    sprintf(buf, "Server Signal1(%d)", callNum);
+
+    zmo_com_lynq_dbus_name_emit_my_signal1(pSkeleton, buf);
+
+    return TRUE;
+}
+
+static gboolean Emit_My_Signal2(gconstpointer p)
+{
+    g_print("Emit_My_Signal2() is called.\n");
+
+    callNum++;
+    GVariant *payload = g_variant_new("(is)", callNum, "Server Signal2");
+
+    zmo_com_lynq_dbus_name_emit_my_signal2(pSkeleton, payload);
+
+    return TRUE;
+}
+
+static gboolean My_Method1(_ZMoDbusName     *object,
+                               GDBusMethodInvocation *invocation,
+                               const gchar           *in_arg,
+                               gpointer               user_data)
+{
+    g_print("Server MyMethod1 call. Parameter: %s.\n", in_arg);
+
+    in_arg = "Server My_Method1 to output.";
+
+    zmo_com_lynq_dbus_name_complete_my_method1(object, invocation, in_arg);
+
+    return TRUE;
+}
+
+static gboolean My_Method2(_ZMoDbusName     *object,
+                               GDBusMethodInvocation *invocation,
+                               GVariant           *in_arg,
+                               gpointer               user_data)
+{
+  gint in_arg1 = 0;
+  gint in_arg2 = 0;
+  gint out_arg2 = 0;
+  gchar *out_arg1 = "Server MyMethod2 to output.";
+  GVariant *out_arg = NULL;
+
+  /** Get the input parameters */
+  g_variant_get(in_arg, "(ii)", &in_arg1, &in_arg2);
+
+  g_print("Server MyMethod2 call. Parameter: in_arg1 = %d , in_arg2 = %d.\n", in_arg1, in_arg2);
+
+  /** Generate the output parameters */
+  out_arg2 = in_arg1 + in_arg2;
+  out_arg = g_variant_new("(si)", out_arg1, out_arg2);
+
+  zmo_com_lynq_dbus_name_complete_my_method2(object, invocation, out_arg);
+
+  return TRUE;
+
+}
+
+static void bus_acquired_cb(GDBusConnection *connection,
+                                const gchar     *bus_name,
+                                gpointer         user_data)
+{
+    GError *pError = NULL;
+
+    /** Second step: Try to get a connection to the given bus. */
+    pSkeleton = zmo_com_lynq_dbus_name_skeleton_new();
+
+    /** Third step: Attach to dbus signals. */
+    (void) g_signal_connect(pSkeleton, "handle-my-method1", G_CALLBACK(My_Method1), NULL);
+    (void) g_signal_connect(pSkeleton, "handle-my-method2", G_CALLBACK(My_Method2), NULL);
+
+    /** Fourth step: Export interface skeleton. */
+    (void) g_dbus_interface_skeleton_export(G_DBUS_INTERFACE_SKELETON(pSkeleton),
+                                              connection,
+                                              "/com/lynq/Gdbus/Name",
+                                              &pError);
+    if(pError != NULL){
+        g_print("Error: Failed to export object. Reason: %s.\n", pError->message);
+        g_error_free(pError);
+        g_main_loop_quit(pLoop);
+    }
+}
+
+static void name_acquired_cb(GDBusConnection *connection,
+                                     const gchar     *bus_name,
+                                     gpointer         user_data)
+{
+    g_print("name_acquired_cb call, Acquired bus name: %s.\n", GDBUS_NAME);
+}
+
+static void name_lost_cb(GDBusConnection *connection,
+                             const gchar     *bus_name,
+                             gpointer         user_data)
+{
+    if(connection == NULL)
+    {
+        g_print("name_lost_cb call, Error: Failed to connect to dbus.\n");
+    }
+    else
+    {
+        g_print("name_lost_cb call, Error: Failed to obtain bus name: %s.\n", GDBUS_NAME);
+    }
+
+    g_main_loop_quit(pLoop);
+}
+
+void* service_thread_run(void* para)
+{
+    g_print("run call in the server.\n");
+        /** Start the Main Event Loop which manages all available sources of events */
+    g_main_loop_run( pLoop );
+
+    return ((void*)0);
+}
+
+int service_thread_create(void)
+{
+    int err;
+    pthread_t thr;
+
+    err = pthread_create(&thr, NULL, service_thread_run, NULL);
+
+    if (err != 0)
+    {
+        g_print("Can't create thread: %s\n", strerror(err));
+    }
+    else
+    {
+        g_print("New thread created: %s\n", strerror(err));
+    }
+
+    return err;
+}
+
+
+bool InitDBusCommunicationServer()
+{
+    bool bRet = TRUE;
+
+    /** init for usage of "g" types */
+    g_type_init();
+
+    g_print("InitDBusCommunicationServer: Server started.\n");
+
+    /** create main loop, but do not start it. */
+    pLoop = g_main_loop_new(NULL, FALSE);
+
+    /** first step: connect to dbus */
+    (void)g_bus_own_name(G_BUS_TYPE_SESSION,
+                        GDBUS_NAME,
+                        G_BUS_NAME_OWNER_FLAGS_NONE,
+                        &bus_acquired_cb,
+                        &name_acquired_cb,
+                        &name_lost_cb,
+                        NULL,
+                        NULL);
+    /** emit my signal1 every 1 second to trigger example communication */
+   // g_timeout_add(1000, (GSourceFunc)Emit_My_signal1, NULL);
+
+    /** emit my signal2 every2 second to trigger example communication */
+   // g_timeout_add(2000, (GSourceFunc)Emit_My_Signal2, NULL);
+
+    service_thread_create();
+
+    return bRet;    
+}
+
+bool DeinitDBusCommunicationServer(void)
+{
+    bool bRet = FALSE;
+    if(0 != pLoop){
+        g_main_loop_quit(pLoop);
+        g_main_loop_unref(pLoop);
+        bRet = TRUE;
+    }
+
+    return bRet;
+
+}
diff --git a/src/lynq/lib/liblynq-broadcast/liblynq-broadcast/link_id.c b/src/lynq/lib/liblynq-broadcast/liblynq-broadcast/link_id.c
new file mode 100644
index 0000000..cc0c2c6
--- /dev/null
+++ b/src/lynq/lib/liblynq-broadcast/liblynq-broadcast/link_id.c
@@ -0,0 +1,155 @@
+#include "stdio.h"				
+#include "stdlib.h"				
+#include "string.h"	
+#include "link_id.h"
+static struct NodeId* head= NULL;
+static struct NodeId* end = NULL;
+
+
+
+void AddListTill(int id )
+{
+	struct NodeId* temp=(struct NodeId*)malloc(sizeof(struct NodeId));
+	temp->id=id;
+	temp->next=NULL;		
+	if(NULL==head)
+	{	
+		head=temp;
+	}
+	else
+	{
+	end->next=temp;
+	}
+	end=temp;
+}
+void ScanList()
+{
+	struct NodeId *temp =head;
+	while (temp !=NULL)
+	{
+		printf("%d\n",temp->id);
+		temp = temp->next;
+	}
+}
+
+struct NodeId* FindNode(int id )
+{
+	struct NodeId *temp =head;
+	while(temp !=NULL)
+	{
+	if(id == temp->id)
+	{
+		return temp;
+	}
+	temp = temp->next;
+	}
+		return NULL;
+} 
+
+void FreeList()
+{
+	struct NodeId *temp =head;		
+	while (temp !=NULL)
+	{
+		struct NodeId* pt =temp;
+		temp = temp->next;		
+		free(pt);	
+	}
+	head =NULL;
+	end =NULL;
+}
+
+void DeleteListTail()
+{ 
+	if (NULL == end)
+	{
+		printf("link id is NULL\n");
+		return;
+	}
+	 if (head==end)
+	 {
+		 free(head);
+		 head=NULL;
+		 end=NULL; 
+	 }
+	 else
+	 {
+		 struct NodeId* temp =head;
+		 while (temp->next!=end)
+		 {
+			 temp = temp->next;
+		 }
+		 free(end);
+		 end=temp;
+		 end->next=NULL;
+	 }
+
+}
+
+void DeleteListHead()
+{	
+	struct NodeId* temp=head;
+
+	if (NULL==head)
+	{
+			printf("link NULL\n");
+			return;
+	}
+
+	head=head->next;
+	free(temp);
+
+}
+
+void DeleteListRand(int id)
+{
+
+	if(NULL==head)
+	{
+	printf("link NULL\n");
+	return;
+	}
+	struct NodeId* temp =FindNode(id);
+	if(NULL==temp)
+	{
+	printf("NO this number\n");
+	return;
+	}
+	if(head==end)
+	{
+	free(head);
+	head=NULL;
+	end=NULL;
+	}
+	else if(head->next==end)
+	{
+	if(end == temp)
+		{	DeleteListTail(); }
+	else if(temp==head)
+		{	DeleteListHead(); }	
+	}
+	else
+	{
+		if(end==temp)
+			DeleteListTail();
+		else if(temp==head)
+			DeleteListHead();	
+		else	
+		{	
+			struct NodeId*pt =head;
+			while(pt->next!=temp)
+			{
+			pt=pt->next;
+			}
+			 pt->next=temp->next;
+			 free(temp);
+		
+		}
+	}
+	
+
+}
+
+
+
+
diff --git a/src/lynq/lib/liblynq-broadcast/liblynq-broadcast/link_id.h b/src/lynq/lib/liblynq-broadcast/liblynq-broadcast/link_id.h
new file mode 100644
index 0000000..5f7c685
--- /dev/null
+++ b/src/lynq/lib/liblynq-broadcast/liblynq-broadcast/link_id.h
@@ -0,0 +1,17 @@
+#ifndef __LYNQ_LINK_ID_H__
+#define __LYNQ_LINK_ID_H__
+
+struct NodeId
+{
+	int id;				
+	struct NodeId* next;	
+};
+
+void AddListTill(int id );
+void ScanList();
+struct NodeId* FindNode(int id );
+void FreeList();
+void DeleteListTail();
+void DeleteListHead();
+void DeleteListRand(int id);
+#endif  
\ No newline at end of file
diff --git a/src/lynq/lib/liblynq-broadcast/liblynq-broadcast/link_name.c b/src/lynq/lib/liblynq-broadcast/liblynq-broadcast/link_name.c
new file mode 100644
index 0000000..01dc330
--- /dev/null
+++ b/src/lynq/lib/liblynq-broadcast/liblynq-broadcast/link_name.c
@@ -0,0 +1,156 @@
+#include "stdio.h"				
+#include "stdlib.h"				
+#include "string.h"	
+#include "link_name.h"
+static struct NodeName* head= NULL;
+static struct NodeName* end = NULL;
+
+
+
+void AddListTillByName(char *name )
+{
+	struct NodeName* temp=(struct NodeName*)malloc(sizeof(struct NodeName));
+	temp->name=name;
+	strcpy(temp->name, name);
+	temp->next=NULL;		
+	if(NULL==head)
+	{	
+		head=temp;
+	}
+	else
+	{
+	end->next=temp;
+	}
+	end=temp;
+}
+void ScanListByName()
+{
+	struct NodeName *temp =head;
+	while (temp !=NULL)
+	{
+		printf("%s\n",temp->name);
+		temp = temp->next;
+	}
+}
+
+struct NodeName* FindNodeByName(char *name)
+{
+	struct NodeName *temp =head;
+	while(temp !=NULL)
+	{
+	if(!strcmp(temp->name, name))
+	{
+		return temp;
+	}
+	temp = temp->next;
+	}
+		return NULL;
+} 
+
+void FreeListByName()
+{
+	struct NodeName *temp =head;		
+	while (temp !=NULL)
+	{
+		struct NodeName* pt =temp;
+		temp = temp->next;		
+		free(pt);	
+	}
+	head =NULL;
+	end =NULL;
+}
+
+void DeleteListTailByName()
+{ 
+	if (NULL == end)
+	{
+		printf("link name is NULL\n");
+		return;
+	}
+	 if (head==end)
+	 {
+		 free(head);
+		 head=NULL;
+		 end=NULL; 
+	 }
+	 else
+	 {
+		 struct NodeName* temp =head;
+		 while (temp->next!=end)
+		 {
+			 temp = temp->next;
+		 }
+		 free(end);
+		 end=temp;
+		 end->next=NULL;
+	 }
+
+}
+
+void DeleteListHeadByName()
+{	
+	struct NodeName* temp=head;
+
+	if (NULL==head)
+	{
+			printf("link NULL\n");
+			return;
+	}
+
+	head=head->next;
+	free(temp);
+
+}
+
+void DeleteListRandByName(char *name)
+{
+
+	if(NULL==head)
+	{
+	printf("link NULL\n");
+	return;
+	}
+	struct NodeName* temp =FindNode(name);
+	if(NULL==temp)
+	{
+	printf("NO this number\n");
+	return;
+	}
+	if(head==end)
+	{
+	free(head);
+	head=NULL;
+	end=NULL;
+	}
+	else if(head->next==end)
+	{
+	if(end == temp)
+		{	DeleteListTail(); }
+	else if(temp==head)
+		{	DeleteListHead(); }	
+	}
+	else
+	{
+		if(end==temp)
+			DeleteListTail();
+		else if(temp==head)
+			DeleteListHead();	
+		else	
+		{	
+			struct NodeName*pt =head;
+			while(pt->next!=temp)
+			{
+			pt=pt->next;
+			}
+			 pt->next=temp->next;
+			 free(temp);
+		
+		}
+	}
+	
+
+}
+
+
+
+
diff --git a/src/lynq/lib/liblynq-broadcast/liblynq-broadcast/link_name.h b/src/lynq/lib/liblynq-broadcast/liblynq-broadcast/link_name.h
new file mode 100644
index 0000000..d2ee218
--- /dev/null
+++ b/src/lynq/lib/liblynq-broadcast/liblynq-broadcast/link_name.h
@@ -0,0 +1,17 @@
+#ifndef __LYNQ_LINK_NAME_H__
+#define __LYNQ_LINK_NAME_H__
+
+struct NodeName
+{
+	char *name;				
+	struct NodeName* next;	
+};
+
+void AddListTillByName(char *name);
+void ScanListByName();
+struct NodeName* FindNodeByName(char *name);
+void FreeListByName();
+void DeleteListTailByName();
+void DeleteListHeadByName();
+void DeleteListRand(char *name);
+#endif  
\ No newline at end of file
diff --git a/src/lynq/lib/liblynq-broadcast/liblynq-broadcast/makefile b/src/lynq/lib/liblynq-broadcast/liblynq-broadcast/makefile
new file mode 100644
index 0000000..16523ac
--- /dev/null
+++ b/src/lynq/lib/liblynq-broadcast/liblynq-broadcast/makefile
@@ -0,0 +1,110 @@
+SHELL = /bin/sh
+RM = rm -f
+
+LOCAL_CFLAGS := -Wall \
+                -g -Os \
+                -flto \
+                -DRIL_SHLIB \
+                -DATCI_PARSE \
+                -DKEEP_ALIVE \
+                -DECALL_SUPPORT \
+
+$(warning ################# C2K support: $(RAT_CONFIG_C2K_SUPPORT))
+ifeq ($(strip $(RAT_CONFIG_C2K_SUPPORT)), yes)
+    LOCAL_CFLAGS += -DC2K_SUPPORT
+
+endif
+
+ifeq ($(strip $(MTK_MULTI_SIM_SUPPORT)), dsds)
+    LOCAL_CFLAGS += -DANDROID_SIM_COUNT_2 \
+                     -DANDROID_MULTI_SIM \
+                     -DMODE_DSDS
+endif
+
+ifeq ($(strip $(MTK_MULTI_SIM_SUPPORT)), dsss)
+    LOCAL_CFLAGS += -DMODE_DSSS
+endif
+
+$(warning ################# TARGET_PLATFORM: $(TARGET_PLATFORM))
+ifeq ($(strip $(TARGET_PLATFORM)), mt2731)
+#$(warning #################add for debug $(ROOT), $(includedir))
+$(warning ################# TARGET_PLATFORM_MT2731)
+    LOCAL_CFLAGS += -DTARGET_PLATFORM_MT2731 \
+                    -DMD_93_SUPPORT
+else ifeq ($(strip $(TARGET_PLATFORM)), mt2635)
+$(warning ################# TARGET_PLATFORM_MT2635)
+    LOCAL_CFLAGS += -DTARGET_PLATFORM_MT2635 \
+                    -DMD_90_SUPPORT
+endif
+
+$(warning ################# RITA ROOT: $(ROOT),includedir:$(includedir))
+LOCAL_PATH   = .
+
+LOCAL_C_INCLUDES = \
+  -I. \
+  -I$(LOCAL_PATH)/../include/liblog \
+  -I$(ROOT)$(includedir)/logger \
+  -I$(LOCAL_PATH)/../include/liblynq-broadcast \
+  -I$(LOCAL_PATH)/../include/lynq_dbus \
+  -I$(ROOT)$(includedir)/gstreamer-1.0 \
+  -I$(ROOT)$(includedir)/glib-2.0 \
+  -I$(ROOT)$(libdir)/glib-2.0/include \
+  -I$(ROOT)$(libdir)/gstreamer-1.0/include\
+  -I$(ROOT)$(includedir)/dbus-1.0 \
+  -I$(ROOT)$(libdir)/dbus-1.0/include \
+
+
+LOCAL_LIBS := \
+    -L. \
+    -ldl \
+    -lstdc++ \
+    -llog \
+    -lcutils \
+    -lutils \
+    -lpower \
+    -lbinder \
+    -lpthread \
+    -lpal \
+    -lgstreamer-1.0 \
+    -lglib-2.0 \
+    -lgstbase-1.0 \
+    -lgstreamer-1.0 \
+    -lgobject-2.0 \
+    -lgio-2.0 \
+    -ldtmf \
+    -ldbus-1 \
+
+SOURCES = $(wildcard *.c wildcard *.h)
+
+EXECUTABLE = liblynq-broadcast.so
+
+OBJECTS=$(SOURCES:.c=.o)
+
+
+.PHONY: build clean install pack_rootfs 
+
+all: build
+$(EXECUTABLE): $(OBJECTS)
+	$(CXX) -shared -Wl,--no-undefined $(OBJECTS) $(LOCAL_LIBS) $(LOCAL_CFLAGS) $(LOCAL_C_INCLUDES) -o $@
+
+%.o : %.c
+	$(CC) $(LOCAL_C_INCLUDES) $(LOCAL_CFLAGS) $(LOCAL_LIBS) -o $@ -c $< 
+
+build:  $(EXECUTABLE)
+	$(warning ########## build $(EXECUTABLE)  ##########)
+
+install:
+	mkdir -p $(ROOT)$(base_libdir)/
+	install $(EXECUTABLE) $(ROOT)$(base_libdir)/
+	mkdir -p $(ROOT)$(includedir)/$(NAME)/sdk
+
+pack_rootfs:
+	mkdir -p $(PACK_INITRAMFS_TO)$(base_libdir)/
+	cp -af $(EXECUTABLE) $(PACK_INITRAMFS_TO)$(base_libdir)/
+	$(CROSS)strip $(PACK_INITRAMFS_TO)$(base_libdir)/$(EXECUTABLE)
+	mkdir -p $(PACK_TO)$(base_libdir)/
+	cp -af $(EXECUTABLE) $(PACK_TO)$(base_libdir)/
+	$(CROSS)strip $(PACK_TO)$(base_libdir)/$(EXECUTABLE)
+.PHONY: clean
+clean:
+	$(RM) $(OBJECTS) $(EXECUTABLE)