--generate-c-code generated-code
--c-generate-object-manager
--generate-docbook generated-code-docs
- ${INTERFACES}/netconfig-iface-network-state.xml ${INTERFACES}/netconfig-iface-network-statistics.xml ${INTERFACES}/netconfig-iface-wifi.xml ${INTERFACES}/netconfig-iface-vpnsvc.xml ${INTERFACES}/netconfig-iface-mptcp.xml ${INTERFACES}/netconfig-iface-ethernet.xml
+ ${INTERFACES}/netconfig-iface-network-state.xml ${INTERFACES}/netconfig-iface-network-statistics.xml ${INTERFACES}/netconfig-iface-wifi.xml ${INTERFACES}/netconfig-iface-vpnsvc.xml ${INTERFACES}/netconfig-iface-mptcp.xml ${INTERFACES}/netconfig-iface-ethernet.xml ${INTERFACES}/netconfig-iface-clock.xml
COMMENT "Generating GDBus .c/.h")
ADD_EXECUTABLE(${PROJECT_NAME} ${SRCS} ${CMAKE_SOURCE_DIR}/generated-code.c)
#define NETCONFIG_MPTCP_INTERFACE "net.netconfig.mptcp"
#define NETCONFIG_ETHERNET_PATH "/net/netconfig/ethernet"
#define NETCONFIG_ETHERNET_INTERFACE "net.netconfig.ethernet"
+#define NETCONFIG_CLOCK_PATH "/net/netconfig/clock"
+#define NETCONFIG_CLOCK_INTERFACE "net.netconfig.clock"
#define CONTAINER_FILE "/run/systemd/container"
#define DBUS_HOST_SYSTEM_BUS_ADDRESS "unix:path=/run/host/dbus/system_bus_socket"
GDBusObjectManagerServer *netdbus_get_vpn_manager(void);
GDBusObjectManagerServer *netdbus_get_mptcp_manager(void);
GDBusObjectManagerServer *netdbus_get_ethernet_manager(void);
+GDBusObjectManagerServer *netdbus_get_clock_manager(void);
GDBusConnection *netdbus_get_connection(void);
GCancellable *netdbus_get_cancellable(void);
extern "C" {
#endif
+#include <glib.h>
+#include <gio/gio.h>
+#include <glib-object.h>
+
+void clock_object_create_and_init(void);
+void clock_object_deinit(void);
+Clock *get_clock_object(void);
+
void netconfig_clock_init(void);
void netconfig_clock_deinit(void);
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<node name="/net/netconfig/clock">
+ <interface name="net.netconfig.clock">
+ <method name="SetNtpServer">
+ <arg type="s" name="ntp_server" direction="in"/>
+ </method>
+ </interface>
+</node>
<allow send_destination="net.netconfig" send_interface="net.netconfig.ethernet" send_member="EnableEap" />
<allow send_destination="net.netconfig" send_interface="net.netconfig.ethernet" send_member="SetEapConfig" />
+
+ <allow send_destination="net.netconfig" send_interface="net.netconfig.clock" send_member="SetNtpServer" />
</policy>
</busconfig>
<check send_destination="net.netconfig" send_interface="net.netconfig.ethernet" send_member="EnableEap" privilege="http://tizen.org/privilege/network.set" />
<check send_destination="net.netconfig" send_interface="net.netconfig.ethernet" send_member="SetEapConfig" privilege="http://tizen.org/privilege/network.profile" />
+
+ <check send_destination="net.netconfig" send_interface="net.netconfig.clock" send_member="SetNtpServer" privilege="http://tizen.org/privilege/network.set" />
</policy>
</busconfig>
static GDBusObjectManagerServer *manager_server_vpn = NULL;
static GDBusObjectManagerServer *manager_server_mptcp = NULL;
static GDBusObjectManagerServer *manager_server_ethernet = NULL;
+static GDBusObjectManagerServer *manager_server_clock = NULL;
+
static guint owner_id = 0;
static got_name_cb g_callback = NULL;
return manager_server_ethernet;
}
+GDBusObjectManagerServer *netdbus_get_clock_manager(void)
+{
+ return manager_server_clock;
+}
+
GDBusConnection *netdbus_get_connection(void)
{
return gconn_data.connection;
exit(1);
}
+ manager_server_clock = g_dbus_object_manager_server_new(NETCONFIG_CLOCK_PATH);
+ if (manager_server_clock == NULL) {
+ ERR("Manager server for NETCONFIG_CLOCK_PATH not created.");
+ exit(1);
+ }
+
owner_id = g_bus_own_name(G_BUS_TYPE_SYSTEM, NETCONFIG_SERVICE,
G_BUS_NAME_OWNER_FLAGS_NONE,
_got_bus_cb, _got_name_cb, _lost_name_cb,
vpnsvc_create_and_init();
mptcp_object_create_and_init();
ethernet_object_create_and_init();
+ clock_object_create_and_init();
register_gdbus_signal();
connman_register_agent();
vpnsvc_destroy_deinit();
mptcp_object_deinit();
ethernet_object_deinit();
+ clock_object_deinit();
}
int main(int argc, char *argv[])
#define NTP_SERVER "pool.ntp.org"
#define CONNMAN_GLOBAL_SETTING "/var/lib/connman/settings"
+static Clock *clock_object = NULL;
+
+Clock *get_clock_object(void)
+{
+ return clock_object;
+}
+
static void __netconfig_clock_clear_timeserver(void)
{
GKeyFile *keyfile = NULL;
vconf_ignore_key_changed(VCONFKEY_NETWORK_STATUS,
__network_changed_cb);
}
+
+gboolean handle_set_ntp_server(Clock *object, GDBusMethodInvocation *invocation,
+ const gchar *server)
+{
+ if(server == NULL) {
+ netconfig_error_dbus_method_return(invocation,
+ NETCONFIG_ERROR_INTERNAL, "SetNtpServer Failed");
+ return TRUE;
+ }
+
+ __netconfig_clock_set_timeserver(server);
+
+ DBG("NTP Server:%s set successfully",server);
+
+ clock_complete_set_ntp_server(object, invocation);
+
+ return TRUE;
+}
+
+/*****************************
+ * Initializations Functions *
+ ****************************/
+void clock_object_create_and_init(void)
+{
+ DBG("Create clock object.");
+ GDBusInterfaceSkeleton *interface_clock = NULL;
+ GDBusConnection *connection = NULL;
+ GDBusObjectManagerServer *server = netdbus_get_clock_manager();
+ if (server == NULL)
+ return;
+
+ connection = netdbus_get_connection();
+ g_dbus_object_manager_server_set_connection(server, connection);
+
+ /* Interface */
+ clock_object = clock_skeleton_new();
+ interface_clock = G_DBUS_INTERFACE_SKELETON(clock_object);
+
+ /* Set NTP Server */
+ g_signal_connect(clock_object, "handle-set-ntp-server",
+ G_CALLBACK(handle_set_ntp_server), NULL);
+
+ if (!g_dbus_interface_skeleton_export(interface_clock, connection,
+ NETCONFIG_CLOCK_PATH, NULL)) {
+ ERR("Export NETCONFIG_CLOCK_PATH for clock failed");
+ }
+
+ return;
+}
+
+void clock_object_deinit(void)
+{
+ DBG("Deinit clock object.");
+
+ g_object_unref(clock_object);
+}