1 /* 2 * Copyright (c) 2021 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef HAL_VIBRATOR_CONTROLLER_H 17 #define HAL_VIBRATOR_CONTROLLER_H 18 19 #include "hdf_io_service_if.h" 20 #include "osal_mutex.h" 21 #include "vibrator_if.h" 22 #include "vibrator_type.h" 23 24 #define EFFECT_TYPE_MAX 9 25 26 #define CHECK_NULL_PTR_RETURN_VALUE(ptr, ret) do { \ 27 if ((ptr) == NULL) { \ 28 HDF_LOGE("%s:line:%{public}d pointer is null and return ret", __func__, __LINE__); \ 29 return (ret); \ 30 } \ 31 } while (0) 32 33 #define CHECK_NULL_PTR_RETURN(ptr) do { \ 34 if ((ptr) == NULL) { \ 35 HDF_LOGE("%s:line:%{public}d pointer is null and return", __func__, __LINE__); \ 36 return; \ 37 } \ 38 } while (0) 39 40 enum VibratorIoCmd { 41 VIBRATOR_IO_START_ONCE = 0, 42 VIBRATOR_IO_START_EFFECT = 1, 43 VIBRATOR_IO_STOP = 2, 44 VIBRATOR_IO_GET_INFO = 3, 45 VIBRATOR_IO_ENABLE_MODULATION_PARAMETER = 4, 46 VIBRATOR_IO_END, 47 }; 48 49 struct VibratorDevice { 50 bool initState; 51 struct VibratorInfo vibratorInfoEntry; 52 struct HdfIoService *ioService; 53 struct OsalMutex mutex; 54 }; 55 56 struct Map { 57 char *effectName; 58 bool issupport; 59 int duration; 60 }; 61 62 struct Map g_effectmap[EFFECT_TYPE_MAX] = { 63 {"haptic.clock.timer", true, 2000}, 64 {"haptic.long_press.heavy", true, 80}, 65 {"haptic.long_press.medium", true, 80}, 66 {"haptic.long_press.light", true, 80}, 67 {"haptic.fail", true, 60}, 68 {"haptic.charging", true, 100}, 69 {"haptic.slide.light", true, 10}, 70 {"haptic.threshold", true, 42}, 71 {"haptic.default.effect", false, 0}, 72 }; 73 74 #endif /* HAL_VIBRATOR_CONTROLLER_H */