• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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