1 /* 2 * Copyright (c) 2025 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 OHOS_HDI_VIBRATOR_V1_1_VIBRATORINTERFACEIMPL_VDI_H 17 #define OHOS_HDI_VIBRATOR_V1_1_VIBRATORINTERFACEIMPL_VDI_H 18 19 #include <stdint.h> 20 #include <vector> 21 #include <hdf_base.h> 22 #include "hdf_load_vdi.h" 23 #include "v2_0/ivibrator_interface.h" 24 #include "hdf_log.h" 25 26 namespace OHOS { 27 namespace HDI { 28 namespace Vibrator { 29 namespace V1_1 { 30 using namespace OHOS::HDI::Vibrator::V2_0; 31 32 enum HdfVibratorStatusVdi { 33 VDI_VIBRATOR_SUCCESS = 0, 34 VDI_VIBRATOR_NOT_PERIOD = -1, 35 VDI_VIBRATOR_NOT_INTENSITY = -2, 36 VDI_VIBRATOR_NOT_FREQUENCY = -3, 37 }; 38 39 enum HdfVibratorModeVdi { 40 VDI_VIBRATOR_MODE_ONCE = 0, 41 VDI_VIBRATOR_MODE_PRESET = 1, 42 VDI_VIBRATOR_MODE_HDHAPTIC = 2, 43 VDI_VIBRATOR_MODE_BUTT 44 }; 45 46 enum HdfEffectTypeVdi { 47 VDI_EFFECT_TYPE_TIME, 48 VDI_EFFECT_TYPE_PRIMITIVE, 49 VDI_EFFECT_TYPE_BUTT, 50 }; 51 52 enum EVENT_TYPEVdi { 53 VDI_CONTINUOUS = 0, 54 VDI_TRANSIENT = 1, 55 VDI_UNKNOWN = -3, 56 }; 57 58 struct HdfVibratorInfoVdi { 59 bool isSupportIntensity; 60 bool isSupportFrequency; 61 uint16_t intensityMaxValue; 62 uint16_t intensityMinValue; 63 int16_t frequencyMaxValue; 64 int16_t frequencyMinValue; 65 int32_t deviceId; 66 int32_t vibratorId; 67 int32_t position; 68 int32_t isLocal; 69 }; 70 71 struct HdfTimeEffectVdi { 72 int32_t delay; 73 int32_t time; 74 uint16_t intensity; 75 int16_t frequency; 76 }; 77 78 struct HdfPrimitiveEffectVdi { 79 int32_t delay; 80 int32_t effectId; 81 uint16_t intensity; 82 }; 83 84 union HdfEffectVdi { 85 struct HdfTimeEffectVdi timeEffect; 86 struct HdfPrimitiveEffectVdi primitiveEffect; 87 }; 88 89 struct HdfCompositeEffectVdi { 90 int32_t type; 91 std::vector<HdfEffectVdi> effects; 92 }; 93 94 struct HdfEffectInfoVdi { 95 int32_t duration; 96 bool isSupportEffect; 97 }; 98 99 struct CurvePointVdi { 100 int32_t time; 101 int32_t intensity; 102 int32_t frequency; 103 }; 104 105 struct HapticEventVdi { 106 EVENT_TYPEVdi type; 107 int32_t time; 108 int32_t duration; 109 int32_t intensity; 110 int32_t frequency; 111 int32_t index; 112 int32_t pointNum; 113 std::vector<CurvePointVdi> points; 114 }; 115 116 struct HapticPaketVdi { 117 int32_t time; 118 int32_t eventNum; 119 std::vector<HapticEventVdi> events; 120 }; 121 122 struct VibratorPackageVdi { 123 int32_t patternNum; 124 int32_t packageduration; 125 std::vector<HapticPaketVdi> patterns; 126 }; 127 128 struct HapticCapacityVdi { 129 bool isSupportHdHaptic; 130 bool isSupportPresetMapping; 131 bool isSupportTimeDelay; 132 int32_t vibratorId; 133 bool reserved0; 134 int32_t reserved1; 135 }; 136 137 #define HDI_VIBRATOR_VDI_LIBNAME "libhdi_vibrator_impl.z.so" 138 139 class IVibratorInterfaceVdi { 140 public: 141 virtual ~IVibratorInterfaceVdi() = default; 142 virtual int32_t Init() = 0; StartOnce(uint32_t duration)143 virtual int32_t StartOnce(uint32_t duration) 144 { 145 HDF_LOGI("%{public}s: only in Hdi return", __func__); 146 return HDF_SUCCESS; 147 }; Start(const std::string & effectType)148 virtual int32_t Start(const std::string &effectType) 149 { 150 HDF_LOGI("%{public}s: only in Hdi return", __func__); 151 return HDF_SUCCESS; 152 }; Stop(HdfVibratorModeVdi mode)153 virtual int32_t Stop(HdfVibratorModeVdi mode) 154 { 155 HDF_LOGI("%{public}s: only in Hdi return", __func__); 156 return HDF_SUCCESS; 157 }; GetVibratorInfo(std::vector<HdfVibratorInfoVdi> & vibratorInfo)158 virtual int32_t GetVibratorInfo(std::vector<HdfVibratorInfoVdi> &vibratorInfo) 159 { 160 HDF_LOGI("%{public}s: only in Hdi return", __func__); 161 return HDF_SUCCESS; 162 }; GetDeviceVibratorInfo(std::vector<HdfVibratorInfoVdi> & vibratorInfo)163 virtual int32_t GetDeviceVibratorInfo(std::vector<HdfVibratorInfoVdi> &vibratorInfo) 164 { 165 HDF_LOGI("%{public}s: only in Hdi return", __func__); 166 return HDF_SUCCESS; 167 }; EnableVibratorModulation(uint32_t duration,uint16_t intensity,int16_t frequency)168 virtual int32_t EnableVibratorModulation(uint32_t duration, uint16_t intensity, int16_t frequency) 169 { 170 HDF_LOGI("%{public}s: only in Hdi return", __func__); 171 return HDF_SUCCESS; 172 }; EnableCompositeEffect(const HdfCompositeEffectVdi & effect)173 virtual int32_t EnableCompositeEffect(const HdfCompositeEffectVdi& effect) 174 { 175 HDF_LOGI("%{public}s: only in Hdi return", __func__); 176 return HDF_SUCCESS; 177 }; GetEffectInfo(const std::string & effectType,HdfEffectInfoVdi & effectInfo)178 virtual int32_t GetEffectInfo(const std::string &effectType, HdfEffectInfoVdi &effectInfo) 179 { 180 HDF_LOGI("%{public}s: only in Hdi return", __func__); 181 return HDF_SUCCESS; 182 }; IsVibratorRunning(bool & state)183 virtual int32_t IsVibratorRunning(bool& state) 184 { 185 HDF_LOGI("%{public}s: only in Hdi return", __func__); 186 return HDF_SUCCESS; 187 }; PlayHapticPattern(const HapticPaketVdi & pkg)188 virtual int32_t PlayHapticPattern(const HapticPaketVdi& pkg) 189 { 190 HDF_LOGI("%{public}s: only in Hdi return", __func__); 191 return HDF_SUCCESS; 192 }; GetHapticCapacity(HapticCapacityVdi & hapticCapacity)193 virtual int32_t GetHapticCapacity(HapticCapacityVdi& hapticCapacity) 194 { 195 HDF_LOGI("%{public}s: only in Hdi return", __func__); 196 return HDF_SUCCESS; 197 }; GetHapticStartUpTime(int32_t mode,int32_t & startUpTime)198 virtual int32_t GetHapticStartUpTime(int32_t mode, int32_t& startUpTime) 199 { 200 HDF_LOGI("%{public}s: only in Hdi return", __func__); 201 return HDF_SUCCESS; 202 }; StartByIntensity(const std::string & effectType,uint16_t intensity)203 virtual int32_t StartByIntensity(const std::string& effectType, uint16_t intensity) 204 { 205 HDF_LOGI("%{public}s: only in Hdi return", __func__); 206 return HDF_SUCCESS; 207 }; GetAllWaveInfo(int32_t vibratorId,std::vector<OHOS::HDI::Vibrator::V2_0::HdfWaveInformation> & info)208 virtual int32_t GetAllWaveInfo(int32_t vibratorId, std::vector<OHOS::HDI::Vibrator::V2_0::HdfWaveInformation> &info) 209 { 210 HDF_LOGI("%{public}s: only in Hdi return", __func__); 211 return HDF_SUCCESS; 212 }; 213 214 //V2_0 StartOnce(const OHOS::HDI::Vibrator::V2_0::DeviceVibratorInfo & deviceVibratorInfo,uint32_t duration)215 virtual int32_t StartOnce(const OHOS::HDI::Vibrator::V2_0::DeviceVibratorInfo& deviceVibratorInfo, 216 uint32_t duration) 217 { 218 HDF_LOGI("%{public}s: only in Hdi return", __func__); 219 return HDF_SUCCESS; 220 }; Start(const OHOS::HDI::Vibrator::V2_0::DeviceVibratorInfo & deviceVibratorInfo,const std::string & effectType)221 virtual int32_t Start(const OHOS::HDI::Vibrator::V2_0::DeviceVibratorInfo& deviceVibratorInfo, 222 const std::string &effectType) 223 { 224 HDF_LOGI("%{public}s: only in Hdi return", __func__); 225 return HDF_SUCCESS; 226 }; Stop(const OHOS::HDI::Vibrator::V2_0::DeviceVibratorInfo & deviceVibratorInfo,HdfVibratorModeVdi mode)227 virtual int32_t Stop(const OHOS::HDI::Vibrator::V2_0::DeviceVibratorInfo& deviceVibratorInfo, 228 HdfVibratorModeVdi mode) 229 { 230 HDF_LOGI("%{public}s: only in Hdi return", __func__); 231 return HDF_SUCCESS; 232 }; GetVibratorIdSingle(const OHOS::HDI::Vibrator::V2_0::DeviceVibratorInfo & deviceVibratorInfo,std::vector<HdfVibratorInfoVdi> & vibratorInfo)233 int32_t GetVibratorIdSingle(const OHOS::HDI::Vibrator::V2_0::DeviceVibratorInfo& deviceVibratorInfo, 234 std::vector<HdfVibratorInfoVdi> &vibratorInfo) 235 { 236 HDF_LOGI("%{public}s: only in Hdi return", __func__); 237 return HDF_SUCCESS; 238 }; EnableVibratorModulation(const OHOS::HDI::Vibrator::V2_0::DeviceVibratorInfo & deviceVibratorInfo,uint32_t duration,uint16_t intensity,int16_t frequency)239 virtual int32_t EnableVibratorModulation(const OHOS::HDI::Vibrator::V2_0::DeviceVibratorInfo& deviceVibratorInfo, 240 uint32_t duration, uint16_t intensity, int16_t frequency) 241 { 242 HDF_LOGI("%{public}s: only in Hdi return", __func__); 243 return HDF_SUCCESS; 244 }; EnableCompositeEffect(const OHOS::HDI::Vibrator::V2_0::DeviceVibratorInfo & deviceVibratorInfo,const HdfCompositeEffectVdi & effect)245 virtual int32_t EnableCompositeEffect(const OHOS::HDI::Vibrator::V2_0::DeviceVibratorInfo& deviceVibratorInfo, 246 const HdfCompositeEffectVdi& effect) 247 { 248 HDF_LOGI("%{public}s: only in Hdi return", __func__); 249 return HDF_SUCCESS; 250 }; GetEffectInfo(const OHOS::HDI::Vibrator::V2_0::DeviceVibratorInfo & deviceVibratorInfo,const std::string & effectType,HdfEffectInfoVdi & effectInfo)251 virtual int32_t GetEffectInfo(const OHOS::HDI::Vibrator::V2_0::DeviceVibratorInfo& deviceVibratorInfo, 252 const std::string &effectType, HdfEffectInfoVdi &effectInfo) 253 { 254 HDF_LOGI("%{public}s: only in Hdi return", __func__); 255 return HDF_SUCCESS; 256 }; IsVibratorRunning(const OHOS::HDI::Vibrator::V2_0::DeviceVibratorInfo & deviceVibratorInfo,bool & state)257 virtual int32_t IsVibratorRunning(const OHOS::HDI::Vibrator::V2_0::DeviceVibratorInfo& deviceVibratorInfo, 258 bool& state) 259 { 260 HDF_LOGI("%{public}s: only in Hdi return", __func__); 261 return HDF_SUCCESS; 262 }; PlayHapticPattern(const OHOS::HDI::Vibrator::V2_0::DeviceVibratorInfo & deviceVibratorInfo,const HapticPaketVdi & pkg)263 virtual int32_t PlayHapticPattern(const OHOS::HDI::Vibrator::V2_0::DeviceVibratorInfo& deviceVibratorInfo, 264 const HapticPaketVdi& pkg) 265 { 266 HDF_LOGI("%{public}s: only in Hdi return", __func__); 267 return HDF_SUCCESS; 268 }; GetHapticCapacity(const OHOS::HDI::Vibrator::V2_0::DeviceVibratorInfo & deviceVibratorInfo,HapticCapacityVdi & hapticCapacity)269 virtual int32_t GetHapticCapacity(const OHOS::HDI::Vibrator::V2_0::DeviceVibratorInfo& deviceVibratorInfo, 270 HapticCapacityVdi& hapticCapacity) 271 { 272 HDF_LOGI("%{public}s: only in Hdi return", __func__); 273 return HDF_SUCCESS; 274 }; GetHapticStartUpTime(const OHOS::HDI::Vibrator::V2_0::DeviceVibratorInfo & deviceVibratorInfo,int32_t mode,int32_t & startUpTime)275 virtual int32_t GetHapticStartUpTime(const OHOS::HDI::Vibrator::V2_0::DeviceVibratorInfo& deviceVibratorInfo, 276 int32_t mode, int32_t& startUpTime) 277 { 278 HDF_LOGI("%{public}s: only in Hdi return", __func__); 279 return HDF_SUCCESS; 280 }; StartByIntensity(const OHOS::HDI::Vibrator::V2_0::DeviceVibratorInfo & deviceVibratorInfo,const std::string & effectType,uint16_t intensity)281 virtual int32_t StartByIntensity(const OHOS::HDI::Vibrator::V2_0::DeviceVibratorInfo& deviceVibratorInfo, 282 const std::string& effectType, uint16_t intensity) 283 { 284 HDF_LOGI("%{public}s: only in Hdi return", __func__); 285 return HDF_SUCCESS; 286 }; GetAllWaveInfo(const OHOS::HDI::Vibrator::V2_0::DeviceVibratorInfo & deviceVibratorInfo,std::vector<OHOS::HDI::Vibrator::V2_0::HdfWaveInformation> & info)287 virtual int32_t GetAllWaveInfo(const OHOS::HDI::Vibrator::V2_0::DeviceVibratorInfo& deviceVibratorInfo, 288 std::vector<OHOS::HDI::Vibrator::V2_0::HdfWaveInformation> &info) 289 { 290 HDF_LOGI("%{public}s: only in Hdi return", __func__); 291 return HDF_SUCCESS; 292 }; GetDeviceVibratorInfo(const OHOS::HDI::Vibrator::V2_0::DeviceVibratorInfo & deviceVibratorInfo,std::vector<HdfVibratorInfoVdi> & vibratorInfo)293 virtual int32_t GetDeviceVibratorInfo(const OHOS::HDI::Vibrator::V2_0::DeviceVibratorInfo& deviceVibratorInfo, 294 std::vector<HdfVibratorInfoVdi> &vibratorInfo) 295 { 296 HDF_LOGI("%{public}s: only in Hdi return", __func__); 297 return HDF_SUCCESS; 298 }; RegVibratorPlugCallback(const sptr<V2_0::IVibratorPlugCallback> & callbackObj)299 virtual int32_t RegVibratorPlugCallback(const sptr<V2_0::IVibratorPlugCallback> &callbackObj) 300 { 301 HDF_LOGI("%{public}s: only in Hdi return", __func__); 302 return HDF_SUCCESS; 303 }; UnRegVibratorPlugCallback(const sptr<V2_0::IVibratorPlugCallback> & callbackObj)304 virtual int32_t UnRegVibratorPlugCallback(const sptr<V2_0::IVibratorPlugCallback> &callbackObj) 305 { 306 HDF_LOGI("%{public}s: only in Hdi return", __func__); 307 return HDF_SUCCESS; 308 }; 309 PlayPatternBySessionId(const OHOS::HDI::Vibrator::V2_0::DeviceVibratorInfo & deviceVibratorInfo,uint32_t sessionId,const HapticPaketVdi & hapticPaketVdi)310 virtual int32_t PlayPatternBySessionId( 311 const OHOS::HDI::Vibrator::V2_0::DeviceVibratorInfo& deviceVibratorInfo, 312 uint32_t sessionId, 313 const HapticPaketVdi& hapticPaketVdi) 314 { 315 HDF_LOGI("%{public}s: only in Hdi return", __func__); 316 return HDF_SUCCESS; 317 }; 318 PlayPackageBySession(const OHOS::HDI::Vibrator::V2_0::DeviceVibratorInfo & deviceVibratorInfo,uint32_t sessionId,const VibratorPackageVdi & vibratorPackageVdi)319 virtual int32_t PlayPackageBySession(const OHOS::HDI::Vibrator::V2_0::DeviceVibratorInfo& deviceVibratorInfo, 320 uint32_t sessionId, 321 const VibratorPackageVdi& vibratorPackageVdi) 322 { 323 HDF_LOGI("%{public}s: only in Hdi return", __func__); 324 return HDF_SUCCESS; 325 }; 326 StopVibrateBySessionId(const OHOS::HDI::Vibrator::V2_0::DeviceVibratorInfo & deviceVibratorInfo,uint32_t sessionId)327 virtual int32_t StopVibrateBySessionId( 328 const OHOS::HDI::Vibrator::V2_0::DeviceVibratorInfo& deviceVibratorInfo, 329 uint32_t sessionId) 330 { 331 HDF_LOGI("%{public}s: only in Hdi return", __func__); 332 return HDF_SUCCESS; 333 }; 334 }; 335 struct VdiWrapperVibrator { 336 struct HdfVdiBase base; 337 IVibratorInterfaceVdi *vibratorModule; 338 }; 339 } // V1_1 340 } // Vibrator 341 } // HDI 342 } // OHOS 343 344 #endif // OHOS_HDI_VIBRATOR_V1_1_VIBRATORINTERFACEIMPL_VDI_H