From 048e7db6e04cb1d8cecbc91cbcd3e2a7a34aeae2 Mon Sep 17 00:00:00 2001 From: "sanghyeok.oh" Date: Fri, 16 Aug 2019 19:20:39 +0900 Subject: [PATCH 01/16] libgdbus: seperate system-daemon's dbus interfaces from dbus-system.h Change-Id: I4b3ec4dedc93652d426f98eff955e725e9ea1f3e Signed-off-by: sanghyeok.oh --- CMakeLists.txt | 1 + packaging/libsyscommon.spec | 1 + src/libgdbus/dbus-system-iface.h | 329 +++++++++++++++++++++++++++++++++++++++ src/libgdbus/dbus-system.h | 308 +----------------------------------- 4 files changed, 332 insertions(+), 307 deletions(-) create mode 100644 src/libgdbus/dbus-system-iface.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 30c53c9..2a1522f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,6 +18,7 @@ SET(libsyscommon_SRCS ) SET(HEADERS src/libgdbus/dbus-system.h + src/libgdbus/dbus-system-iface.h src/libgdbus/dbus-systemd.h src/libsystemd/systemd-state.h ) diff --git a/packaging/libsyscommon.spec b/packaging/libsyscommon.spec index 5dfd090..4957b71 100644 --- a/packaging/libsyscommon.spec +++ b/packaging/libsyscommon.spec @@ -71,6 +71,7 @@ touch debugsources.list %license LICENSE.Apache-2.0 %{_libdir}/libsyscommon.so %{_includedir}/libsyscommon/dbus-system.h +%{_includedir}/libsyscommon/dbus-system-iface.h %{_includedir}/libsyscommon/dbus-systemd.h %{_includedir}/libsyscommon/systemd-state.h %{_libdir}/pkgconfig/libsyscommon.pc diff --git a/src/libgdbus/dbus-system-iface.h b/src/libgdbus/dbus-system-iface.h new file mode 100644 index 0000000..5e8dd0e --- /dev/null +++ b/src/libgdbus/dbus-system-iface.h @@ -0,0 +1,329 @@ +/* + * libsyscommon + * + * Copyright (c) 2019 Samsung Electronics Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * 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. + */ + +#ifndef __DBUS_SYSTEM_IFACE_H__ +#define __DBUS_SYSTEM_IFACE_H__ + +/* + * Template + * +#define XXX_BUS_NAME "org.tizen.system.XXX" +#define XXX_OBJECT_PATH "/Org/Tizen/System/XXX" +#define XXX_INTERFACE_NAME XXX_BUS_NAME +#define XXX_PATH_YYY XXX_OBJECT_PATH"/YYY" +#define XXX_INTERFACE_YYY XXX_INTERFACE_NAME".YYY" +#define XXX_SIGNAL_ZZZ "ZZZ" +#define XXX_METHOD_ZZZ "ZZZ" + */ + +/******************************************************************************* + * + * DBus daemon + * + ******************************************************************************/ +#define DBUS_BUS_NAME "org.freedesktop.DBus" +#define DBUS_OBJECT_PATH "/org/freedesktop/DBus" +#define DBUS_INTERFACE_NAME DBUS_BUS_NAME + +/******************************************************************************* + * + * System daemon (systemd) + * + ******************************************************************************/ +#define SYSTEMD_DBUS_PATH "/org/freedesktop/systemd1" +#define SYSTEMD_DBUS_DEST "org.freedesktop.systemd1" +#define SYSTEMD_DBUS_IFACE_MANAGER SYSTEMD_DBUS_DEST ".Manager" + +/******************************************************************************* + * + * Device daemon (deviced) + * + ******************************************************************************/ +#define DEVICED_BUS_NAME "org.tizen.system.deviced" +#define DEVICED_OBJECT_PATH "/Org/Tizen/System/DeviceD" +#define DEVICED_INTERFACE_NAME DEVICED_BUS_NAME +/* Core service: get/set device status operations about device */ +#define DEVICED_PATH_CORE DEVICED_OBJECT_PATH"/Core" +#define DEVICED_INTERFACE_CORE DEVICED_INTERFACE_NAME".core" +/* Display service: start/stop display(pm), get/set brightness operations about display */ +#define DEVICED_PATH_DISPLAY DEVICED_OBJECT_PATH"/Display" +#define DEVICED_INTERFACE_DISPLAY DEVICED_INTERFACE_NAME".display" +/* Pass service: start/stop pass operations about pass */ +#define DEVICED_PATH_PASS DEVICED_OBJECT_PATH"/Pass" +#define DEVICED_INTERFACE_PASS DEVICED_INTERFACE_NAME".pass" +/* Power service: set resetkey disable operations about power */ +#define DEVICED_PATH_POWER DEVICED_OBJECT_PATH"/Power" +#define DEVICED_INTERFACE_POWER DEVICED_INTERFACE_NAME".power" +/* Low Power service: start/stop low power mode */ +#define DEVICED_PATH_LOWPOWER DEVICED_OBJECT_PATH"/LowPower" +#define DEVICED_INTERFACE_LOWPOWER DEVICED_INTERFACE_NAME".lowpower" +/* Storage service: get storage size operatioins about storage */ +#define DEVICED_PATH_STORAGE DEVICED_OBJECT_PATH"/Storage" +#define DEVICED_INTERFACE_STORAGE DEVICED_INTERFACE_NAME".storage" +/* ODE service: request ode popup result operatioins about storage */ +#define DEVICED_PATH_SDE DEVICED_OBJECT_PATH"/Sde" +#define DEVICED_INTERFACE_SDE DEVICED_INTERFACE_NAME".sde" +#define DEVICED_PATH_ODE DEVICED_OBJECT_PATH"/Ode" +#define DEVICED_INTERFACE_ODE DEVICED_INTERFACE_NAME".ode" +/* Poweroff service: request power off operation or get power off status operations about Poweroff(signal) */ +#define DEVICED_PATH_POWEROFF DEVICED_OBJECT_PATH"/PowerOff" +#define DEVICED_INTERFACE_POWEROFF DEVICED_INTERFACE_NAME".PowerOff" +/* Led service: play/stop led operations about led */ +#define DEVICED_PATH_LED DEVICED_OBJECT_PATH"/Led" +#define DEVICED_INTERFACE_LED DEVICED_INTERFACE_NAME".Led" +/* Process service: operations about process */ +#define DEVICED_PATH_PROCESS DEVICED_OBJECT_PATH"/Process" +#define DEVICED_INTERFACE_PROCESS DEVICED_INTERFACE_NAME".Process" +/* Key service: operations about key */ +#define DEVICED_PATH_KEY DEVICED_OBJECT_PATH"/Key" +#define DEVICED_INTERFACE_KEY DEVICED_INTERFACE_NAME".Key" +/* USB client service: change usb connection mode */ +#define DEVICED_PATH_USB DEVICED_OBJECT_PATH"/Usb" +#define DEVICED_INTERFACE_USB DEVICED_INTERFACE_NAME".Usb" +/* USB start/stop service: operations about usb start/stop */ +#define DEVICED_PATH_USB_CONTROL DEVICED_OBJECT_PATH"/UsbControl" +#define DEVICED_INTERFACE_USB_CONTROL DEVICED_INTERFACE_NAME".UsbControl" +/* USB host service: operations about usb start/stop */ +#define DEVICED_PATH_USBHOST DEVICED_OBJECT_PATH"/Usbhost" +#define DEVICED_INTERFACE_USBHOST DEVICED_INTERFACE_NAME".Usbhost" +/* Sysnoti service */ +#define DEVICED_PATH_SYSNOTI DEVICED_OBJECT_PATH"/SysNoti" +#define DEVICED_INTERFACE_SYSNOTI DEVICED_INTERFACE_NAME".SysNoti" +/* ExtCon service */ +#define DEVICED_PATH_EXTCON DEVICED_OBJECT_PATH"/ExtCon" +#define DEVICED_INTERFACE_EXTCON DEVICED_INTERFACE_NAME".ExtCon" +/* Battery service */ +#define DEVICED_PATH_BATTERY DEVICED_OBJECT_PATH"/Battery" +#define DEVICED_INTERFACE_BATTERY DEVICED_INTERFACE_NAME".Battery" +/* Time service */ +#define DEVICED_PATH_TIME DEVICED_OBJECT_PATH"/Time" +#define DEVICED_INTERFACE_TIME DEVICED_INTERFACE_NAME".Time" +/* IR service */ +#define DEVICED_PATH_IR DEVICED_OBJECT_PATH"/Ir" +#define DEVICED_INTERFACE_IR DEVICED_INTERFACE_NAME".ir" +/* USB_HOST_TEST service */ +#define DEVICED_PATH_USB_HOST_TEST DEVICED_OBJECT_PATH"/UsbHostTest" +#define DEVICED_INTERFACE_USB_HOST_TEST DEVICED_INTERFACE_NAME".UsbHostTest" + +/* HDMICEC service: status check about gpio */ +#define DEVICED_PATH_HDMICEC DEVICED_OBJECT_PATH"/HdmiCec" +#define DEVICED_INTERFACE_HDMICEC DEVICED_INTERFACE_NAME".HdmiCec" + +/* Tzip service: Archive file system */ +#define DEVICED_PATH_TZIP DEVICED_OBJECT_PATH"/Tzip" +#define DEVICED_INTERFACE_TZIP DEVICED_INTERFACE_NAME".Tzip" + +/* Touch service */ +#define DEVICED_PATH_TOUCH DEVICED_OBJECT_PATH"/Touch" +#define DEVICED_INTERFACE_TOUCH DEVICED_INTERFACE_NAME".touch" + +/* Thermal service: operatioins about temperature */ +#define DEVICED_PATH_TEMPERATURE DEVICED_OBJECT_PATH"/Temperature" +#define DEVICED_INTERFACE_TEMPERATURE DEVICED_INTERFACE_NAME".temperature" + +/******************************************************************************* + * + * Storage daemon (storaged) + * + ******************************************************************************/ +#define STORAGED_BUS_NAME "org.tizen.system.storage" +#define STORAGED_OBJECT_PATH "/Org/Tizen/System/Storage" +#define STORAGED_INTERFACE_NAME STORAGED_BUS_NAME + +/* Block service */ +#define STORAGED_PATH_BLOCK STORAGED_OBJECT_PATH"/Block" +#define STORAGED_PATH_BLOCK_MANAGER STORAGED_PATH_BLOCK"/Manager" +#define STORAGED_INTERFACE_BLOCK_MANAGER STORAGED_INTERFACE_NAME".BlockManager" + +/* Storage service: get storage size operatioins about storage */ +#define STORAGED_PATH_STORAGE STORAGED_OBJECT_PATH"/Storage" +#define STORAGED_INTERFACE_STORAGE STORAGED_INTERFACE_NAME".storage" + +/* Lowmem service: get critical low status operations about Lowmem */ +#define STORAGED_PATH_LOWMEM STORAGED_OBJECT_PATH"/Lowmem" +#define STORAGED_INTERFACE_LOWMEM STORAGED_INTERFACE_NAME".lowmem" + + +/******************************************************************************* + * + * Vibrator daemon + * + ******************************************************************************/ +#define VIBRATOR_BUS_NAME "org.tizen.system.vibrator" +#define VIBRATOR_OBJECT_PATH "/Org/Tizen/System/Vibrator" +#define VIBRATOR_INTERFACE_NAME VIBRATOR_BUS_NAME +/* Core service: get/set device status operations about device */ +#define VIBRATOR_PATH_CORE VIBRATOR_OBJECT_PATH"/Core" +#define VIBRATOR_INTERFACE_CORE VIBRATOR_INTERFACE_NAME".core" + +#define VIBRATOR_PATH_HAPTIC VIBRATOR_OBJECT_PATH"/Haptic" +#define VIBRATOR_INTERFACE_HAPTIC VIBRATOR_INTERFACE_NAME".haptic" + +/* + * Resource daemon + */ +#define RESOURCED_BUS_NAME "org.tizen.resourced" +#define RESOURCED_OBJECT_PATH "/Org/Tizen/ResourceD" +#define RESOURCED_INTERFACE_NAME RESOURCED_BUS_NAME + +#define RESOURCED_PATH_PROCESS RESOURCED_OBJECT_PATH"/Process" +#define RESOURCED_INTERFACE_PROCESS RESOURCED_INTERFACE_NAME".process" +#define RESOURCED_METHOD_ACTIVE "Active" + +#define RESOURCED_PATH_FREEZER RESOURCED_OBJECT_PATH"/Freezer" +#define RESOURCED_INTERFACE_FREEZER RESOURCED_INTERFACE_NAME".freezer" + +#define RESOURCED_PATH_SLUGGISH RESOURCED_OBJECT_PATH"/Sluggish" +#define RESOURCED_INTERFACE_SLUGGISH RESOURCED_INTERFACE_NAME".sluggish" +#define RESOURCED_SIGNAL_SLUGGISH "SluggishDetected" + +#define RESOURCED_PATH_LOGGING RESOURCED_OBJECT_PATH"/Logging" +#define RESOURCED_INTERFACE_LOGGING RESOURCED_INTERFACE_NAME".logging" +/* + * Popup launcher + */ +#define POPUP_BUS_NAME "org.tizen.system.popup" +#define POPUP_OBJECT_PATH "/Org/Tizen/System/Popup" +#define POPUP_INTERFACE_NAME POPUP_BUS_NAME +/* LED */ +#define POPUP_PATH_LED POPUP_OBJECT_PATH"/Led" +#define POPUP_INTERFACE_LED POPUP_INTERFACE_NAME".Led" +/* System */ +#define POPUP_PATH_SYSTEM POPUP_OBJECT_PATH"/System" +#define POPUP_INTERFACE_SYSTEM POPUP_INTERFACE_NAME".System" +/* Notification */ +#define POPUP_PATH_NOTI POPUP_OBJECT_PATH"/Noti" +#define POPUP_INTERFACE_NOTI POPUP_INTERFACE_NAME".Noti" +/* Power key longpress */ +#define POPUP_PATH_POWERKEY POPUP_OBJECT_PATH"/Powerkey" +#define POPUP_INTERFACE_POWERKEY POPUP_INTERFACE_NAME".Powerkey" +/* Low battery */ +#define POPUP_PATH_LOWBAT POPUP_OBJECT_PATH"/Lowbat" +#define POPUP_INTERFACE_LOWBAT POPUP_INTERFACE_NAME".Lowbat" +/* Low memory */ +#define POPUP_PATH_LOWMEM POPUP_OBJECT_PATH"/Lowmem" +#define POPUP_INTERFACE_LOWMEM POPUP_INTERFACE_NAME".Lowmem" +/* MMC */ +#define POPUP_PATH_MMC POPUP_OBJECT_PATH"/Mmc" +#define POPUP_INTERFACE_MMC POPUP_INTERFACE_NAME".Mmc" +/* USB */ +#define POPUP_PATH_USB POPUP_OBJECT_PATH"/Usb" +#define POPUP_INTERFACE_USB POPUP_INTERFACE_NAME".Usb" +/* USB otg */ +#define POPUP_PATH_USBOTG POPUP_OBJECT_PATH"/Usbotg" +#define POPUP_INTERFACE_USBOTG POPUP_INTERFACE_NAME".Usbotg" +/* USB host */ +#define POPUP_PATH_USBHOST POPUP_OBJECT_PATH"/Usbhost" +#define POPUP_INTERFACE_USBHOST POPUP_INTERFACE_NAME".Usbhost" +/* System */ +#define POPUP_PATH_SYSTEM POPUP_OBJECT_PATH"/System" +#define POPUP_INTERFACE_SYSTEM POPUP_INTERFACE_NAME".System" +/* Overheat */ +#define POPUP_PATH_OVERHEAT POPUP_OBJECT_PATH"/Overheat" +#define POPUP_INTERFACE_OVERHEAT POPUP_INTERFACE_NAME".Overheat" +/* Crash */ +#define POPUP_PATH_CRASH POPUP_OBJECT_PATH"/Crash" +#define POPUP_INTERFACE_CRASH POPUP_INTERFACE_NAME".Crash" +/* Servant */ +#define POPUP_PATH_SERVANT POPUP_OBJECT_PATH"/Servant" +#define POPUP_IFACE_SERVANT POPUP_INTERFACE_NAME".Servant" + +#define POPUP_PATH_APP POPUP_OBJECT_PATH"/Apps" +#define POPUP_IFACE_APP POPUP_BUS_NAME".Apps" + +#define POPUP_METHOD_LAUNCH "PopupLaunch" +#define POPUP_METHOD_TERMINATE "AppTerminateByPid" +#define POPUP_KEY_CONTENT "_SYSPOPUP_CONTENT_" + +/* + * Crash daemon + */ +#define CRASHD_BUS_NAME "org.tizen.system.crashd" +#define CRASHD_OBJECT_PATH "/Org/Tizen/System/CrashD" +#define CRASHD_INTERFACE_NAME CRASHD_BUS_NAME + +#define CRASHD_PATH_CRASH CRASHD_OBJECT_PATH"/Crash" +#define CRASHD_INTERFACE_CRASH CRASHD_INTERFACE_NAME".Crash" + +/* + * Device Manager Policy Popup + */ +#define DEVICEMANAGER_BUS_NAME "org.tizen.DevicePolicyManager" +#define DEVICEMANAGER_OBJECT_PATH "/org/tizen/DevicePolicyManager" +#define DEVICEMANAGER_INTERFACE_NAME DEVICEMANAGER_BUS_NAME + +#define DEVICEMANAGER_PATH_POPUP DEVICEMANAGER_OBJECT_PATH"/Syspopup" +#define DEVICEMANAGER_INTERFACE_POPUP DEVICEMANAGER_INTERFACE_NAME".Syspopup" + + +/***************************************************************/ +/* Experimental for Specific device - contact to deviced owner */ +/***************************************************************/ + +/* Hall service: get hall status operations about hall */ +#define DEVICED_PATH_HALL DEVICED_OBJECT_PATH"/Hall" +#define DEVICED_INTERFACE_HALL DEVICED_INTERFACE_NAME".hall" +/* Cpu service: operations about cpu */ +#define DEVICED_PATH_CPU DEVICED_OBJECT_PATH"/Cpu" +#define DEVICED_INTERFACE_CPU DEVICED_INTERFACE_NAME".Cpu" +/* PmQos service: operations about pmqos */ +#define DEVICED_PATH_PMQOS DEVICED_OBJECT_PATH"/PmQos" +#define DEVICED_INTERFACE_PMQOS DEVICED_INTERFACE_NAME".PmQos" +/* Apps service */ +#define DEVICED_PATH_APPS DEVICED_OBJECT_PATH"/Apps" +#define DEVICED_INTERFACE_APPS DEVICED_INTERFACE_NAME".Apps" +/* GPIO service: status check about gpio */ +#define DEVICED_PATH_GPIO DEVICED_OBJECT_PATH"/Gpio" +#define DEVICED_INTERFACE_GPIO DEVICED_INTERFACE_NAME".Gpio" +/* Board service */ +#define DEVICED_PATH_BOARD DEVICED_OBJECT_PATH"/Board" +#define DEVICED_INTERFACE_BOARD DEVICED_INTERFACE_NAME".Board" +/* Csa service */ +#define DEVICED_PATH_CSA DEVICED_OBJECT_PATH"/Csa" +#define DEVICED_INTERFACE_CSA DEVICED_INTERFACE_NAME".Csa" +/* dump service */ +#define DUMP_SERVICE_BUS_NAME "org.tizen.system.dumpservice" +#define DUMP_SERVICE_OBJECT_PATH "/Org/Tizen/System/DumpService" +#define DUMP_SERVICE_INTERFACE_NAME DUMP_SERVICE_BUS_NAME +/* Coord daemon */ +#define COORD_BUS_NAME "org.tizen.system.coord" +#define COORD_OBJECT_PATH "/Org/Tizen/System/Coord" +#define COORD_INTERFACE_NAME COORD_BUS_NAME +#define COORD_PATH_AUTOBRIGHTNESS COORD_OBJECT_PATH"/Autobrightness" +#define COORD_INTERFACE_AUTOBRIGHTNESS COORD_INTERFACE_NAME".autobrightness" + +/* LED */ +#define POPUP_PATH_LED POPUP_OBJECT_PATH"/Led" +#define POPUP_INTERFACE_LED POPUP_INTERFACE_NAME".Led" +/* ODE */ +#define POPUP_PATH_ODE POPUP_OBJECT_PATH"/Ode" +#define POPUP_INTERFACE_ODE POPUP_INTERFACE_NAME".Ode" +/* Battery */ +#define POPUP_PATH_BATTERY POPUP_OBJECT_PATH"/Battery" +#define POPUP_INTERFACE_BATTERY POPUP_INTERFACE_NAME".Battery" +#define POPUP_METHOD_SCREENOFF_TTS "ScreenOffTts" +/* Overheat Timer*/ +#define POPUP_OVERHEAT_PATH POPUP_OBJECT_PATH"/Overheat" +#define POPUP_OVERHEAT_INTERFACE POPUP_INTERFACE_NAME".Overheat" + +/***********************************************/ +/* End of the Experimental for Specific device */ +/***********************************************/ + + +#endif \ No newline at end of file diff --git a/src/libgdbus/dbus-system.h b/src/libgdbus/dbus-system.h index e46bda6..cce31bb 100644 --- a/src/libgdbus/dbus-system.h +++ b/src/libgdbus/dbus-system.h @@ -27,313 +27,7 @@ #include #include -/* - * Template - * -#define XXX_BUS_NAME "org.tizen.system.XXX" -#define XXX_OBJECT_PATH "/Org/Tizen/System/XXX" -#define XXX_INTERFACE_NAME XXX_BUS_NAME -#define XXX_PATH_YYY XXX_OBJECT_PATH"/YYY" -#define XXX_INTERFACE_YYY XXX_INTERFACE_NAME".YYY" -#define XXX_SIGNAL_ZZZ "ZZZ" -#define XXX_METHOD_ZZZ "ZZZ" - */ - -/******************************************************************************* - * - * DBus daemon - * - ******************************************************************************/ -#define DBUS_BUS_NAME "org.freedesktop.DBus" -#define DBUS_OBJECT_PATH "/org/freedesktop/DBus" -#define DBUS_INTERFACE_NAME DBUS_BUS_NAME - -/******************************************************************************* - * - * System daemon (systemd) - * - ******************************************************************************/ -#define SYSTEMD_DBUS_PATH "/org/freedesktop/systemd1" -#define SYSTEMD_DBUS_DEST "org.freedesktop.systemd1" -#define SYSTEMD_DBUS_IFACE_MANAGER SYSTEMD_DBUS_DEST ".Manager" - -/******************************************************************************* - * - * Device daemon (deviced) - * - ******************************************************************************/ -#define DEVICED_BUS_NAME "org.tizen.system.deviced" -#define DEVICED_OBJECT_PATH "/Org/Tizen/System/DeviceD" -#define DEVICED_INTERFACE_NAME DEVICED_BUS_NAME -/* Core service: get/set device status operations about device */ -#define DEVICED_PATH_CORE DEVICED_OBJECT_PATH"/Core" -#define DEVICED_INTERFACE_CORE DEVICED_INTERFACE_NAME".core" -/* Display service: start/stop display(pm), get/set brightness operations about display */ -#define DEVICED_PATH_DISPLAY DEVICED_OBJECT_PATH"/Display" -#define DEVICED_INTERFACE_DISPLAY DEVICED_INTERFACE_NAME".display" -/* Pass service: start/stop pass operations about pass */ -#define DEVICED_PATH_PASS DEVICED_OBJECT_PATH"/Pass" -#define DEVICED_INTERFACE_PASS DEVICED_INTERFACE_NAME".pass" -/* Power service: set resetkey disable operations about power */ -#define DEVICED_PATH_POWER DEVICED_OBJECT_PATH"/Power" -#define DEVICED_INTERFACE_POWER DEVICED_INTERFACE_NAME".power" -/* Low Power service: start/stop low power mode */ -#define DEVICED_PATH_LOWPOWER DEVICED_OBJECT_PATH"/LowPower" -#define DEVICED_INTERFACE_LOWPOWER DEVICED_INTERFACE_NAME".lowpower" -/* Storage service: get storage size operatioins about storage */ -#define DEVICED_PATH_STORAGE DEVICED_OBJECT_PATH"/Storage" -#define DEVICED_INTERFACE_STORAGE DEVICED_INTERFACE_NAME".storage" -/* ODE service: request ode popup result operatioins about storage */ -#define DEVICED_PATH_SDE DEVICED_OBJECT_PATH"/Sde" -#define DEVICED_INTERFACE_SDE DEVICED_INTERFACE_NAME".sde" -#define DEVICED_PATH_ODE DEVICED_OBJECT_PATH"/Ode" -#define DEVICED_INTERFACE_ODE DEVICED_INTERFACE_NAME".ode" -/* Poweroff service: request power off operation or get power off status operations about Poweroff(signal) */ -#define DEVICED_PATH_POWEROFF DEVICED_OBJECT_PATH"/PowerOff" -#define DEVICED_INTERFACE_POWEROFF DEVICED_INTERFACE_NAME".PowerOff" -/* Led service: play/stop led operations about led */ -#define DEVICED_PATH_LED DEVICED_OBJECT_PATH"/Led" -#define DEVICED_INTERFACE_LED DEVICED_INTERFACE_NAME".Led" -/* Process service: operations about process */ -#define DEVICED_PATH_PROCESS DEVICED_OBJECT_PATH"/Process" -#define DEVICED_INTERFACE_PROCESS DEVICED_INTERFACE_NAME".Process" -/* Key service: operations about key */ -#define DEVICED_PATH_KEY DEVICED_OBJECT_PATH"/Key" -#define DEVICED_INTERFACE_KEY DEVICED_INTERFACE_NAME".Key" -/* USB client service: change usb connection mode */ -#define DEVICED_PATH_USB DEVICED_OBJECT_PATH"/Usb" -#define DEVICED_INTERFACE_USB DEVICED_INTERFACE_NAME".Usb" -/* USB start/stop service: operations about usb start/stop */ -#define DEVICED_PATH_USB_CONTROL DEVICED_OBJECT_PATH"/UsbControl" -#define DEVICED_INTERFACE_USB_CONTROL DEVICED_INTERFACE_NAME".UsbControl" -/* USB host service: operations about usb start/stop */ -#define DEVICED_PATH_USBHOST DEVICED_OBJECT_PATH"/Usbhost" -#define DEVICED_INTERFACE_USBHOST DEVICED_INTERFACE_NAME".Usbhost" -/* Sysnoti service */ -#define DEVICED_PATH_SYSNOTI DEVICED_OBJECT_PATH"/SysNoti" -#define DEVICED_INTERFACE_SYSNOTI DEVICED_INTERFACE_NAME".SysNoti" -/* ExtCon service */ -#define DEVICED_PATH_EXTCON DEVICED_OBJECT_PATH"/ExtCon" -#define DEVICED_INTERFACE_EXTCON DEVICED_INTERFACE_NAME".ExtCon" -/* Battery service */ -#define DEVICED_PATH_BATTERY DEVICED_OBJECT_PATH"/Battery" -#define DEVICED_INTERFACE_BATTERY DEVICED_INTERFACE_NAME".Battery" -/* Time service */ -#define DEVICED_PATH_TIME DEVICED_OBJECT_PATH"/Time" -#define DEVICED_INTERFACE_TIME DEVICED_INTERFACE_NAME".Time" -/* IR service */ -#define DEVICED_PATH_IR DEVICED_OBJECT_PATH"/Ir" -#define DEVICED_INTERFACE_IR DEVICED_INTERFACE_NAME".ir" -/* USB_HOST_TEST service */ -#define DEVICED_PATH_USB_HOST_TEST DEVICED_OBJECT_PATH"/UsbHostTest" -#define DEVICED_INTERFACE_USB_HOST_TEST DEVICED_INTERFACE_NAME".UsbHostTest" - -/* HDMICEC service: status check about gpio */ -#define DEVICED_PATH_HDMICEC DEVICED_OBJECT_PATH"/HdmiCec" -#define DEVICED_INTERFACE_HDMICEC DEVICED_INTERFACE_NAME".HdmiCec" - -/* Tzip service: Archive file system */ -#define DEVICED_PATH_TZIP DEVICED_OBJECT_PATH"/Tzip" -#define DEVICED_INTERFACE_TZIP DEVICED_INTERFACE_NAME".Tzip" - -/* Touch service */ -#define DEVICED_PATH_TOUCH DEVICED_OBJECT_PATH"/Touch" -#define DEVICED_INTERFACE_TOUCH DEVICED_INTERFACE_NAME".touch" - -/* Thermal service: operatioins about temperature */ -#define DEVICED_PATH_TEMPERATURE DEVICED_OBJECT_PATH"/Temperature" -#define DEVICED_INTERFACE_TEMPERATURE DEVICED_INTERFACE_NAME".temperature" - -/******************************************************************************* - * - * Storage daemon (storaged) - * - ******************************************************************************/ -#define STORAGED_BUS_NAME "org.tizen.system.storage" -#define STORAGED_OBJECT_PATH "/Org/Tizen/System/Storage" -#define STORAGED_INTERFACE_NAME STORAGED_BUS_NAME - -/* Block service */ -#define STORAGED_PATH_BLOCK STORAGED_OBJECT_PATH"/Block" -#define STORAGED_PATH_BLOCK_MANAGER STORAGED_PATH_BLOCK"/Manager" -#define STORAGED_INTERFACE_BLOCK_MANAGER STORAGED_INTERFACE_NAME".BlockManager" - -/* Storage service: get storage size operatioins about storage */ -#define STORAGED_PATH_STORAGE STORAGED_OBJECT_PATH"/Storage" -#define STORAGED_INTERFACE_STORAGE STORAGED_INTERFACE_NAME".storage" - -/* Lowmem service: get critical low status operations about Lowmem */ -#define STORAGED_PATH_LOWMEM STORAGED_OBJECT_PATH"/Lowmem" -#define STORAGED_INTERFACE_LOWMEM STORAGED_INTERFACE_NAME".lowmem" - - -/******************************************************************************* - * - * Vibrator daemon - * - ******************************************************************************/ -#define VIBRATOR_BUS_NAME "org.tizen.system.vibrator" -#define VIBRATOR_OBJECT_PATH "/Org/Tizen/System/Vibrator" -#define VIBRATOR_INTERFACE_NAME VIBRATOR_BUS_NAME -/* Core service: get/set device status operations about device */ -#define VIBRATOR_PATH_CORE VIBRATOR_OBJECT_PATH"/Core" -#define VIBRATOR_INTERFACE_CORE VIBRATOR_INTERFACE_NAME".core" - -#define VIBRATOR_PATH_HAPTIC VIBRATOR_OBJECT_PATH"/Haptic" -#define VIBRATOR_INTERFACE_HAPTIC VIBRATOR_INTERFACE_NAME".haptic" - -/* - * Resource daemon - */ -#define RESOURCED_BUS_NAME "org.tizen.resourced" -#define RESOURCED_OBJECT_PATH "/Org/Tizen/ResourceD" -#define RESOURCED_INTERFACE_NAME RESOURCED_BUS_NAME - -#define RESOURCED_PATH_PROCESS RESOURCED_OBJECT_PATH"/Process" -#define RESOURCED_INTERFACE_PROCESS RESOURCED_INTERFACE_NAME".process" -#define RESOURCED_METHOD_ACTIVE "Active" - -#define RESOURCED_PATH_FREEZER RESOURCED_OBJECT_PATH"/Freezer" -#define RESOURCED_INTERFACE_FREEZER RESOURCED_INTERFACE_NAME".freezer" - -#define RESOURCED_PATH_SLUGGISH RESOURCED_OBJECT_PATH"/Sluggish" -#define RESOURCED_INTERFACE_SLUGGISH RESOURCED_INTERFACE_NAME".sluggish" -#define RESOURCED_SIGNAL_SLUGGISH "SluggishDetected" - -#define RESOURCED_PATH_LOGGING RESOURCED_OBJECT_PATH"/Logging" -#define RESOURCED_INTERFACE_LOGGING RESOURCED_INTERFACE_NAME".logging" -/* - * Popup launcher - */ -#define POPUP_BUS_NAME "org.tizen.system.popup" -#define POPUP_OBJECT_PATH "/Org/Tizen/System/Popup" -#define POPUP_INTERFACE_NAME POPUP_BUS_NAME -/* LED */ -#define POPUP_PATH_LED POPUP_OBJECT_PATH"/Led" -#define POPUP_INTERFACE_LED POPUP_INTERFACE_NAME".Led" -/* System */ -#define POPUP_PATH_SYSTEM POPUP_OBJECT_PATH"/System" -#define POPUP_INTERFACE_SYSTEM POPUP_INTERFACE_NAME".System" -/* Notification */ -#define POPUP_PATH_NOTI POPUP_OBJECT_PATH"/Noti" -#define POPUP_INTERFACE_NOTI POPUP_INTERFACE_NAME".Noti" -/* Power key longpress */ -#define POPUP_PATH_POWERKEY POPUP_OBJECT_PATH"/Powerkey" -#define POPUP_INTERFACE_POWERKEY POPUP_INTERFACE_NAME".Powerkey" -/* Low battery */ -#define POPUP_PATH_LOWBAT POPUP_OBJECT_PATH"/Lowbat" -#define POPUP_INTERFACE_LOWBAT POPUP_INTERFACE_NAME".Lowbat" -/* Low memory */ -#define POPUP_PATH_LOWMEM POPUP_OBJECT_PATH"/Lowmem" -#define POPUP_INTERFACE_LOWMEM POPUP_INTERFACE_NAME".Lowmem" -/* MMC */ -#define POPUP_PATH_MMC POPUP_OBJECT_PATH"/Mmc" -#define POPUP_INTERFACE_MMC POPUP_INTERFACE_NAME".Mmc" -/* USB */ -#define POPUP_PATH_USB POPUP_OBJECT_PATH"/Usb" -#define POPUP_INTERFACE_USB POPUP_INTERFACE_NAME".Usb" -/* USB otg */ -#define POPUP_PATH_USBOTG POPUP_OBJECT_PATH"/Usbotg" -#define POPUP_INTERFACE_USBOTG POPUP_INTERFACE_NAME".Usbotg" -/* USB host */ -#define POPUP_PATH_USBHOST POPUP_OBJECT_PATH"/Usbhost" -#define POPUP_INTERFACE_USBHOST POPUP_INTERFACE_NAME".Usbhost" -/* System */ -#define POPUP_PATH_SYSTEM POPUP_OBJECT_PATH"/System" -#define POPUP_INTERFACE_SYSTEM POPUP_INTERFACE_NAME".System" -/* Overheat */ -#define POPUP_PATH_OVERHEAT POPUP_OBJECT_PATH"/Overheat" -#define POPUP_INTERFACE_OVERHEAT POPUP_INTERFACE_NAME".Overheat" -/* Crash */ -#define POPUP_PATH_CRASH POPUP_OBJECT_PATH"/Crash" -#define POPUP_INTERFACE_CRASH POPUP_INTERFACE_NAME".Crash" -/* Servant */ -#define POPUP_PATH_SERVANT POPUP_OBJECT_PATH"/Servant" -#define POPUP_IFACE_SERVANT POPUP_INTERFACE_NAME".Servant" - -#define POPUP_PATH_APP POPUP_OBJECT_PATH"/Apps" -#define POPUP_IFACE_APP POPUP_BUS_NAME".Apps" - -#define POPUP_METHOD_LAUNCH "PopupLaunch" -#define POPUP_METHOD_TERMINATE "AppTerminateByPid" -#define POPUP_KEY_CONTENT "_SYSPOPUP_CONTENT_" - -/* - * Crash daemon - */ -#define CRASHD_BUS_NAME "org.tizen.system.crashd" -#define CRASHD_OBJECT_PATH "/Org/Tizen/System/CrashD" -#define CRASHD_INTERFACE_NAME CRASHD_BUS_NAME - -#define CRASHD_PATH_CRASH CRASHD_OBJECT_PATH"/Crash" -#define CRASHD_INTERFACE_CRASH CRASHD_INTERFACE_NAME".Crash" - -/* - * Device Manager Policy Popup - */ -#define DEVICEMANAGER_BUS_NAME "org.tizen.DevicePolicyManager" -#define DEVICEMANAGER_OBJECT_PATH "/org/tizen/DevicePolicyManager" -#define DEVICEMANAGER_INTERFACE_NAME DEVICEMANAGER_BUS_NAME - -#define DEVICEMANAGER_PATH_POPUP DEVICEMANAGER_OBJECT_PATH"/Syspopup" -#define DEVICEMANAGER_INTERFACE_POPUP DEVICEMANAGER_INTERFACE_NAME".Syspopup" - - -/***************************************************************/ -/* Experimental for Specific device - contact to deviced owner */ -/***************************************************************/ - -/* Hall service: get hall status operations about hall */ -#define DEVICED_PATH_HALL DEVICED_OBJECT_PATH"/Hall" -#define DEVICED_INTERFACE_HALL DEVICED_INTERFACE_NAME".hall" -/* Cpu service: operations about cpu */ -#define DEVICED_PATH_CPU DEVICED_OBJECT_PATH"/Cpu" -#define DEVICED_INTERFACE_CPU DEVICED_INTERFACE_NAME".Cpu" -/* PmQos service: operations about pmqos */ -#define DEVICED_PATH_PMQOS DEVICED_OBJECT_PATH"/PmQos" -#define DEVICED_INTERFACE_PMQOS DEVICED_INTERFACE_NAME".PmQos" -/* Apps service */ -#define DEVICED_PATH_APPS DEVICED_OBJECT_PATH"/Apps" -#define DEVICED_INTERFACE_APPS DEVICED_INTERFACE_NAME".Apps" -/* GPIO service: status check about gpio */ -#define DEVICED_PATH_GPIO DEVICED_OBJECT_PATH"/Gpio" -#define DEVICED_INTERFACE_GPIO DEVICED_INTERFACE_NAME".Gpio" -/* Board service */ -#define DEVICED_PATH_BOARD DEVICED_OBJECT_PATH"/Board" -#define DEVICED_INTERFACE_BOARD DEVICED_INTERFACE_NAME".Board" -/* Csa service */ -#define DEVICED_PATH_CSA DEVICED_OBJECT_PATH"/Csa" -#define DEVICED_INTERFACE_CSA DEVICED_INTERFACE_NAME".Csa" -/* dump service */ -#define DUMP_SERVICE_BUS_NAME "org.tizen.system.dumpservice" -#define DUMP_SERVICE_OBJECT_PATH "/Org/Tizen/System/DumpService" -#define DUMP_SERVICE_INTERFACE_NAME DUMP_SERVICE_BUS_NAME -/* Coord daemon */ -#define COORD_BUS_NAME "org.tizen.system.coord" -#define COORD_OBJECT_PATH "/Org/Tizen/System/Coord" -#define COORD_INTERFACE_NAME COORD_BUS_NAME -#define COORD_PATH_AUTOBRIGHTNESS COORD_OBJECT_PATH"/Autobrightness" -#define COORD_INTERFACE_AUTOBRIGHTNESS COORD_INTERFACE_NAME".autobrightness" - -/* LED */ -#define POPUP_PATH_LED POPUP_OBJECT_PATH"/Led" -#define POPUP_INTERFACE_LED POPUP_INTERFACE_NAME".Led" -/* ODE */ -#define POPUP_PATH_ODE POPUP_OBJECT_PATH"/Ode" -#define POPUP_INTERFACE_ODE POPUP_INTERFACE_NAME".Ode" -/* Battery */ -#define POPUP_PATH_BATTERY POPUP_OBJECT_PATH"/Battery" -#define POPUP_INTERFACE_BATTERY POPUP_INTERFACE_NAME".Battery" -#define POPUP_METHOD_SCREENOFF_TTS "ScreenOffTts" -/* Overheat Timer*/ -#define POPUP_OVERHEAT_PATH POPUP_OBJECT_PATH"/Overheat" -#define POPUP_OVERHEAT_INTERFACE POPUP_INTERFACE_NAME".Overheat" - -/***********************************************/ -/* End of the Experimental for Specific device */ -/***********************************************/ - - +#include "dbus-system-iface.h" typedef struct { const unsigned char *data; -- 2.7.4 From 8cb15bb80482c8573f003b65ac64dc91cd5c69f8 Mon Sep 17 00:00:00 2001 From: "sanghyeok.oh" Date: Fri, 16 Aug 2019 19:21:31 +0900 Subject: [PATCH 02/16] re-arrange code Change-Id: Ie2f9dcde57b411bd4b84206db2c91c4cae25e1e2 Signed-off-by: sanghyeok.oh --- src/libgdbus/dbus-system.c | 329 +++++++++++++++++++++++------------------ src/libgdbus/dbus-system.h | 358 ++++++++++++++++++++++++++++----------------- 2 files changed, 403 insertions(+), 284 deletions(-) diff --git a/src/libgdbus/dbus-system.c b/src/libgdbus/dbus-system.c index 0653c4f..83672e3 100644 --- a/src/libgdbus/dbus-system.c +++ b/src/libgdbus/dbus-system.c @@ -1,7 +1,7 @@ /* - * deviced + * libsyscommon * - * Copyright (c) 2012 - 2013 Samsung Electronics Co., Ltd. + * Copyright (c) 2019 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the License); * you may not use this file except in compliance with the License. @@ -16,7 +16,6 @@ * limitations under the License. */ - #include #include #include @@ -30,47 +29,6 @@ /* 10 seconds */ #define DBUS_REPLY_TIMEOUT (10000) -int check_systemd_active(void) -{ - int ret = FALSE; - GVariant *msg = NULL; - GVariant *var = NULL; - char *state; - - _I("%s %s", "org.freedesktop.systemd1.Unit", "ActiveState"); - - msg = dbus_handle_method_sync_with_reply_var("org.freedesktop.systemd1", - "/org/freedesktop/systemd1/unit/default_2etarget", - "org.freedesktop.DBus.Properties", - "Get", - g_variant_new("(ss)", "org.freedesktop.systemd1.Unit", "ActiveState")); - if (!msg) - return -EBADMSG; - - if (!dh_get_param_from_var(msg, "(v)", &var)) { - _E("reply is not variant type"); - ret = -EBADMSG; - goto out; - } - if (!dh_get_param_from_var(var, "(s)", &state)) { - _E("variant doesn't have string (%s)", g_variant_get_type_string(var)); - ret = -EBADMSG; - goto out; - } - - if (strncmp(state, "active", 6) == 0) - ret = TRUE; - - g_free(state); -out: - if (var) - g_variant_unref(var); - if (msg) - g_variant_unref(msg); - - return ret; -} - static GBusType g_default_bus_type = G_BUS_TYPE_SYSTEM; pthread_mutex_t g_mutex = PTHREAD_MUTEX_INITIALIZER; @@ -1714,28 +1672,6 @@ int _check_type_string_is_container(const char *signature) return TRUE; } -GVariant *dbus_handle_make_simple_array(const char *sig, int *param) -{ - GVariantBuilder *builder = NULL; - GVariant *var = NULL; - char format[256]; - int i = 0; - - builder = g_variant_builder_new(G_VARIANT_TYPE(sig)); - if (!builder) { - _E("failed to g_variant_builder_new"); - return NULL; - } - - while (param[i]) - g_variant_builder_add(builder, "i", param[i++]); - - snprintf(format, sizeof(format) - 1, "(%s)", sig); - var = g_variant_new(format, builder); - g_variant_builder_unref(builder); - return var; -} - /* todo: looks like garbage... */ static GVariant* _append_variant(const char *signature, const char *param[]) { @@ -1865,7 +1801,11 @@ GVariant *dbus_handle_method_sync_with_reply_var(const char *dest, ret = g_dbus_connection_call_sync(dh->conn, dest, path, iface, method, - var, NULL, G_DBUS_CALL_FLAGS_NONE, DBUS_REPLY_TIMEOUT, NULL, &err); + var, NULL, + G_DBUS_CALL_FLAGS_NONE, + DBUS_REPLY_TIMEOUT, + NULL, + &err); if (!ret || err) { if (err) { _E("failed to g_dbus_connection_call_sync:%s", err->message); @@ -1902,8 +1842,12 @@ GVariant *dbus_handle_method_sync_with_reply_var_timeout(const char *dest, const } ret = g_dbus_connection_call_sync(dh->conn, - dest, path, iface, method, - var, NULL, G_DBUS_CALL_FLAGS_NONE, timeout, NULL, &err); + dest, path, iface, method, + var, NULL, + G_DBUS_CALL_FLAGS_NONE, + timeout, + NULL, + &err); if (!ret || err) { if (err) { _E("failed to g_dbus_connection_call_sync:%s", err->message); @@ -1988,11 +1932,13 @@ GVariant *dbus_handle_method_with_unix_fd_list_sync_with_reply(const char *dest, } ret = g_dbus_connection_call_with_unix_fd_list_sync(dh->conn, - dest, path, iface, method, var, - NULL, G_DBUS_CALL_FLAGS_NONE, + dest, path, iface, method, + var, NULL, + G_DBUS_CALL_FLAGS_NONE, -1, g_infdlist, &g_outfdlist, - NULL, &err); + NULL, + &err); if (!ret || err) { if (err) { _E("failed to g_dbus_connection_call_with_unix_fd_list_sync:%s", err->message); @@ -2067,8 +2013,9 @@ GVariant *dbus_handle_method_with_unix_fd_list_sync_with_reply_var(const char *d /* send message */ ret = g_dbus_connection_call_with_unix_fd_list_sync(dh->conn, - dest, path, iface, method, param, - NULL, G_DBUS_CALL_FLAGS_NONE, + dest, path, iface, method, + param, NULL, + G_DBUS_CALL_FLAGS_NONE, -1, g_infdlist, &g_outfdlist, NULL, &err); @@ -2156,10 +2103,10 @@ int dbus_handle_method_sync(const char *dest, } int dbus_handle_method_sync_var(const char *dest, - const char *path, - const char *iface, - const char *method, - GVariant *param) + const char *path, + const char *iface, + const char *method, + GVariant *param) { int result; gboolean result_bool; @@ -2189,12 +2136,12 @@ int dbus_handle_method_sync_var(const char *dest, } int dbus_handle_method_sync_timeout(const char *dest, - const char *path, - const char *iface, - const char *method, - const char *signature, - const char *param[], - int timeout) + const char *path, + const char *iface, + const char *method, + const char *signature, + const char *param[], + int timeout) { dbus_handle_s *dh = NULL; GError *err = NULL; @@ -2218,7 +2165,11 @@ int dbus_handle_method_sync_timeout(const char *dest, reply = g_dbus_connection_call_sync(dh->conn, dest, path, iface, method, - var, NULL, G_DBUS_CALL_FLAGS_NONE, timeout, NULL, &err); + var, NULL, + G_DBUS_CALL_FLAGS_NONE, + timeout, + NULL, + &err); if (!reply || err) { _E("failed to g_dbus_connection_call_sync:%s", err->message); g_error_free(err); @@ -2236,11 +2187,11 @@ int dbus_handle_method_sync_timeout(const char *dest, } int dbus_handle_method_sync_pairs(const char *dest, - const char *path, - const char *iface, - const char *method, - int num, - va_list args) + const char *path, + const char *iface, + const char *method, + int num, + va_list args) { GError *err = NULL; GVariant * reply = NULL; @@ -2292,11 +2243,11 @@ int dbus_handle_method_sync_pairs(const char *dest, } int dbus_handle_method_async_pairs(const char *dest, - const char *path, - const char *iface, - const char *method, - int num, - va_list args) + const char *path, + const char *iface, + const char *method, + int num, + va_list args) { char *key, *value; GVariant *var; @@ -2327,20 +2278,24 @@ int dbus_handle_method_async_pairs(const char *dest, var = g_variant_new("(a{ss})", builder); g_variant_builder_unref(builder); - g_dbus_connection_call(dh->conn, dest, path, iface, method, - var, NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL, - NULL, - NULL); + g_dbus_connection_call(dh->conn, + dest, path, iface, method, + var, NULL, + G_DBUS_CALL_FLAGS_NONE, + -1, + NULL, + NULL, + NULL); return 0; } int dbus_handle_method_async(const char *dest, - const char *path, - const char *iface, - const char *method, - const char *signature, - const char *param[]) + const char *path, + const char *iface, + const char *method, + const char *signature, + const char *param[]) { GVariant * var = NULL; dbus_handle_s *dh = NULL; @@ -2359,19 +2314,23 @@ int dbus_handle_method_async(const char *dest, if (signature && param) var = _append_variant(signature, param); - g_dbus_connection_call(dh->conn, dest, path, iface, method, - var, NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL, - NULL, - NULL); + g_dbus_connection_call(dh->conn, + dest, path, iface, method, + var, NULL, + G_DBUS_CALL_FLAGS_NONE, + -1, + NULL, + NULL, + NULL); return 0; } int dbus_handle_method_async_var(const char *dest, - const char *path, - const char *iface, - const char *method, - GVariant *param) + const char *path, + const char *iface, + const char *method, + GVariant *param) { dbus_handle_s *dh = NULL; @@ -2386,10 +2345,14 @@ int dbus_handle_method_async_var(const char *dest, return -1; } - g_dbus_connection_call(dh->conn, dest, path, iface, method, - param, NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL, - NULL, - NULL); + g_dbus_connection_call(dh->conn, + dest, path, iface, method, + param, NULL, + G_DBUS_CALL_FLAGS_NONE, + -1, + NULL, + NULL, + NULL); return 0; } @@ -2424,14 +2387,14 @@ out: } int dbus_handle_method_async_pairs_with_reply(const char *dest, - const char *path, - const char *iface, - const char *method, - int num, - va_list args, - dbus_pending_cb cb, - int timeout_msec, - void *data) + const char *path, + const char *iface, + const char *method, + int num, + va_list args, + dbus_pending_cb cb, + int timeout_msec, + void *data) { dbus_handle_s *dh = NULL; pending_call_data *pdata = NULL; @@ -2479,10 +2442,14 @@ int dbus_handle_method_async_pairs_with_reply(const char *dest, pdata->func = cb; pdata->data = data; } - g_dbus_connection_call(dh->conn, dest, path, iface, method, - param, NULL, G_DBUS_CALL_FLAGS_NONE, timeout_msec, NULL, - (GAsyncReadyCallback)_cb_pending, - pdata); + g_dbus_connection_call(dh->conn, + dest, path, iface, method, + param, NULL, + G_DBUS_CALL_FLAGS_NONE, + timeout_msec, + NULL, + (GAsyncReadyCallback)_cb_pending, + pdata); return ret; err: @@ -2492,14 +2459,14 @@ err: } int dbus_handle_method_async_with_reply(const char *dest, - const char *path, - const char *iface, - const char *method, - const char *signature, - const char *param[], - dbus_pending_cb cb, - int timeout_msec, - void *data) + const char *path, + const char *iface, + const char *method, + const char *signature, + const char *param[], + dbus_pending_cb cb, + int timeout_msec, + void *data) { dbus_handle_s *dh = NULL; pending_call_data *pdata = NULL; @@ -2535,10 +2502,14 @@ int dbus_handle_method_async_with_reply(const char *dest, pdata->func = cb; pdata->data = data; } - g_dbus_connection_call(dh->conn, dest, path, iface, method, - var, NULL, G_DBUS_CALL_FLAGS_NONE, timeout_msec, NULL, - (GAsyncReadyCallback)_cb_pending, - pdata); + g_dbus_connection_call(dh->conn, + dest, path, iface, method, + var, NULL, + G_DBUS_CALL_FLAGS_NONE, + timeout_msec, + NULL, + (GAsyncReadyCallback)_cb_pending, + pdata); return ret; err: @@ -2586,10 +2557,14 @@ int dbus_handle_method_async_with_reply_var(const char *dest, pdata->func = cb; pdata->data = data; } - g_dbus_connection_call(dh->conn, dest, path, iface, method, - param, NULL, G_DBUS_CALL_FLAGS_NONE, timeout_msec, NULL, - (GAsyncReadyCallback)_cb_pending, - pdata); + g_dbus_connection_call(dh->conn, + dest, path, iface, method, + param, NULL, + G_DBUS_CALL_FLAGS_NONE, + timeout_msec, + NULL, + (GAsyncReadyCallback)_cb_pending, + pdata); return ret; err: @@ -2615,8 +2590,7 @@ int dbus_connection_get_sender_pid(GDBusConnection *conn, const char * sender) vret = g_dbus_connection_call_sync(conn, "org.freedesktop.DBus", "/", "org.freedesktop.DBus", "GetConnectionUnixProcessID", - g_variant_new("(s)", sender), - NULL, + g_variant_new("(s)", sender), NULL, G_DBUS_CALL_FLAGS_NONE, DBUS_REPLY_TIMEOUT, NULL, @@ -2877,3 +2851,66 @@ void dbus_handle_check_owner_name(dbus_handle_h handle, const char *owner_name) g_strfreev(strv); } + +int check_systemd_active(void) +{ + int ret = FALSE; + GVariant *msg = NULL; + GVariant *var = NULL; + char *state; + + _I("%s %s", "org.freedesktop.systemd1.Unit", "ActiveState"); + + msg = dbus_handle_method_sync_with_reply_var("org.freedesktop.systemd1", + "/org/freedesktop/systemd1/unit/default_2etarget", + "org.freedesktop.DBus.Properties", + "Get", + g_variant_new("(ss)", "org.freedesktop.systemd1.Unit", "ActiveState")); + if (!msg) + return -EBADMSG; + + if (!dh_get_param_from_var(msg, "(v)", &var)) { + _E("reply is not variant type"); + ret = -EBADMSG; + goto out; + } + if (!dh_get_param_from_var(var, "(s)", &state)) { + _E("variant doesn't have string (%s)", g_variant_get_type_string(var)); + ret = -EBADMSG; + goto out; + } + + if (strncmp(state, "active", 6) == 0) + ret = TRUE; + + g_free(state); +out: + if (var) + g_variant_unref(var); + if (msg) + g_variant_unref(msg); + + return ret; +} + +GVariant *dbus_handle_make_simple_array(const char *sig, int *param) +{ + GVariantBuilder *builder = NULL; + GVariant *var = NULL; + char format[256]; + int i = 0; + + builder = g_variant_builder_new(G_VARIANT_TYPE(sig)); + if (!builder) { + _E("failed to g_variant_builder_new"); + return NULL; + } + + while (param[i]) + g_variant_builder_add(builder, "i", param[i++]); + + snprintf(format, sizeof(format) - 1, "(%s)", sig); + var = g_variant_new(format, builder); + g_variant_builder_unref(builder); + return var; +} diff --git a/src/libgdbus/dbus-system.h b/src/libgdbus/dbus-system.h index cce31bb..490419b 100644 --- a/src/libgdbus/dbus-system.h +++ b/src/libgdbus/dbus-system.h @@ -1,7 +1,7 @@ /* - * deviced + * libsyscommon * - * Copyright (c) 2012 - 2013 Samsung Electronics Co., Ltd. + * Copyright (c) 2019 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the License); * you may not use this file except in compliance with the License. @@ -16,9 +16,8 @@ * limitations under the License. */ - -#ifndef __DBUS_H__ -#define __DBUS_H__ +#ifndef __DBUS_SYSTEM_H__ +#define __DBUS_SYSTEM_H__ #include #include @@ -34,112 +33,25 @@ typedef struct { int size; } dbus_byte; -GVariant *dbus_handle_method_sync_with_reply_var(const char *dest, const char *path, const char *iface, const char *method, GVariant *var); - -GVariant *dbus_handle_method_sync_with_reply_var_timeout(const char *dest, const char *path, const char *iface, const char *method, GVariant *var, int timeout); - -/* fd */ -gint* dbus_handle_get_unix_fd_list(GDBusMethodInvocation *invocation, int *size); - -GVariant *dbus_handle_method_with_unix_fd_list_sync_with_reply(const char *dest, const char *path, - const char *iface, const char *method, - const char *signature, const char *param[], - int *in_fdlist, int in_size, - int **out_fdlist, int *out_size); -GVariant *dbus_handle_method_with_unix_fd_list_sync_with_reply_var(const char *dest, const char *path, - const char *iface, const char *method, - GVariant *param, - int *in_fdlist, int in_size, - int **out_fdlist, int *out_size); - -int dbus_handle_method_sync(const char *dest, const char *path, - const char *interface, const char *method, - const char *sig, const char *param[]); - -int dbus_handle_method_sync_var(const char *dest, const char *path, const char *iface, const char *method, GVariant *param); - -int dbus_handle_method_sync_timeout(const char *dest, const char *path, - const char *interface, const char *method, - const char *sig, const char *param[], int timeout); - -int dbus_handle_method_sync_pairs(const char *dest, const char *path, - const char *interface, const char *method, - int num, va_list args); - -int dbus_handle_method_async_pairs(const char *dest, const char *path, - const char *interface, const char *method, - int num, va_list args); - -int dbus_handle_method_async(const char *dest, const char *path, - const char *interface, const char *method, - const char *sig, const char *param[]); - -int dbus_handle_method_async_var(const char *dest, const char *path, const char *iface, const char *method, GVariant *param); - -typedef void (*dbus_pending_cb)(GVariant *var, void *user_data, GError *err); -int dbus_handle_method_async_with_reply(const char *dest, - const char *path, - const char *iface, - const char *method, - const char *signature, - const char *param[], - dbus_pending_cb cb, - int timeout_msec, - void *data); - - -int dbus_handle_method_async_with_reply_var(const char *dest, - const char *path, - const char *iface, - const char *method, - GVariant *param, - dbus_pending_cb cb, - int timeout_msec, - void *data); - -int dbus_handle_method_async_pairs_with_reply(const char *dest, - const char *path, - const char *iface, - const char *method, - int num, - va_list args, - dbus_pending_cb cb, - int timeout_msec, - void *data); - -int check_systemd_active(void); - -/** - * @brief Dbus handler which is used to register and call methods - - * @since_tizen 4.0 - */ typedef void *dbus_handle_h; -/** - * @brief Dbus method handler which is used to unregister dbus methods - * @since_tizen 4.0 - */ typedef void *dbus_object_handle_h; -/** - * @brief Structure which contains the dbus method name and callback function. - * @since_tizen 4.0 - */ typedef struct { const char *member; const char *signature_in; const char *signature_out; - GVariant *(*func)(GDBusConnection *conn, - const gchar *sender, const gchar *path, const gchar *iface, const gchar *name, - GVariant *param, GDBusMethodInvocation *invocation, gpointer user_data); + GVariant *(*func) (GDBusConnection *conn, + const gchar *sender, + const gchar *path, + const gchar *iface, + const gchar *name, + GVariant *param, + GDBusMethodInvocation *invocation, + gpointer user_data); } dbus_method_s; -/** - * @brief Structure which contains the dbus interface information and its methods.i - * @since_tizen 4.0 - */ typedef struct { dbus_object_handle_h oh; const char *name; @@ -147,33 +59,179 @@ typedef struct { int nr_methods; } dbus_interface_u; +typedef struct { + guint pid; + guint uid; + gchar *unique_name; + gchar *sec_label; +} GDBusCredentials; + #define dh_get_param_from_var(gvar, signature, ...) ((g_strcmp0(signature, g_variant_get_type_string(gvar)) == 0) ? g_variant_get(gvar, signature, __VA_ARGS__), TRUE : FALSE) #define dbus_handle_new_g_variant_tuple() g_variant_new_tuple(NULL, 0) -/** - * @brief Callback function which is called when the user data needs to be released. - * @since_tizen 4.0 - */ typedef void (*destroy_notified)(void *data); +typedef void (*dbus_pending_cb)(GVariant *var, void *user_data, GError *err); + typedef struct { dbus_pending_cb func; void *data; } pending_call_data; -int dbus_handle_request_bus_name(dbus_handle_h handle, const char *bus_name, GBusNameAcquiredCallback acquired_handler, GBusNameLostCallback lost_handler); - -dbus_handle_h dbus_handle_get_connection(GBusType bus_type, gboolean priv); - -int dbus_handle_register_dbus_object(dbus_handle_h handle, const char *obj_path, const dbus_interface_u *iface); -int dbus_handle_unregister_dbus_object(dbus_handle_h handle, const char *obj_path); - -int dbus_handle_add_dbus_object(dbus_handle_h handle, const char *obj_path, const dbus_interface_u *iface_u); -int dbus_handle_register_dbus_object_all(dbus_handle_h handle); - -guint subscribe_dbus_signal(dbus_handle_h handle, const char *path, const char *iface, const char *name, GDBusSignalCallback cb, void *data, destroy_notified free_func); -void unsubscribe_dbus_signal(dbus_handle_h handle, guint id); +dbus_handle_h dbus_handle_get_connection (GBusType bus_type, + gboolean priv); + +int dbus_handle_request_bus_name (dbus_handle_h handle, + const char *bus_name, + GBusNameAcquiredCallback acquired_handler, + GBusNameLostCallback lost_handler); + +int dbus_handle_register_dbus_object (dbus_handle_h handle, + const char *obj_path, + const dbus_interface_u *iface); + +int dbus_handle_unregister_dbus_object (dbus_handle_h handle, + const char *obj_path); + +int dbus_handle_add_dbus_object (dbus_handle_h handle, + const char *obj_path, + const dbus_interface_u *iface_u); + +int dbus_handle_register_dbus_object_all (dbus_handle_h handle); + + +int dbus_handle_method_sync (const char *dest, + const char *path, + const char *interface, + const char *method, + const char *sig, + const char *param[]); + +int dbus_handle_method_sync_var (const char *dest, + const char *path, + const char *iface, + const char *method, + GVariant *param); + +int dbus_handle_method_sync_timeout (const char *dest, + const char *path, + const char *interface, + const char *method, + const char *sig, + const char *param[], + int timeout); + +int dbus_handle_method_sync_pairs (const char *dest, + const char *path, + const char *interface, + const char *method, + int num, + va_list args); + +int dbus_handle_method_async_pairs (const char *dest, + const char *path, + const char *interface, + const char *method, + int num, + va_list args); + +int dbus_handle_method_async (const char *dest, + const char *path, + const char *interface, + const char *method, + const char *sig, + const char *param[]); + +int dbus_handle_method_async_var (const char *dest, + const char *path, + const char *iface, + const char *method, + GVariant *param); + +int dbus_handle_method_async_with_reply (const char *dest, + const char *path, + const char *iface, + const char *method, + const char *signature, + const char *param[], + dbus_pending_cb cb, + int timeout_msec, + void *data); + +int dbus_handle_method_async_with_reply_var (const char *dest, + const char *path, + const char *iface, + const char *method, + GVariant *param, + dbus_pending_cb cb, + int timeout_msec, + void *data); + +int dbus_handle_method_async_pairs_with_reply (const char *dest, + const char *path, + const char *iface, + const char *method, + int num, + va_list args, + dbus_pending_cb cb, + int timeout_msec, + void *data); + +GVariant *dbus_handle_method_sync_with_reply_var (const char *dest, + const char *path, + const char *iface, + const char *method, + GVariant *var); + +GVariant *dbus_handle_method_sync_with_reply_var_timeout (const char *dest, + const char *path, + const char *iface, + const char *method, + GVariant *var, + int timeout); + +gint* dbus_handle_get_unix_fd_list (GDBusMethodInvocation *invocation, + int *size); + +GVariant *dbus_handle_method_with_unix_fd_list_sync_with_reply (const char *dest, + const char *path, + const char *iface, + const char *method, + const char *signature, + const char *param[], + int *in_fdlist, + int in_size, + int **out_fdlist, + int *out_size); + +GVariant *dbus_handle_method_with_unix_fd_list_sync_with_reply_var(const char *dest, + const char *path, + const char *iface, + const char *method, + GVariant *param, + int *in_fdlist, + int in_size, + int **out_fdlist, + int *out_size); + + +guint subscribe_dbus_signal (dbus_handle_h handle, + const char *path, + const char *iface, + const char *name, + GDBusSignalCallback cb, + void *data, + destroy_notified free_func); + +void unsubscribe_dbus_signal (dbus_handle_h handle, + guint id); + +int dbus_handle_emit_dbus_signal (const char *dest, + const char *path, + const char *iface, + const char *name, + GVariant *param); enum ctx_quit_reason {CTX_QUIT_UNKNOWN, CTX_QUIT_NORMAL, CTX_QUIT_TIMEOUT}; @@ -187,30 +245,54 @@ typedef struct { void *user_data; } sig_ctx; -sig_ctx *dbus_handle_new_signal_ctx(void); -void dbus_handle_free_signal_ctx(sig_ctx *ctx); -guint subscribe_dbus_signal_ctx(dbus_handle_h handle, sig_ctx *ctx, const char *sender, const char *path, const char *iface, const char *name, GDBusSignalCallback cb); -int dbus_handle_signal_ctx_wait(sig_ctx *ctx); -int dbus_handle_signal_ctx_add_timeout(sig_ctx *ctx, int timeout); +sig_ctx *dbus_handle_new_signal_ctx (void); -GVariant *dbus_handle_make_simple_array(const char *sig, int *param); +void dbus_handle_free_signal_ctx (sig_ctx *ctx); -int dbus_handle_emit_dbus_signal(const char *dest, const char *path, const char *iface, const char *name, GVariant *param); +guint subscribe_dbus_signal_ctx (dbus_handle_h handle, + sig_ctx *ctx, + const char *sender, + const char *path, + const char *iface, + const char *name, + GDBusSignalCallback cb); -typedef struct -{ - guint pid; - guint uid; - gchar *unique_name; - gchar *sec_label; -} GDBusCredentials; +int dbus_handle_signal_ctx_wait (sig_ctx *ctx); + +int dbus_handle_signal_ctx_add_timeout (sig_ctx *ctx, + int timeout); + + + + +int dbus_connection_get_sender_pid (GDBusConnection *conn, + const char * sender); + +int dbus_handle_get_sender_pid (dbus_handle_h handle, + const char * sender); + +int dbus_handle_get_sender_credentials (dbus_handle_h handle, + const char *name, + GDBusCredentials *creds); + +int dbus_handle_watch_name (const char *name, + GBusNameAppearedCallback name_appeared_handler, + GBusNameVanishedCallback name_vanished_handler, + void *user_data, + GDestroyNotify user_data_free_func); + +void dbus_handle_unwatch_name (guint id); + +char** dbus_handle_get_owner_list (dbus_handle_h handle, + const char *bus_name); + +void dbus_handle_check_owner_name (dbus_handle_h handle, + const char *owner_name); + +int check_systemd_active (void); + +GVariant *dbus_handle_make_simple_array (const char *sig, + int *param); -int dbus_connection_get_sender_pid(GDBusConnection *conn, const char * sender); -int dbus_handle_get_sender_pid(dbus_handle_h handle, const char * sender); -int dbus_handle_get_sender_credentials(dbus_handle_h handle, const char *name, GDBusCredentials *creds); -int dbus_handle_watch_name(const char *name, GBusNameAppearedCallback name_appeared_handler, GBusNameVanishedCallback name_vanished_handler, void *user_data, GDestroyNotify user_data_free_func); -void dbus_handle_unwatch_name(guint id); -char** dbus_handle_get_owner_list(dbus_handle_h handle, const char *bus_name); -void dbus_handle_check_owner_name(dbus_handle_h handle, const char *owner_name); -#endif +#endif \ No newline at end of file -- 2.7.4 From 513be959812f4c93f2951b91e9ffb5f6d8b7ec9d Mon Sep 17 00:00:00 2001 From: "sanghyeok.oh" Date: Wed, 28 Aug 2019 11:31:07 +0900 Subject: [PATCH 03/16] fix build warning Change-Id: I5b3dab83dcf2ef1f4c4c61a6f27367595c8ef385 Signed-off-by: sanghyeok.oh --- src/libsystemd/systemd-state.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/libsystemd/systemd-state.c b/src/libsystemd/systemd-state.c index 0a6c744..ffaeff8 100644 --- a/src/libsystemd/systemd-state.c +++ b/src/libsystemd/systemd-state.c @@ -17,6 +17,7 @@ */ #include +#include #include #include "shared/log.h" -- 2.7.4 From ebd36c5c1d4e9e23a705ebb37dcf1bd47217184a Mon Sep 17 00:00:00 2001 From: "sanghyeok.oh" Date: Wed, 28 Aug 2019 15:11:04 +0900 Subject: [PATCH 04/16] libgdbus: modify code style Change-Id: Iea0fa1803e7d59bbdfdea54124cebd9d17c26858 Signed-off-by: sanghyeok.oh --- src/libgdbus/dbus-systemd.c | 109 ++++++++++++++++++++++++-------------------- src/libgdbus/dbus-systemd.h | 30 ++++++++---- 2 files changed, 81 insertions(+), 58 deletions(-) diff --git a/src/libgdbus/dbus-systemd.c b/src/libgdbus/dbus-systemd.c index d77f733..4fd961b 100644 --- a/src/libgdbus/dbus-systemd.c +++ b/src/libgdbus/dbus-systemd.c @@ -25,9 +25,9 @@ #include "shared/log.h" -#define SYSTEMD_DBUS_SERVICE "org.freedesktop.systemd1" +#define SYSTEMD_DBUS_SERVICE "org.freedesktop.systemd1" #define SYSTEMD_DBUS_PATH "/org/freedesktop/systemd1" -#define SYSTEMD_DBUS_UNIT_PATH "/org/freedesktop/systemd1/unit/" +#define SYSTEMD_DBUS_UNIT_PATH "/org/freedesktop/systemd1/unit/" #define SYSTEMD_DBUS_MANAGER_IFACE "org.freedesktop.systemd1.Manager" #define SYSTEMD_DBUS_UNIT_IFACE "org.freedesktop.systemd1.Unit" @@ -36,17 +36,17 @@ #define DBUS_IFACE_DBUS_PROPERTIES "org.freedesktop.DBus.Properties" -#define SUFFIX_SERVICE ".service" -#define SUFFIX_SOCKET ".socket" -#define SUFFIX_BUSNAME ".busname" -#define SUFFIX_TARGET ".target" -#define SUFFIX_DEVICE ".device" -#define SUFFIX_MOUNT ".mount" -#define SUFFIX_SWAP ".swap" -#define SUFFIX_TIMER ".timer" -#define SUFFIX_PATH ".path" -#define SUFFIX_SLICE ".slice" -#define SUFFIX_SCOPE ".scope" +#define SUFFIX_SERVICE ".service" +#define SUFFIX_SOCKET ".socket" +#define SUFFIX_BUSNAME ".busname" +#define SUFFIX_TARGET ".target" +#define SUFFIX_DEVICE ".device" +#define SUFFIX_MOUNT ".mount" +#define SUFFIX_SWAP ".swap" +#define SUFFIX_TIMER ".timer" +#define SUFFIX_PATH ".path" +#define SUFFIX_SLICE ".slice" +#define SUFFIX_SCOPE ".scope" #define UNIT_NAME_MAX 256 @@ -56,12 +56,12 @@ typedef struct { } unitinfo; static void _cb_JobRemoved(GDBusConnection *conn, - const char *sender, - const char *path, - const char *iface, - const char *name, - GVariant *param, - gpointer data) + const char *sender, + const char *path, + const char *iface, + const char *name, + GVariant *param, + gpointer data) { sig_ctx *ctx = data; gchar *job_id = NULL; @@ -102,7 +102,9 @@ err: g_free(unit_name); } -static int _systemd_control_unit_wait(const char *method, const char *name, int timeout_msec) +static int _systemd_control_unit_wait(const char *method, + const char *name, + int timeout_msec) { GVariant *reply = NULL; gchar *objpath = NULL; @@ -118,17 +120,23 @@ static int _systemd_control_unit_wait(const char *method, const char *name, int _I("Starting: %s %s", method, name); /* synchronous signal subscription */ - ret = subscribe_dbus_signal_ctx(NULL, ctx, SYSTEMD_DBUS_SERVICE, SYSTEMD_DBUS_PATH, SYSTEMD_DBUS_IFACE_MANAGER, "JobRemoved", _cb_JobRemoved); + ret = subscribe_dbus_signal_ctx(NULL, + ctx, + SYSTEMD_DBUS_SERVICE, + SYSTEMD_DBUS_PATH, + SYSTEMD_DBUS_IFACE_MANAGER, + "JobRemoved", + _cb_JobRemoved); if (ret == 0) { ret = -1; goto finish; } reply = dbus_handle_method_sync_with_reply_var(SYSTEMD_DBUS_DEST, - SYSTEMD_DBUS_PATH, - SYSTEMD_DBUS_MANAGER_IFACE, - method, - g_variant_new("(ss)", name, "replace")); + SYSTEMD_DBUS_PATH, + SYSTEMD_DBUS_MANAGER_IFACE, + method, + g_variant_new("(ss)", name, "replace")); if (!reply || !dh_get_param_from_var(reply, "(o)", &objpath)) { _E("fail (%s): no message", method); ret = -EBADMSG; @@ -175,10 +183,10 @@ static int _systemd_control_unit_async(const char *method, const char *name) _I("Starting: %s %s", method, name); reply = dbus_handle_method_sync_with_reply_var(SYSTEMD_DBUS_DEST, - SYSTEMD_DBUS_PATH, - SYSTEMD_DBUS_MANAGER_IFACE, - method, - g_variant_new("(ss)", name, "replace")); + SYSTEMD_DBUS_PATH, + SYSTEMD_DBUS_MANAGER_IFACE, + method, + g_variant_new("(ss)", name, "replace")); if (!reply || !dh_get_param_from_var(reply, "(o)", &objpath)) { _E("fail (%s): no message", method); @@ -195,7 +203,9 @@ finish: return ret; } -static int _change_suffix(const char *name, const char *suffix, char **new_name) +static int _change_suffix(const char *name, + const char *suffix, + char **new_name) { char *buf = NULL; char *ext = NULL; @@ -275,11 +285,14 @@ Start or Stop systemd unit. @param suffix: (nullable): change extension of unit name, or %NULL @param timeout_msec: the timeout in milliseconds, -1 to use the default @param method: method name, "StartUnit" or "StopUnit" -@param sync: %TRUE +@param wait: %TRUE Returns: the exit status */ -static int _systemd_control_unit(const char *name, const char *suffix, - int timeout_msec, const char *method, int wait) +static int _systemd_control_unit(const char *name, + const char *suffix, + int timeout_msec, + const char *method, + int wait) { char *new_name = NULL; int ret = 0; @@ -395,10 +408,10 @@ GVariant *systemd_get_manager_property(const char *property) return NULL; reply = dbus_handle_method_sync_with_reply_var(SYSTEMD_DBUS_DEST, - SYSTEMD_DBUS_PATH, - DBUS_IFACE_DBUS_PROPERTIES, - "Get", - g_variant_new("(ss)", SYSTEMD_DBUS_MANAGER_IFACE, property)); + SYSTEMD_DBUS_PATH, + DBUS_IFACE_DBUS_PROPERTIES, + "Get", + g_variant_new("(ss)", SYSTEMD_DBUS_MANAGER_IFACE, property)); if (!reply || !dh_get_param_from_var(reply, "(v)", &val)) _E("Failed to get variant"); if (reply) @@ -407,8 +420,7 @@ GVariant *systemd_get_manager_property(const char *property) return val; } -GVariant *systemd_get_unit_property(const char *unit, - const char *property) +GVariant *systemd_get_unit_property(const char *unit, const char *property) { char *escaped; GVariant *reply = NULL; @@ -420,10 +432,10 @@ GVariant *systemd_get_unit_property(const char *unit, escaped = systemd_get_unit_dbus_path(unit); reply = dbus_handle_method_sync_with_reply_var(SYSTEMD_DBUS_DEST, - escaped, - DBUS_IFACE_DBUS_PROPERTIES, - "Get", - g_variant_new("(ss)", SYSTEMD_DBUS_UNIT_IFACE, property)); + escaped, + DBUS_IFACE_DBUS_PROPERTIES, + "Get", + g_variant_new("(ss)", SYSTEMD_DBUS_UNIT_IFACE, property)); if (!reply || !dh_get_param_from_var(reply, "(v)", &val)) _E("Failed to get variant"); @@ -434,8 +446,7 @@ GVariant *systemd_get_unit_property(const char *unit, return val; } -GVariant *systemd_get_service_property(const char *unit, - const char *property) +GVariant *systemd_get_service_property(const char *unit, const char *property) { char *escaped; GVariant *reply = NULL; @@ -447,10 +458,10 @@ GVariant *systemd_get_service_property(const char *unit, escaped = systemd_get_unit_dbus_path(unit); reply = dbus_handle_method_sync_with_reply_var(SYSTEMD_DBUS_DEST, - escaped, - DBUS_IFACE_DBUS_PROPERTIES, - "Get", - g_variant_new("(ss)", SYSTEMD_DBUS_SERVICE_IFACE, property)); + escaped, + DBUS_IFACE_DBUS_PROPERTIES, + "Get", + g_variant_new("(ss)", SYSTEMD_DBUS_SERVICE_IFACE, property)); if (!reply || !dh_get_param_from_var(reply, "(v)", &val)) _E("Failed to get variant"); if (reply) diff --git a/src/libgdbus/dbus-systemd.h b/src/libgdbus/dbus-systemd.h index b10e4af..4d15200 100644 --- a/src/libgdbus/dbus-systemd.h +++ b/src/libgdbus/dbus-systemd.h @@ -26,17 +26,29 @@ extern "C" { #endif -int systemd_start_unit_wait_started(const char *name, const char *suffix, int timeout_msec); -int systemd_stop_unit_wait_stopped(const char *name, const char *suffix, int timeout_msec); +int systemd_start_unit_wait_started (const char *name, + const char *suffix, + int timeout_msec); -int systemd_start_unit_async(const char *name, const char *suffix); -int systemd_stop_unit_async(const char *name, const char *suffix); +int systemd_stop_unit_wait_stopped (const char *name, + const char *suffix, + int timeout_msec); + +int systemd_start_unit_async (const char *name, + const char *suffix); + +int systemd_stop_unit_async (const char *name, + const char *suffix); + +GVariant *systemd_get_manager_property (const char *property); + + +GVariant *systemd_get_unit_property (const char *unit, + const char *property); + +GVariant *systemd_get_service_property (const char *unit, + const char *property); -GVariant *systemd_get_manager_property(const char *property); -GVariant *systemd_get_unit_property(const char *unit, - const char *property); -GVariant *systemd_get_service_property(const char *unit, - const char *property); #ifdef __cplusplus } -- 2.7.4 From afc8d468583a4ce596022ad995e3938992f88626 Mon Sep 17 00:00:00 2001 From: "sanghyeok.oh" Date: Mon, 13 Jan 2020 16:52:46 +0900 Subject: [PATCH 05/16] libgdbus: fix leak Change-Id: Ib15167a5be404e8ca6f690efe269f7a407fefce0 Signed-off-by: sanghyeok.oh --- src/libgdbus/dbus-system.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/libgdbus/dbus-system.c b/src/libgdbus/dbus-system.c index 83672e3..8038709 100644 --- a/src/libgdbus/dbus-system.c +++ b/src/libgdbus/dbus-system.c @@ -1591,6 +1591,7 @@ int dbus_handle_signal_ctx_add_timeout(sig_ctx *ctx, int timeout_msec) g_source_set_callback(src, _cb_ctx_timeout, ctx, NULL); g_source_attach(src, ctx->context); + g_source_unref(src); ctx->timeout_src = src; -- 2.7.4 From 40418d764457e9dcadfe5b666a6afe0b69ff0e1e Mon Sep 17 00:00:00 2001 From: INSUN PYO Date: Thu, 9 Apr 2020 09:15:37 +0900 Subject: [PATCH 06/16] Fix build warning on Tizen 6.0 [ 8s] In file included from /usr/include/string.h:494, [ 8s] from /home/abuild/rpmbuild/BUILD/libsyscommon-4.1/src/libgdbus/dbus-systemd.c:21: [ 8s] In function 'strncpy', [ 8s] inlined from 'systemd_get_unit_dbus_path' at /home/abuild/rpmbuild/BUILD/libsyscommon-4.1/src/libgdbus/dbus-systemd.c:386:2: [ 8s] /usr/include/bits/string_fortified.h:106:10: warning: '__builtin_strncpy' output truncated before terminating nul copying 31 bytes from a string of the same length [-Wstringop-truncation] [ 8s] 106 | return __builtin___strncpy_chk (__dest, __src, __len, __bos (__dest)); Change-Id: Iaf5f71d7c364db91b495f50e63005778765ba359 --- src/libgdbus/dbus-systemd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libgdbus/dbus-systemd.c b/src/libgdbus/dbus-systemd.c index 4fd961b..54d3857 100644 --- a/src/libgdbus/dbus-systemd.c +++ b/src/libgdbus/dbus-systemd.c @@ -383,7 +383,7 @@ static char *systemd_get_unit_dbus_path(const char *unit) if (!path) return NULL; - strncpy(path, SYSTEMD_DBUS_UNIT_PATH, prefix_len); + strncpy(path, SYSTEMD_DBUS_UNIT_PATH, prefix_len + 1); for (i = 0, p = 0; i <= escape; i++) { k = strcspn(unit + p, SYSTEMD_UNIT_ESCAPE_CHAR); strncpy(path + prefix_len, unit + p, k); -- 2.7.4 From 7518a195e9d9f2f45a5f36b31350fed299b2fcab Mon Sep 17 00:00:00 2001 From: INSUN PYO Date: Thu, 9 Apr 2020 09:19:43 +0900 Subject: [PATCH 07/16] Fix build error with ENABLE_LIBDEVICED_DLOG option on Tizen 6.0 If NULL is passed as the %s argument of dlog, gcc reports an error. Change-Id: Id70287787362f152efbbf5935c76646500321188 --- src/libgdbus/dbus-system.c | 6 +++--- src/libgdbus/dbus-systemd.c | 5 +++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/libgdbus/dbus-system.c b/src/libgdbus/dbus-system.c index 8038709..f57f147 100644 --- a/src/libgdbus/dbus-system.c +++ b/src/libgdbus/dbus-system.c @@ -344,7 +344,7 @@ static void _dbus_handle_remove_bus_name(dbus_handle_s *handle, const char *bus_ dbus_name *dn = NULL; if (!bus_name) { - _E("wrong bus_name %s", bus_name); + _E("wrong bus_name is null"); return ; } if (!dh) { @@ -2698,7 +2698,7 @@ int dbus_handle_watch_name(const char *name, guint id = 0; if (!name) { - _E("wrong name name %s", name); + _E("wrong name name is null"); return -1; } if (!name_appeared_handler && !name_vanished_handler) { @@ -2778,7 +2778,7 @@ char **dbus_handle_get_owner_list(dbus_handle_h handle, const char *bus_name) int i = 0; if (!bus_name) { - _E("wrong parameter bus_name(%s)", bus_name); + _E("wrong parameter bus_name is null"); return NULL; } diff --git a/src/libgdbus/dbus-systemd.c b/src/libgdbus/dbus-systemd.c index 4fd961b..4597e15 100644 --- a/src/libgdbus/dbus-systemd.c +++ b/src/libgdbus/dbus-systemd.c @@ -213,7 +213,8 @@ static int _change_suffix(const char *name, int ret = 0; if (!name || !suffix || !new_name) { - _E("Wrong param name:%s, suffix:%s, new_name:%s", name, suffix, new_name); + _E("Wrong param name:%s, suffix:%s, new_name:%s (null)", + name ? : "(null)", suffix ? : "(null)", new_name ? "not" : ""); return -EINVAL; } @@ -298,7 +299,7 @@ static int _systemd_control_unit(const char *name, int ret = 0; if (!name || !method) { - _E("Wrong param name %s, method %s", name, method); + _E("Wrong param name %s, method %s", name ? : "(null)", method ? : "(null)"); return -EINVAL; } if (timeout_msec < -1) { -- 2.7.4 From b88c6d0ec832e887c3ec1a990bd45c3bee4f3b1f Mon Sep 17 00:00:00 2001 From: "sanghyeok.oh" Date: Thu, 7 May 2020 12:24:36 +0900 Subject: [PATCH 08/16] Add api dbus_handle_emit_dbus_signal_sync() * dbus_handle_emit_dbus_signal_sync() Emit signal immediately. * dbus_handle_flush_sync() g_dbus_connection_flush_sync() wrapper Change-Id: I67a79426c78be5f524e85b1786f777028d336ee9 --- src/libgdbus/dbus-system.c | 56 +++++++++++++++++++++++++++++++++++++++++++++- src/libgdbus/dbus-system.h | 8 +++++++ 2 files changed, 63 insertions(+), 1 deletion(-) diff --git a/src/libgdbus/dbus-system.c b/src/libgdbus/dbus-system.c index f57f147..93b42db 100644 --- a/src/libgdbus/dbus-system.c +++ b/src/libgdbus/dbus-system.c @@ -1768,7 +1768,61 @@ int dbus_handle_emit_dbus_signal(const char *dest, ret = g_dbus_connection_emit_signal(dh->conn, dest, path, iface, name, param, &err); if (err) { - _E("%d %s\n", ret, err ? err->message : NULL); + _E("%d %s\n", ret, err ? err->message : "NULL"); + g_error_free(err); + } + + return ret; +} + +int dbus_handle_emit_dbus_signal_sync(const char *dest, + const char *path, + const char *iface, + const char *name, + GVariant *param) +{ + dbus_handle_s *dh = NULL; + GError *err = NULL; + gboolean ret = 0; + + dh = _dbus_handle_get_default_connection(); + if (!dh) { + _E("failed to get default connection, bustype:%d", (int)dbus_handle_get_default_bus_type()); + return -1; + } + + ret = g_dbus_connection_emit_signal(dh->conn, dest, path, iface, name, param, &err); + if (!ret) { + _E("%d %s\n", ret, err ? err->message : "NULL"); + g_error_free(err); + } + + ret = g_dbus_connection_flush_sync(dh->conn, NULL, &err); + if (!ret) { + _E("%d %s\n", ret, err ? err->message : "NULL"); + g_error_free(err); + } + + return ret; +} + +int dbus_handle_flush_sync(dbus_handle_h handle) +{ + dcl_dbus_handle(); + GError *err = NULL; + gboolean ret = 0; + + if (!dh) { + dh = _dbus_handle_get_default_connection(); + if (!dh) { + _E("failed to get default connection, bustype:%d", (int)dbus_handle_get_default_bus_type()); + return 0; + } + } + + ret = g_dbus_connection_flush_sync(dh->conn, NULL, &err); + if (!ret) { + _E("%d %s\n", ret, err ? err->message : "NULL"); g_error_free(err); } diff --git a/src/libgdbus/dbus-system.h b/src/libgdbus/dbus-system.h index 490419b..faf5e02 100644 --- a/src/libgdbus/dbus-system.h +++ b/src/libgdbus/dbus-system.h @@ -233,6 +233,14 @@ int dbus_handle_emit_dbus_signal (const char *dest, const char *name, GVariant *param); +int dbus_handle_emit_dbus_signal_sync(const char *dest, + const char *path, + const char *iface, + const char *name, + GVariant *param); + +int dbus_handle_flush_sync(dbus_handle_h handle); + enum ctx_quit_reason {CTX_QUIT_UNKNOWN, CTX_QUIT_NORMAL, CTX_QUIT_TIMEOUT}; typedef struct { -- 2.7.4 From 3ff4d4f591bcdf9195315c72c79ec0223dea29f5 Mon Sep 17 00:00:00 2001 From: lokilee73 Date: Mon, 29 Jun 2020 13:43:32 +0900 Subject: [PATCH 09/16] Add dbus interface to broadcast key input values Change-Id: I7b56e3dc794361d0ff3d60660b7fd7c91541c5b2 Signed-off-by: lokilee73 --- src/libgdbus/dbus-system-iface.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/libgdbus/dbus-system-iface.h b/src/libgdbus/dbus-system-iface.h index 5e8dd0e..2638c69 100644 --- a/src/libgdbus/dbus-system-iface.h +++ b/src/libgdbus/dbus-system-iface.h @@ -136,6 +136,10 @@ #define DEVICED_PATH_TEMPERATURE DEVICED_OBJECT_PATH"/Temperature" #define DEVICED_INTERFACE_TEMPERATURE DEVICED_INTERFACE_NAME".temperature" +/* Input service: To broadcast key input values */ +#define DEVICED_PATH_INPUT DEVICED_OBJECT_PATH"/Input" +#define DEVICED_INTERFACE_INPUT DEVICED_INTERFACE_NAME".input" + /******************************************************************************* * * Storage daemon (storaged) -- 2.7.4 From dc0ef78a2e233b62919aab5047b534d171297bfa Mon Sep 17 00:00:00 2001 From: lokilee73 Date: Tue, 4 Aug 2020 11:14:22 +0900 Subject: [PATCH 10/16] Add dbus path and interface for pass daemon CPU pmqos request is done via dbus, when device sleeps or wakes up Change-Id: Icf69f71f3b1a8046194040827b57de090a3582d4 Signed-off-by: lokilee73 --- src/libgdbus/dbus-system-iface.h | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/libgdbus/dbus-system-iface.h b/src/libgdbus/dbus-system-iface.h index 2638c69..d019fbe 100644 --- a/src/libgdbus/dbus-system-iface.h +++ b/src/libgdbus/dbus-system-iface.h @@ -274,6 +274,17 @@ #define DEVICEMANAGER_PATH_POPUP DEVICEMANAGER_OBJECT_PATH"/Syspopup" #define DEVICEMANAGER_INTERFACE_POPUP DEVICEMANAGER_INTERFACE_NAME".Syspopup" +/* + * Pass daemon + */ +#define PASS_BUS_NAME "org.tizen.system.pass" +#define PASS_OBJECT_PATH "/Org/Tizen/System/Pass" +#define PASS_INTERFACE_NAME PASS_BUS_NAME + +#define PASS_PATH_PMQOS PASS_OBJECT_PATH"/Pmqos" +#define PASS_INTERFACE_PMQOS PASS_INTERFACE_NAME".pmqos" + +#define PASS_METHOD_DOZE "SetScenario" /***************************************************************/ /* Experimental for Specific device - contact to deviced owner */ -- 2.7.4 From 418f781547381d50e2225fe9ad2bf39bf2a1d2a3 Mon Sep 17 00:00:00 2001 From: lokilee73 Date: Thu, 10 Sep 2020 14:30:14 +0900 Subject: [PATCH 11/16] Change function name ex) dh_get_param_from_var to g_variant_get_safe Change-Id: I85c9946996885fde44443c09c491c829903bc378 Signed-off-by: lokilee73 --- src/libgdbus/dbus-system.c | 4 ++-- src/libgdbus/dbus-system.h | 2 +- src/libgdbus/dbus-systemd.c | 12 ++++++------ src/libsystemd/systemd-state.c | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/libgdbus/dbus-system.c b/src/libgdbus/dbus-system.c index 93b42db..ca1bd5d 100644 --- a/src/libgdbus/dbus-system.c +++ b/src/libgdbus/dbus-system.c @@ -2924,12 +2924,12 @@ int check_systemd_active(void) if (!msg) return -EBADMSG; - if (!dh_get_param_from_var(msg, "(v)", &var)) { + if (!g_variant_get_safe(msg, "(v)", &var)) { _E("reply is not variant type"); ret = -EBADMSG; goto out; } - if (!dh_get_param_from_var(var, "(s)", &state)) { + if (!g_variant_get_safe(var, "(s)", &state)) { _E("variant doesn't have string (%s)", g_variant_get_type_string(var)); ret = -EBADMSG; goto out; diff --git a/src/libgdbus/dbus-system.h b/src/libgdbus/dbus-system.h index faf5e02..cbcc9be 100644 --- a/src/libgdbus/dbus-system.h +++ b/src/libgdbus/dbus-system.h @@ -66,7 +66,7 @@ typedef struct { gchar *sec_label; } GDBusCredentials; -#define dh_get_param_from_var(gvar, signature, ...) ((g_strcmp0(signature, g_variant_get_type_string(gvar)) == 0) ? g_variant_get(gvar, signature, __VA_ARGS__), TRUE : FALSE) +#define g_variant_get_safe(gvar, signature, ...) ((g_strcmp0(signature, g_variant_get_type_string(gvar)) == 0) ? g_variant_get(gvar, signature, __VA_ARGS__), TRUE : FALSE) #define dbus_handle_new_g_variant_tuple() g_variant_new_tuple(NULL, 0) diff --git a/src/libgdbus/dbus-systemd.c b/src/libgdbus/dbus-systemd.c index 6da7748..9667115 100644 --- a/src/libgdbus/dbus-systemd.c +++ b/src/libgdbus/dbus-systemd.c @@ -78,7 +78,7 @@ static void _cb_JobRemoved(GDBusConnection *conn, _E("User_data uinfo is null"); return ; } - if (!dh_get_param_from_var(param, "(uoss)", NULL, &job_id, &unit_name, NULL)) { + if (!g_variant_get_safe(param, "(uoss)", NULL, &job_id, &unit_name, NULL)) { _E("Failed to get param"); return ; } @@ -137,7 +137,7 @@ static int _systemd_control_unit_wait(const char *method, SYSTEMD_DBUS_MANAGER_IFACE, method, g_variant_new("(ss)", name, "replace")); - if (!reply || !dh_get_param_from_var(reply, "(o)", &objpath)) { + if (!reply || !g_variant_get_safe(reply, "(o)", &objpath)) { _E("fail (%s): no message", method); ret = -EBADMSG; goto finish; @@ -188,7 +188,7 @@ static int _systemd_control_unit_async(const char *method, const char *name) method, g_variant_new("(ss)", name, "replace")); - if (!reply || !dh_get_param_from_var(reply, "(o)", &objpath)) { + if (!reply || !g_variant_get_safe(reply, "(o)", &objpath)) { _E("fail (%s): no message", method); ret = -EBADMSG; goto finish; @@ -413,7 +413,7 @@ GVariant *systemd_get_manager_property(const char *property) DBUS_IFACE_DBUS_PROPERTIES, "Get", g_variant_new("(ss)", SYSTEMD_DBUS_MANAGER_IFACE, property)); - if (!reply || !dh_get_param_from_var(reply, "(v)", &val)) + if (!reply || !g_variant_get_safe(reply, "(v)", &val)) _E("Failed to get variant"); if (reply) g_variant_unref(reply); @@ -438,7 +438,7 @@ GVariant *systemd_get_unit_property(const char *unit, const char *property) "Get", g_variant_new("(ss)", SYSTEMD_DBUS_UNIT_IFACE, property)); - if (!reply || !dh_get_param_from_var(reply, "(v)", &val)) + if (!reply || !g_variant_get_safe(reply, "(v)", &val)) _E("Failed to get variant"); if (reply) g_variant_unref(reply); @@ -463,7 +463,7 @@ GVariant *systemd_get_service_property(const char *unit, const char *property) DBUS_IFACE_DBUS_PROPERTIES, "Get", g_variant_new("(ss)", SYSTEMD_DBUS_SERVICE_IFACE, property)); - if (!reply || !dh_get_param_from_var(reply, "(v)", &val)) + if (!reply || !g_variant_get_safe(reply, "(v)", &val)) _E("Failed to get variant"); if (reply) g_variant_unref(reply); diff --git a/src/libsystemd/systemd-state.c b/src/libsystemd/systemd-state.c index ffaeff8..1c25575 100644 --- a/src/libsystemd/systemd-state.c +++ b/src/libsystemd/systemd-state.c @@ -38,7 +38,7 @@ int check_system_boot_finished(void) _E("Failed to get system state: No reply"); goto err; } - if (!dh_get_param_from_var(reply, "s", &state)) { + if (!g_variant_get_safe(reply, "s", &state)) { _E("Failed to get system state(%s)", g_variant_get_type_string(reply)); goto err; } -- 2.7.4 From d8ea389c19b9d193d866140992c2d9351f005a77 Mon Sep 17 00:00:00 2001 From: Yunmi Ha Date: Tue, 17 Nov 2020 16:26:25 +0900 Subject: [PATCH 12/16] Return -EPERM when get acces denied dbus error Change-Id: Ib604ef0d837a93cf0d47f3de0ed4f2a207768987 Signed-off-by: Yunmi Ha --- src/libgdbus/dbus-system.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/libgdbus/dbus-system.c b/src/libgdbus/dbus-system.c index ca1bd5d..cb63c88 100644 --- a/src/libgdbus/dbus-system.c +++ b/src/libgdbus/dbus-system.c @@ -1864,7 +1864,12 @@ GVariant *dbus_handle_method_sync_with_reply_var(const char *dest, if (!ret || err) { if (err) { _E("failed to g_dbus_connection_call_sync:%s", err->message); + if (g_error_matches(err, G_DBUS_ERROR, G_DBUS_ERROR_ACCESS_DENIED)) + ret = g_variant_new("(i)", -EPERM); + else + ret = NULL; g_error_free(err); + return ret; } else { _E("failed to g_dbus_connection_call_sync"); } -- 2.7.4 From 4e1614862656323690d92381c43836b13d396290 Mon Sep 17 00:00:00 2001 From: lokilee73 Date: Fri, 4 Dec 2020 10:06:33 +0900 Subject: [PATCH 13/16] Remove unused path and interface for low power Change-Id: I02dcb7b82c30c3c78a5af0c2ce204cff0c30b8ed Signed-off-by: lokilee73 --- src/libgdbus/dbus-system-iface.h | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/libgdbus/dbus-system-iface.h b/src/libgdbus/dbus-system-iface.h index d019fbe..98cd7de 100644 --- a/src/libgdbus/dbus-system-iface.h +++ b/src/libgdbus/dbus-system-iface.h @@ -69,9 +69,6 @@ /* Power service: set resetkey disable operations about power */ #define DEVICED_PATH_POWER DEVICED_OBJECT_PATH"/Power" #define DEVICED_INTERFACE_POWER DEVICED_INTERFACE_NAME".power" -/* Low Power service: start/stop low power mode */ -#define DEVICED_PATH_LOWPOWER DEVICED_OBJECT_PATH"/LowPower" -#define DEVICED_INTERFACE_LOWPOWER DEVICED_INTERFACE_NAME".lowpower" /* Storage service: get storage size operatioins about storage */ #define DEVICED_PATH_STORAGE DEVICED_OBJECT_PATH"/Storage" #define DEVICED_INTERFACE_STORAGE DEVICED_INTERFACE_NAME".storage" -- 2.7.4 From 3e6fe8f363bd28f83bdffde38f3be5aed1819b2e Mon Sep 17 00:00:00 2001 From: Yunmi Ha Date: Tue, 5 Jan 2021 13:45:21 +0900 Subject: [PATCH 14/16] libcommon: Add common library - list (glib) - ini-parser Change-Id: Ic13b47d5a1f26ed8b40007684da620a804775623 Signed-off-by: Yunmi Ha --- CMakeLists.txt | 3 ++ packaging/libsyscommon.spec | 5 +- src/libcommon/ini-parser.c | 128 ++++++++++++++++++++++++++++++++++++++++++++ src/libcommon/ini-parser.h | 42 +++++++++++++++ src/libcommon/list.h | 61 +++++++++++++++++++++ 5 files changed, 235 insertions(+), 4 deletions(-) create mode 100644 src/libcommon/ini-parser.c create mode 100644 src/libcommon/ini-parser.h create mode 100644 src/libcommon/list.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 2a1522f..33bf5f4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,12 +15,15 @@ SET(libsyscommon_SRCS src/libgdbus/dbus-system.c src/libgdbus/dbus-systemd.c src/libsystemd/systemd-state.c + src/libcommon/ini-parser.c ) SET(HEADERS src/libgdbus/dbus-system.h src/libgdbus/dbus-system-iface.h src/libgdbus/dbus-systemd.h src/libsystemd/systemd-state.h + src/libcommon/list.h + src/libcommon/ini-parser.h ) # CHECK PKG diff --git a/packaging/libsyscommon.spec b/packaging/libsyscommon.spec index 4957b71..45a25ce 100644 --- a/packaging/libsyscommon.spec +++ b/packaging/libsyscommon.spec @@ -70,8 +70,5 @@ touch debugsources.list %endif %license LICENSE.Apache-2.0 %{_libdir}/libsyscommon.so -%{_includedir}/libsyscommon/dbus-system.h -%{_includedir}/libsyscommon/dbus-system-iface.h -%{_includedir}/libsyscommon/dbus-systemd.h -%{_includedir}/libsyscommon/systemd-state.h +%{_includedir}/libsyscommon/*.h %{_libdir}/pkgconfig/libsyscommon.pc diff --git a/src/libcommon/ini-parser.c b/src/libcommon/ini-parser.c new file mode 100644 index 0000000..11093cc --- /dev/null +++ b/src/libcommon/ini-parser.c @@ -0,0 +1,128 @@ +/* + * libsyscommon + * + * Copyright (c) 2021 Samsung Electronics Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * 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. + */ + +#include +#include +#include +#include "ini-parser.h" + +#include "shared/log.h" + +#define MAX_LINE 512 +#define MAX_SECTION 64 +#define WHITESPACE " \t" +#define NEWLINE "\n\r" +#define COMMENT '#' + +static inline char *trim_str(char *s) +{ + char *t; + /* left trim */ + s += strspn(s, WHITESPACE); + + /* right trim */ + for (t = strchr(s, 0); t > s; t--) + if (!strchr(WHITESPACE, t[-1])) + break; + *t = 0; + return s; +} + +int config_parse(const char *file_name, int cb(struct parse_result *result, + void *user_data), void *user_data) +{ + FILE *f = NULL; + struct parse_result result; + /* use stack for parsing */ + char line[MAX_LINE]; + char section[MAX_SECTION]; + char *start, *end, *name, *value; + int lineno = 0, ret = 0; + + if (!file_name || !cb) { + ret = -EINVAL; + goto error; + } + + /* open conf file */ + f = fopen(file_name, "r"); + if (!f) { + _E("Failed to open file '%s'.", file_name); + ret = -EIO; + goto error; + } + + /* parsing line by line */ + while (fgets(line, MAX_LINE, f) != NULL) { + lineno++; + + start = line; + start[strcspn(start, NEWLINE)] = '\0'; + start = trim_str(start); + + if (*start == COMMENT) { + continue; + } else if (*start == '[') { + /* parse section */ + end = strchr(start, ']'); + if (!end || *end != ']') { + ret = -EBADMSG; + goto error; + } + + *end = '\0'; + strncpy(section, start + 1, sizeof(section)-1); + section[MAX_SECTION-1] = '\0'; + } else if (*start) { + /* parse name & value */ + end = strchr(start, '='); + if (!end || *end != '=') { + ret = -EBADMSG; + goto error; + } + *end = '\0'; + name = trim_str(start); + value = trim_str(end + 1); + end = strchr(value, COMMENT); + if (end && *end == COMMENT) { + *end = '\0'; + value = trim_str(value); + } + + result.section = section; + result.name = name; + result.value = value; + /* callback with parse result */ + ret = cb(&result, user_data); + if (ret < 0) { + ret = -EBADMSG; + goto error; + } + } + } + _D("Success to load '%s'.", file_name); + fclose(f); + return 0; + +error: + if (f) + fclose(f); + _E("Failed to read '%s': %d", file_name, lineno); + return ret; +} + diff --git a/src/libcommon/ini-parser.h b/src/libcommon/ini-parser.h new file mode 100644 index 0000000..b65c2b1 --- /dev/null +++ b/src/libcommon/ini-parser.h @@ -0,0 +1,42 @@ +/* + * libsyscommon + * + * Copyright (c) 2021 Samsung Electronics Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * 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. + */ + + +#ifndef __INI_PARSER_H__ +#define __INI_PARSER_H__ + +#define MATCH(a, b) (!strncmp(a, b, strlen(a))) +#define SET_CONF(a, b) (a = (b > 0.0 ? b : a)) + +struct parse_result { + char *section; + char *name; + char *value; +}; + +/** + * @brief Parse config file and call callback\n + * @param[in] file_name conf file. + * @param[in] cb cb is called when conf file is parsed line by line. + * @param[in] user_data user data is passed to cb. + * @return 0 on success, negative if failed + */ +int config_parse(const char *file_name, int cb(struct parse_result *result, + void *user_data), void *user_data); + +#endif diff --git a/src/libcommon/list.h b/src/libcommon/list.h new file mode 100644 index 0000000..eed36c0 --- /dev/null +++ b/src/libcommon/list.h @@ -0,0 +1,61 @@ +/* + * libsyscommon + * + * Copyright (c) 2021 Samsung Electronics Co., Ltd. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * 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. + */ + +#ifndef __LIST_H__ +#define __LIST_H__ + +#include +typedef GList list; + +#define LIST_PREPEND(a, b) \ + a = g_list_prepend(a, (gpointer)b) +#define LIST_APPEND(a, b) \ + a = g_list_append(a, (gpointer)b) +#define LIST_REMOVE(a, b) \ + a = g_list_remove(a, (gpointer)b) +#define LIST_REMOVE_LIST(a, b) \ + a = g_list_delete_link(a, b) +#define LIST_LENGTH(a) \ + g_list_length(a) +#define LIST_NTH(a, b) \ + g_list_nth_data(a, b) +#define LIST_FIND(a, b) \ + g_list_find(a, (gpointer)b) +#define LIST_FREE_LIST(a) \ + g_list_free(a) +#define LIST_FOREACH(head, elem, node) \ + for (elem = head, node = NULL; \ + elem && ((node = elem->data) != NULL); \ + elem = elem->next, node = NULL) +#define LIST_FOREACH_SAFE(head, elem, elem_next, node) \ + for (elem = head, elem_next = g_list_next(elem), node = NULL; \ + elem && ((node = elem->data) != NULL); \ + elem = elem_next, elem_next = g_list_next(elem), node = NULL) +#define LIST_REVERSE_FOREACH(head, elem, node) \ + for (elem = g_list_last(head), node = NULL; \ + elem && ((node = elem->data) != NULL); \ + elem = g_list_previous(elem), node = NULL) +#define LIST_REVERSE_FOREACH_SAFE(head, elem, elem_next, node) \ + for (elem = g_list_last(head), elem_next = g_list_previous(elem), node = NULL; \ + elem && ((node = elem->data) != NULL); \ + elem = elem_next, elem_next = g_list_previous(elem), node = NULL) +#define LIST_NEXT(a) \ + g_list_next(a) + +#endif + -- 2.7.4 From 8e55df13ea1d72452ce63034bbd0a9ac248358bf Mon Sep 17 00:00:00 2001 From: Yunmi Ha Date: Wed, 6 Jan 2021 16:41:57 +0900 Subject: [PATCH 15/16] libcommon: Change prefix of list definition - LIST to SYS_G_LIST Change-Id: Id160371e0f692010e1f602e5398206274c4cfbcf Signed-off-by: Yunmi Ha --- src/libcommon/list.h | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/src/libcommon/list.h b/src/libcommon/list.h index eed36c0..0809b04 100644 --- a/src/libcommon/list.h +++ b/src/libcommon/list.h @@ -16,45 +16,44 @@ * limitations under the License. */ -#ifndef __LIST_H__ -#define __LIST_H__ +#ifndef __LIBCOMMON_LIST_H__ +#define __LIBCOMMON_LIST_H__ #include -typedef GList list; -#define LIST_PREPEND(a, b) \ +#define SYS_G_LIST_PREPEND(a, b) \ a = g_list_prepend(a, (gpointer)b) -#define LIST_APPEND(a, b) \ +#define SYS_G_LIST_APPEND(a, b) \ a = g_list_append(a, (gpointer)b) -#define LIST_REMOVE(a, b) \ +#define SYS_G_LIST_REMOVE(a, b) \ a = g_list_remove(a, (gpointer)b) -#define LIST_REMOVE_LIST(a, b) \ +#define SYS_G_LIST_REMOVE_LIST(a, b) \ a = g_list_delete_link(a, b) -#define LIST_LENGTH(a) \ +#define SYS_G_LIST_LENGTH(a) \ g_list_length(a) -#define LIST_NTH(a, b) \ +#define SYS_G_LIST_NTH(a, b) \ g_list_nth_data(a, b) -#define LIST_FIND(a, b) \ +#define SYS_G_LIST_FIND(a, b) \ g_list_find(a, (gpointer)b) -#define LIST_FREE_LIST(a) \ +#define SYS_G_LIST_FREE_LIST(a) \ g_list_free(a) -#define LIST_FOREACH(head, elem, node) \ +#define SYS_G_LIST_FOREACH(head, elem, node) \ for (elem = head, node = NULL; \ elem && ((node = elem->data) != NULL); \ elem = elem->next, node = NULL) -#define LIST_FOREACH_SAFE(head, elem, elem_next, node) \ +#define SYS_G_LIST_FOREACH_SAFE(head, elem, elem_next, node) \ for (elem = head, elem_next = g_list_next(elem), node = NULL; \ elem && ((node = elem->data) != NULL); \ elem = elem_next, elem_next = g_list_next(elem), node = NULL) -#define LIST_REVERSE_FOREACH(head, elem, node) \ +#define SYS_G_LIST_REVERSE_FOREACH(head, elem, node) \ for (elem = g_list_last(head), node = NULL; \ elem && ((node = elem->data) != NULL); \ elem = g_list_previous(elem), node = NULL) -#define LIST_REVERSE_FOREACH_SAFE(head, elem, elem_next, node) \ +#define SYS_G_LIST_REVERSE_FOREACH_SAFE(head, elem, elem_next, node) \ for (elem = g_list_last(head), elem_next = g_list_previous(elem), node = NULL; \ elem && ((node = elem->data) != NULL); \ elem = elem_next, elem_next = g_list_previous(elem), node = NULL) -#define LIST_NEXT(a) \ +#define SYS_G_LIST_NEXT(a) \ g_list_next(a) #endif -- 2.7.4 From 7d4cff7498ad20214fad58d2477370e1470ca3a4 Mon Sep 17 00:00:00 2001 From: Yunmi Ha Date: Mon, 18 Jan 2021 14:44:38 +0900 Subject: [PATCH 16/16] libcommon: add file-io library Change-Id: Ifa68bfc79bb96ab11d3f69338abf4c80e80608ea Signed-off-by: Yunmi Ha --- CMakeLists.txt | 1 + src/libcommon/file.h | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++ src/shared/log.h | 2 +- 3 files changed, 131 insertions(+), 1 deletion(-) create mode 100644 src/libcommon/file.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 33bf5f4..d314ee5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -24,6 +24,7 @@ SET(HEADERS src/libsystemd/systemd-state.h src/libcommon/list.h src/libcommon/ini-parser.h + src/libcommon/file.h ) # CHECK PKG diff --git a/src/libcommon/file.h b/src/libcommon/file.h new file mode 100644 index 0000000..1cd4dec --- /dev/null +++ b/src/libcommon/file.h @@ -0,0 +1,129 @@ +/* + * Copyright (c) 2021 Samsung Electronics Co., Ltd All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * 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. + */ + + +#ifndef __LIBCOMMON_FILE_H__ +#define __LIBCOMMON_FILE_H__ + +#include +#include +#include +#include +#include + +#define SHARED_H_BUF_MAX 255 + +static inline int sys_read_buf(char *file, char *buf, int len) +{ + int fd, r; + + if (!file || !buf || len < 0) + return -EINVAL; + + fd = open(file, O_RDONLY); + if (fd == -1) + return -ENOENT; + + r = read(fd, buf, len); + close(fd); + if ((r >= 0) && (r < len)) + buf[r] = '\0'; + else + return -EIO; + + return 0; +} + +static inline int sys_write_buf(char *file, char *buf) +{ + int fd, r; + + if (!file || !buf) + return -EINVAL; + + fd = open(file, O_WRONLY); + if (fd == -1) + return -EPERM; + + r = write(fd, buf, strlen(buf)); + close(fd); + if (r < 0) + return -EIO; + + return 0; +} + +static inline int sys_get_int(char *fname, int *val) +{ + char buf[SHARED_H_BUF_MAX]; + int r; + + if (!fname || !val) + return -EINVAL; + + r = sys_read_buf(fname, buf, sizeof(buf)); + if (r < 0) + return r; + + *val = atoi(buf); + return 0; +} + +static inline int sys_get_str(char *fname, char *str, int len) +{ + int r; + + if (!fname || !str || len < 0) + return -EINVAL; + + r = sys_read_buf(fname, str, len); + if (r < 0) + return r; + + return 0; +} + +static inline int sys_set_int(char *fname, int val) +{ + char buf[SHARED_H_BUF_MAX]; + int r; + + if (!fname) + return -EINVAL; + + snprintf(buf, sizeof(buf), "%d", val); + r = sys_write_buf(fname, buf); + if (r < 0) + return r; + + return 0; +} + +static inline int sys_set_str(char *fname, char *val) +{ + int r; + + if (!fname || !val) + return -EINVAL; + + r = sys_write_buf(fname, val); + if (r < 0) + return r; + + return 0; +} + +#endif /* __LIBCOMMON_FILE_H__ */ diff --git a/src/shared/log.h b/src/shared/log.h index 4e9b338..ad914a3 100644 --- a/src/shared/log.h +++ b/src/shared/log.h @@ -24,7 +24,7 @@ #define ENABLE_DLOG #endif -#define LOG_TAG "LIBSYSTEM" +#define LOG_TAG "LIBSYSCOMMON" #include "shared/log-macro.h" #endif -- 2.7.4