From 16aac6cdf0b900dbb80e6b929fc2d3616a682b51 Mon Sep 17 00:00:00 2001 From: "jino.cho" Date: Thu, 18 May 2017 16:59:09 +0900 Subject: [PATCH] Add pwm get_enable functions This patch adds get_enable functions to read current enable status. The type of enable was changed to boolean. Change-Id: Ida7f8437ad452f96bf29bc4a1a1d46b85b4eb50b Signed-off-by: jino.cho --- src/daemon/peripheral_bus.c | 21 +++++++++++++++++++++ src/daemon/peripheral_bus_pwm.c | 6 +++++- src/daemon/peripheral_bus_pwm.h | 3 ++- src/daemon/peripheral_io.xml | 7 ++++++- src/interface/include/pwm.h | 4 ++-- src/interface/pwm.c | 7 ++++--- 6 files changed, 40 insertions(+), 8 deletions(-) diff --git a/src/daemon/peripheral_bus.c b/src/daemon/peripheral_bus.c index 04f2bee..fde68a2 100644 --- a/src/daemon/peripheral_bus.c +++ b/src/daemon/peripheral_bus.c @@ -355,6 +355,23 @@ gboolean handle_pwm_set_enable( return true; } +gboolean handle_pwm_get_enable( + PeripheralIoGdbusPwm *pwm, + GDBusMethodInvocation *invocation, + gint handle, + gpointer user_data) +{ + peripheral_error_e ret = PERIPHERAL_ERROR_NONE; + pb_pwm_data_h pwm_handle = GUINT_TO_POINTER(handle); + bool enable; + + ret = peripheral_bus_pwm_get_enable(pwm_handle, &enable); + + peripheral_io_gdbus_pwm_complete_get_enable(pwm, invocation, enable, ret); + + return true; +} + gboolean handle_uart_open( PeripheralIoGdbusUart *uart, GDBusMethodInvocation *invocation, @@ -767,6 +784,10 @@ static gboolean __pwm_init(peripheral_bus_s *pb_data) "handle-set-enable", G_CALLBACK(handle_pwm_set_enable), pb_data); + g_signal_connect(pb_data->pwm_skeleton, + "handle-get-enable", + G_CALLBACK(handle_pwm_get_enable), + pb_data); manager = g_dbus_object_manager_server_new(PERIPHERAL_GDBUS_PWM_PATH); diff --git a/src/daemon/peripheral_bus_pwm.c b/src/daemon/peripheral_bus_pwm.c index 8c39a4f..993cf1a 100644 --- a/src/daemon/peripheral_bus_pwm.c +++ b/src/daemon/peripheral_bus_pwm.c @@ -149,8 +149,12 @@ int peripheral_bus_pwm_get_duty_cycle(pb_pwm_data_h pwm, int *duty_cycle) return pwm_get_duty_cycle(pwm->device, pwm->channel, duty_cycle); } -int peripheral_bus_pwm_set_enable(pb_pwm_data_h pwm, int enable) +int peripheral_bus_pwm_set_enable(pb_pwm_data_h pwm, bool enable) { return pwm_set_enable(pwm->device, pwm->channel, enable); } +int peripheral_bus_pwm_get_enable(pb_pwm_data_h pwm, bool *enable) +{ + return pwm_get_enable(pwm->device, pwm->channel, enable); +} diff --git a/src/daemon/peripheral_bus_pwm.h b/src/daemon/peripheral_bus_pwm.h index 14a92f2..3e528a8 100644 --- a/src/daemon/peripheral_bus_pwm.h +++ b/src/daemon/peripheral_bus_pwm.h @@ -23,6 +23,7 @@ int peripheral_bus_pwm_set_period(pb_pwm_data_h pwm, int period); int peripheral_bus_pwm_get_period(pb_pwm_data_h pwm, int *period); int peripheral_bus_pwm_set_duty_cycle(pb_pwm_data_h pwm, int duty_cycle); int peripheral_bus_pwm_get_duty_cycle(pb_pwm_data_h pwm, int *duty_cycle); -int peripheral_bus_pwm_set_enable(pb_pwm_data_h pwm, int enable); +int peripheral_bus_pwm_set_enable(pb_pwm_data_h pwm, bool enable); +int peripheral_bus_pwm_get_enable(pb_pwm_data_h pwm, bool *enable); #endif /* __PERIPHERAL_BUS_PWM_H__ */ diff --git a/src/daemon/peripheral_io.xml b/src/daemon/peripheral_io.xml index 8783128..57ad78d 100644 --- a/src/daemon/peripheral_io.xml +++ b/src/daemon/peripheral_io.xml @@ -115,7 +115,12 @@ - + + + + + + diff --git a/src/interface/include/pwm.h b/src/interface/include/pwm.h index d53496f..524bfa1 100644 --- a/src/interface/include/pwm.h +++ b/src/interface/include/pwm.h @@ -110,7 +110,7 @@ int pwm_get_polarity(int device, int channel, pwm_polarity_e *polarity); * @param[in] enable pwm enable/disabled state value * @return On success, 0 is returned. On failure, a negative value is returned. */ -int pwm_set_enable(int device, int channel, int enable); +int pwm_set_enable(int device, int channel, bool enable); /** * @brief pwm_get_enable() checks if pwm state is enabled. @@ -120,6 +120,6 @@ int pwm_set_enable(int device, int channel, int enable); * @param[out] enable pwm enable/disabled state value * @return On success, 0 is returned. On failure, a negative value is returned. */ -int pwm_get_enable(int device, int channel, int *enable); +int pwm_get_enable(int device, int channel, bool *enable); #endif /* __PWM_H__ */ diff --git a/src/interface/pwm.c b/src/interface/pwm.c index f3929cb..e4765f0 100644 --- a/src/interface/pwm.c +++ b/src/interface/pwm.c @@ -20,6 +20,7 @@ #include #include #include +#include #include "pwm.h" #include "peripheral_common.h" @@ -267,7 +268,7 @@ int pwm_get_polarity(int device, int channel, pwm_polarity_e *polarity) return 0; } -int pwm_set_enable(int device, int channel, int enable) +int pwm_set_enable(int device, int channel, bool enable) { int fd, len, status; char pwm_buf[PWM_BUF_MAX] = {0}; @@ -295,7 +296,7 @@ int pwm_set_enable(int device, int channel, int enable) return 0; } -int pwm_get_enable(int device, int channel, int *enable) +int pwm_get_enable(int device, int channel, bool *enable) { int fd, result, status; char pwm_buf[PWM_BUF_MAX] = {0}; @@ -317,7 +318,7 @@ int pwm_get_enable(int device, int channel, int *enable) return -EIO; } result = atoi(pwm_buf); - enable = &result; + *enable = !!result; close(fd); return 0; -- 2.34.1