2 // Copyright (c) 2020 Samsung Electronics Co., Ltd.
4 // Licensed under the Apache License, Version 2.0 (the License);
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
8 // http://www.apache.org/licenses/LICENSE-2.0
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
25 #define API __attribute__ ((visibility("default")))
39 API int __dlog_print(log_id_t log_id, int prio, const char *tag, const char *fmt, ...)
50 API int system_info_get_platform_bool(const char *key, bool *value)
56 API gulong g_signal_connect_data(gpointer instance,
57 const gchar *detailed_signal,
60 GClosureNotify destroy_data,
61 GConnectFlags connect_flags)
66 API GVariant *g_variant_new(const gchar *format_string, ...)
71 API gsize g_variant_iter_init(GVariantIter *iter, GVariant *value)
76 API void g_object_unref(gpointer _object)
81 API gpointer g_initable_new(GType object_type, GCancellable *cancellable,
82 GError **error, const gchar *first_property_name, ...)
87 API GTypeInstance *g_type_check_instance_cast(GTypeInstance *type_instance,
93 API GVariant *g_dbus_proxy_call_sync(GDBusProxy *proxy, const gchar *method_name,
94 GVariant *parameters, GDBusCallFlags flags, gint timeout_msec, GCancellable *cancellable,
100 API void g_variant_unref (GVariant *value)
105 GAsyncReadyCallback _callback;
107 gboolean __get_network_info_cb(gpointer user_data)
109 _callback(NULL, NULL, user_data);
114 API void g_dbus_proxy_call (GDBusProxy *proxy, const gchar *method_name, GVariant *parameters,
115 GDBusCallFlags flags, gint timeout_msec, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data)
117 _callback = callback;
119 if (0 == strncmp(method_name, "GetNetworkInfo", strlen(method_name))) {
120 g_timeout_add_seconds(1, __get_network_info_cb, user_data);
126 API GVariant *g_dbus_proxy_call_finish(GDBusProxy *proxy, GAsyncResult *res, GError **error)
131 static GVariant *__create_dummy()
134 GVariantBuilder *builder = NULL;
136 builder = g_variant_builder_new(G_VARIANT_TYPE("aa{sv}"));
137 va = g_variant_builder_end(builder);
138 g_variant_builder_unref(builder);
143 static GVariant *__create_vardict()
146 GVariantBuilder *builder = NULL;
147 builder = g_variant_builder_new(G_VARIANT_TYPE("a{sv}"));
148 g_variant_builder_add(builder, "{sv}", "Distance", g_variant_new_uint64(1));
149 g_variant_builder_add(builder, "{sv}", "NodeID", g_variant_new_uint64(2));
150 g_variant_builder_add(builder, "{sv}", "PanID", g_variant_new_uint16(3));
151 g_variant_builder_add(builder, "{sv}", "X", g_variant_new_int32(4));
152 g_variant_builder_add(builder, "{sv}", "Y", g_variant_new_int32(5));
153 g_variant_builder_add(builder, "{sv}", "Z", g_variant_new_int32(6));
155 g_variant_builder_add(builder, "{sv}", "MODE", g_variant_new_string("ANCHOR"));
156 g_variant_builder_add(builder, "{sv}", "NETWORK_TIMEOUT", g_variant_new_int64(1));
157 g_variant_builder_add(builder, "{sv}", "HARDWARE_WAIT_TIME", g_variant_new_int64(1));
158 g_variant_builder_add(builder, "{sv}", "PANID", g_variant_new_int64(1));
160 va = g_variant_builder_end(builder);
161 g_variant_builder_unref(builder);
167 API gboolean g_variant_iter_loop(GVariantIter *iter, const gchar *format_string, ...)
170 const gchar **key = NULL;
171 char _key[1024] = {0,};
172 GVariant **value = NULL;
175 if (0 != strncmp(format_string, "{sv}", strlen(format_string)))
178 va_start(ap, format_string);
179 key = va_arg(ap, const gchar **);
180 value = va_arg(ap, GVariant **);
184 strncpy(_key, "Distance", sizeof(_key));
185 *value = g_variant_new_uint64(1);
188 strncpy(_key, "NodeID", sizeof(_key));
189 *value = g_variant_new_uint64(1);
192 strncpy(_key, "PanID", sizeof(_key));
193 *value = g_variant_new_uint16(1);
196 strncpy(_key, "X", sizeof(_key));
197 *value = g_variant_new_int32(1);
200 strncpy(_key, "Y", sizeof(_key));
201 *value = g_variant_new_int32(1);
204 strncpy(_key, "Z", sizeof(_key));
205 *value = g_variant_new_int32(1);
212 *key = (const gchar *)_key;
223 API void g_variant_get (GVariant *value, const gchar *format_string, ...)
227 if (0 == strncmp(format_string, "(q@aa{sv})", strlen(format_string))) {
229 GVariant **out_remote_node_list = NULL;
230 va_start(ap, format_string);
232 out_pan_id = va_arg(ap, guint16 *);
235 out_remote_node_list = va_arg(ap, GVariant **);
236 *out_remote_node_list = __create_dummy();
239 } else if (0 == strncmp(format_string, "(@a{sv})", strlen(format_string))) {
240 GVariant **out_own_node = NULL;
241 va_start(ap, format_string);
243 out_own_node = va_arg(ap, GVariant **);
244 *out_own_node = __create_vardict();
250 API gsize g_variant_n_children(GVariant *value)
255 API void g_variant_iter_free (GVariantIter *iter)