From b05370568d2374fe30240db33e4cb8d4e92b9ad9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=81=E9=B9=8F=E8=BE=89?= Date: Mon, 25 Nov 2024 16:49:22 +0800 Subject: [PATCH 1/4] change MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 梁鹏辉 --- framework/model/misc/vibrator/driver/src/vibrator_driver.c | 3 +++ framework/model/misc/vibrator/driver/src/vibrator_haptic.c | 1 + 2 files changed, 4 insertions(+) diff --git a/framework/model/misc/vibrator/driver/src/vibrator_driver.c b/framework/model/misc/vibrator/driver/src/vibrator_driver.c index a84f9997a..b783cf5fc 100644 --- a/framework/model/misc/vibrator/driver/src/vibrator_driver.c +++ b/framework/model/misc/vibrator/driver/src/vibrator_driver.c @@ -122,6 +122,7 @@ static void VibratorWorkEntry(void *para) static int32_t StartOnce(struct HdfSBuf *data, struct HdfSBuf *reply) { + HDF_LOGI("%s_%d: in", __func__, __LINE__); uint32_t duration; int32_t ret; struct VibratorEffectCfg config; @@ -150,7 +151,9 @@ static int32_t StartOnce(struct HdfSBuf *data, struct HdfSBuf *reply) config.duration = duration; config.effect = NULL; + HDF_LOGI("%s_%d: ->StartHaptic start", __func__, __LINE__); ret = StartHaptic(&config); + HDF_LOGI("%s_%d: ->StartHaptic finish", __func__, __LINE__); if (ret != HDF_SUCCESS) { HDF_LOGE("%s: start haptic failed!", __func__); return ret; diff --git a/framework/model/misc/vibrator/driver/src/vibrator_haptic.c b/framework/model/misc/vibrator/driver/src/vibrator_haptic.c index 9caff32ee..31ff8975f 100644 --- a/framework/model/misc/vibrator/driver/src/vibrator_haptic.c +++ b/framework/model/misc/vibrator/driver/src/vibrator_haptic.c @@ -291,6 +291,7 @@ static int32_t GetHapticSeqByEffect(struct VibratorEffectCfg *effectCfg) int32_t StartHaptic(struct VibratorEffectCfg *effectCfg) { + HDF_LOGI("%s: in", __func__); int32_t ret; uint32_t duration; struct VibratorHapticData *hapticData = GetHapticData(); -- Gitee From f0f6e2908ef0d02062f2f96f48876160324fec0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=81=E9=B9=8F=E8=BE=89?= Date: Tue, 26 Nov 2024 10:23:57 +0800 Subject: [PATCH 2/4] change MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 梁鹏辉 --- framework/model/misc/vibrator/driver/src/vibrator_driver.c | 3 --- framework/model/misc/vibrator/driver/src/vibrator_haptic.c | 1 - 2 files changed, 4 deletions(-) diff --git a/framework/model/misc/vibrator/driver/src/vibrator_driver.c b/framework/model/misc/vibrator/driver/src/vibrator_driver.c index b783cf5fc..a84f9997a 100644 --- a/framework/model/misc/vibrator/driver/src/vibrator_driver.c +++ b/framework/model/misc/vibrator/driver/src/vibrator_driver.c @@ -122,7 +122,6 @@ static void VibratorWorkEntry(void *para) static int32_t StartOnce(struct HdfSBuf *data, struct HdfSBuf *reply) { - HDF_LOGI("%s_%d: in", __func__, __LINE__); uint32_t duration; int32_t ret; struct VibratorEffectCfg config; @@ -151,9 +150,7 @@ static int32_t StartOnce(struct HdfSBuf *data, struct HdfSBuf *reply) config.duration = duration; config.effect = NULL; - HDF_LOGI("%s_%d: ->StartHaptic start", __func__, __LINE__); ret = StartHaptic(&config); - HDF_LOGI("%s_%d: ->StartHaptic finish", __func__, __LINE__); if (ret != HDF_SUCCESS) { HDF_LOGE("%s: start haptic failed!", __func__); return ret; diff --git a/framework/model/misc/vibrator/driver/src/vibrator_haptic.c b/framework/model/misc/vibrator/driver/src/vibrator_haptic.c index 31ff8975f..9caff32ee 100644 --- a/framework/model/misc/vibrator/driver/src/vibrator_haptic.c +++ b/framework/model/misc/vibrator/driver/src/vibrator_haptic.c @@ -291,7 +291,6 @@ static int32_t GetHapticSeqByEffect(struct VibratorEffectCfg *effectCfg) int32_t StartHaptic(struct VibratorEffectCfg *effectCfg) { - HDF_LOGI("%s: in", __func__); int32_t ret; uint32_t duration; struct VibratorHapticData *hapticData = GetHapticData(); -- Gitee From 963127635550707d2f026f1a8c146431e645e408 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=81=E9=B9=8F=E8=BE=89?= Date: Tue, 26 Nov 2024 11:32:44 +0800 Subject: [PATCH 3/4] change MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 梁鹏辉 --- .../misc/vibrator/driver/src/vibrator_driver.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/framework/model/misc/vibrator/driver/src/vibrator_driver.c b/framework/model/misc/vibrator/driver/src/vibrator_driver.c index a84f9997a..3b4b1a87b 100644 --- a/framework/model/misc/vibrator/driver/src/vibrator_driver.c +++ b/framework/model/misc/vibrator/driver/src/vibrator_driver.c @@ -137,8 +137,12 @@ static int32_t StartOnce(struct HdfSBuf *data, struct HdfSBuf *reply) } if (drvData->mode != VIBRATOR_MODE_BUTT) { - HDF_LOGI("%s: vibrater haptic is busy now, please stop first!", __func__); - return HDF_ERR_DEVICE_BUSY; + HDF_LOGI("%s: vibrater haptic is busy now, stop first!", __func__); + ret = StopHaptic(); + if (ret != HDF_SUCCESS) { + HDF_LOGE("%s: stop haptic failed!", __func__); + return ret; + } } (void)OsalMutexLock(&drvData->mutex); @@ -174,8 +178,12 @@ static int32_t StartEffect(struct HdfSBuf *data, struct HdfSBuf *reply) CHECK_VIBRATOR_NULL_PTR_RETURN_VALUE(effect, HDF_FAILURE); if (drvData->mode != VIBRATOR_MODE_BUTT) { - HDF_LOGI("%s: vibrater haptic is busy now, please stop first!", __func__); - return HDF_ERR_DEVICE_BUSY; + HDF_LOGI("%s: vibrater haptic is busy now, stop first!", __func__); + ret = StopHaptic(); + if (ret != HDF_SUCCESS) { + HDF_LOGE("%s: stop haptic failed!", __func__); + return ret; + } } (void)OsalMutexLock(&drvData->mutex); -- Gitee From 80991567dc03ccf72ea38c95f8d14d753f8a4b6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=81=E9=B9=8F=E8=BE=89?= Date: Tue, 26 Nov 2024 17:18:17 +0800 Subject: [PATCH 4/4] change MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 梁鹏辉 --- .../driver/include/vibrator_driver_type.h | 1 + .../vibrator/driver/src/vibrator_driver.c | 20 +++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/framework/model/misc/vibrator/driver/include/vibrator_driver_type.h b/framework/model/misc/vibrator/driver/include/vibrator_driver_type.h index 039b510e4..05a3cd758 100644 --- a/framework/model/misc/vibrator/driver/include/vibrator_driver_type.h +++ b/framework/model/misc/vibrator/driver/include/vibrator_driver_type.h @@ -57,6 +57,7 @@ enum VibratorDrvIoCmd { VIBRATOR_DRV_IO_STOP = 2, VIBRATOR_DRV_IO_GET_INFO = 3, VIBRATOR_DRV_IO_ENABLE_MODULATION_PARAMETER = 4, + VIBRATOR_DRV_IO_IS_VIBRATOR_RUNNING = 5, VIBRATOR_DRV_IO_END, }; diff --git a/framework/model/misc/vibrator/driver/src/vibrator_driver.c b/framework/model/misc/vibrator/driver/src/vibrator_driver.c index 3b4b1a87b..6734087b0 100644 --- a/framework/model/misc/vibrator/driver/src/vibrator_driver.c +++ b/framework/model/misc/vibrator/driver/src/vibrator_driver.c @@ -163,6 +163,25 @@ static int32_t StartOnce(struct HdfSBuf *data, struct HdfSBuf *reply) return HDF_SUCCESS; } +static int32_t IsVibratorRunning(struct HdfSBuf *data, struct HdfSBuf *reply) +{ + (void)data; + struct VibratorDriverData *drvData; + drvData = GetVibratorDrvData(); + CHECK_VIBRATOR_NULL_PTR_RETURN_VALUE(drvData, HDF_ERR_INVALID_PARAM); + CHECK_VIBRATOR_NULL_PTR_RETURN_VALUE(reply, HDF_ERR_INVALID_PARAM); + + int32_t state = drvData->mode == VIBRATOR_MODE_BUTT ? 0 : 1; + HDF_LOGI("%s: state %d", __func__, state); + + if (!HdfSbufWriteInt32(reply, state)) { + HDF_LOGE("%s: write state failed!", __func__); + return HDF_FAILURE; + } + + return HDF_SUCCESS; +} + static int32_t StartEffect(struct HdfSBuf *data, struct HdfSBuf *reply) { int32_t ret; @@ -322,6 +341,7 @@ static struct VibratorCmdHandleList g_vibratorCmdHandle[] = { {VIBRATOR_DRV_IO_STOP, Stop}, {VIBRATOR_DRV_IO_GET_INFO, GetVibratorInfo}, {VIBRATOR_DRV_IO_ENABLE_MODULATION_PARAMETER, EnableModulationParameter}, + {VIBRATOR_DRV_IO_IS_VIBRATOR_RUNNING, IsVibratorRunning}, }; static int32_t DispatchVibrator(struct HdfDeviceIoClient *client, -- Gitee