[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,¶m);
+ 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,¶m);
+ 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 (¶mv[0], ZMO_TYPE_COM_LYNQ_DBUS_NAME);
+ g_value_set_object (¶mv[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 (¶mv[n], G_TYPE_VARIANT);
+ g_value_set_variant (¶mv[n], child);
+ n++;
+ }
+ else
+ g_dbus_gvariant_to_gvalue (child, ¶mv[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 (¶mv[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 (¶mv[n], ZMO_TYPE_COM_LYNQ_DBUS_NAME);
+ g_value_set_object (¶mv[n++], skeleton);
+ g_value_init (¶mv[n], G_TYPE_DBUS_METHOD_INVOCATION);
+ g_value_set_object (¶mv[n++], invocation);
+ if (info->pass_fdlist)
+ {
+#ifdef G_OS_UNIX
+ g_value_init (¶mv[n], G_TYPE_UNIX_FD_LIST);
+ g_value_set_object (¶mv[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 (¶mv[n], G_TYPE_VARIANT);
+ g_value_set_variant (¶mv[n], child);
+ n++;
+ }
+ else
+ g_dbus_gvariant_to_gvalue (child, ¶mv[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 (¶mv[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)