#ifndef __NETWORK_CM_INTF_H__
#define __NETWORK_CM_INTF_H__
+#include <stdbool.h>
#include "network-pm-intf.h"
#ifdef __cplusplus
/**
* \brief This API is only for Connection CAPI. Don't use this.
*
+ * \param[in] handle The network info handle.
+ * \param[out] state Indicating whether time is updated by NTP or not.
+ *
+ ******************************************************************************************/
+int net_get_clock_update_info(void *handle, bool *state);
+
+/**
+ * \brief This API is only for Connection CAPI. Don't use this.
+ *
* \param[in] enable Enable EAP over Ethernet network.
* \param[in] pofilename Profile name of ethernet.
*
*****************************************************************************/
int _net_dbus_get_ethernet_cable_state(network_info_t *network_info, int *state);
int _net_dbus_get_metered_state(network_info_t *network_info, int *state);
+int _net_dbus_get_clock_updated(network_info_t *network_info, bool *state);
int _net_dbus_get_preferred_ipv6_address(const char *profilename, char **address);
int _net_dbus_set_agent_passphrase_and_connect(network_info_t *network_info,
const char *passphrase, const char *profilename);
#define CONNMAN_ERROR_INTERFACE CONNMAN_SERVICE ".Error"
#define CONNMAN_AGENT_INTERFACE CONNMAN_SERVICE ".Agent"
#define CONNMAN_MESH_INTERFACE CONNMAN_SERVICE ".Mesh"
+#define CONNMAN_CLOCK_INTERFACE CONNMAN_SERVICE ".Clock"
#define CONNMAN_MANAGER_PATH "/"
#define CONNMAN_PATH "/net/connman"
int _net_extract_service_info(network_info_t *network_info,
const char *ProfileName, GVariantIter *iter,
net_profile_info_t *prof_info);
+void _net_extract_clock_updated(GVariantIter *iter, bool *state);
int _net_dbus_create_gdbus_call(network_info_t *network_info);
void _net_dbus_close_gdbus_call(network_info_t *network_info);
Name: libnet-client
Summary: Network Client library (Shared library)
-Version: 1.2.6
+Version: 1.2.7
Release: 2
Group: System/Network
License: Flora-1.1
return NET_ERR_NONE;
}
+EXPORT_API int net_get_clock_update_info(void *handle, bool *state)
+{
+ __NETWORK_FUNC_ENTER__;
+ net_err_t Error = NET_ERR_NONE;
+ network_info_t *network_info = (network_info_t *)handle;
+
+ Error = _net_dbus_get_clock_updated(network_info, state);
+
+ if (Error != NET_ERR_NONE)
+ NETWORK_LOG(NETWORK_ERROR, "net_get_clock_update_info failed\n");
+
+ __NETWORK_FUNC_EXIT__;
+ return Error;
+}
+
EXPORT_API void net_set_cs_tid(int tid, void *handle)
{
network_info_t *network_info = (network_info_t *)handle;
return Error;
}
+int _net_dbus_get_clock_updated(network_info_t *network_info, bool *state)
+{
+ __NETWORK_FUNC_ENTER__;
+
+ net_err_t Error = NET_ERR_NONE;
+ GVariant *message = NULL;
+ GVariantIter *clock = NULL;
+
+ if (state == NULL) {
+ NETWORK_LOG(NETWORK_ERROR, "Invalid Parameter\n");
+ __NETWORK_FUNC_EXIT__;
+ return NET_ERR_INVALID_PARAM;
+ }
+
+ message = _net_invoke_dbus_method(network_info, CONNMAN_SERVICE, CONNMAN_MANAGER_PATH,
+ CONNMAN_CLOCK_INTERFACE, "GetProperties", NULL, &Error);
+
+ /* LCOV_EXCL_START */
+ if (message == NULL) {
+ NETWORK_LOG(NETWORK_ERROR, "Failed to get clock update information\n");
+ __NETWORK_FUNC_EXIT__;
+ return Error;
+ }
+ /* LCOV_EXCL_STOP */
+
+ g_variant_get(message, "(a{sv})", &clock);
+ _net_extract_clock_updated(clock, state);
+
+ g_variant_iter_free(clock);
+ g_variant_unref(message);
+
+ __NETWORK_FUNC_EXIT__;
+ return Error;
+}
+
/* LCOV_EXCL_START */
int _net_dbus_get_preferred_ipv6_address(const char *profilename, char **address)
{
return Error;
}
+void _net_extract_clock_updated(GVariantIter *iter, bool *state)
+{
+ __NETWORK_FUNC_ENTER__;
+
+ gchar *key = NULL;
+ GVariant *value = NULL;
+ gboolean updated;
+ *state = false;
+
+ while (g_variant_iter_loop(iter, "{sv}", &key, &value)) {
+
+ if (g_strcmp0(key, "TimeUpdated") == 0) {
+ updated = g_variant_get_boolean(value);
+
+ if (updated)
+ *state = true;
+
+ g_variant_unref(value);
+ g_free(key);
+ break;
+ }
+ }
+
+ __NETWORK_FUNC_EXIT__;
+}
+
+
static int __net_get_mesh_peers(network_info_t *network_info,
const char *profile_name, net_profile_info_t *prof_info)
{
&Error);
if (message == NULL) {
NETWORK_LOG(NETWORK_LOW, "Failed to get profile, check for mesh peers");
+ __NETWORK_FUNC_EXIT__;
return __net_get_mesh_peers(network_info, profile_name, prof_info);
}