1 #ifndef HIDL_GENERATED_ANDROID_HARDWARE_AUDIO_EFFECT_V7_0_IEFFECT_H
2 #define HIDL_GENERATED_ANDROID_HARDWARE_AUDIO_EFFECT_V7_0_IEFFECT_H
3 
4 #include <android/hardware/audio/common/7.0/types.h>
5 #include <android/hardware/audio/effect/7.0/IEffectBufferProviderCallback.h>
6 #include <android/hardware/audio/effect/7.0/types.h>
7 #include <android/hidl/base/1.0/IBase.h>
8 
9 #include <android/hidl/manager/1.0/IServiceNotification.h>
10 
11 #include <hidl/HidlSupport.h>
12 #include <hidl/MQDescriptor.h>
13 #include <hidl/Status.h>
14 #include <utils/NativeHandle.h>
15 #include <utils/misc.h>
16 
17 namespace android {
18 namespace hardware {
19 namespace audio {
20 namespace effect {
21 namespace V7_0 {
22 
23 struct IEffect : public ::android::hidl::base::V1_0::IBase {
24     /**
25      * Type tag for use in template logic that indicates this is a 'pure' class.
26      */
27     typedef ::android::hardware::details::i_tag _hidl_tag;
28 
29     /**
30      * Fully qualified interface name: "[email protected]::IEffect"
31      */
32     static const char* descriptor;
33 
34     /**
35      * Returns whether this object's implementation is outside of the current process.
36      */
isRemoteIEffect37     virtual bool isRemote() const override { return false; }
38 
39     /**
40      * Initialize effect engine--all configurations return to default.
41      *
42      * @return retval operation completion status.
43      */
44     virtual ::android::hardware::Return<::android::hardware::audio::effect::V7_0::Result> init() = 0;
45 
46     /**
47      * Apply new audio parameters configurations for input and output buffers.
48      * The provider callbacks may be empty, but in this case the buffer
49      * must be provided in the EffectConfig structure.
50      *
51      * @param config configuration descriptor.
52      * @param inputBufferProvider optional buffer provider reference.
53      * @param outputBufferProvider optional buffer provider reference.
54      * @return retval operation completion status.
55      */
56     virtual ::android::hardware::Return<::android::hardware::audio::effect::V7_0::Result> setConfig(const ::android::hardware::audio::effect::V7_0::EffectConfig& config, const ::android::sp<::android::hardware::audio::effect::V7_0::IEffectBufferProviderCallback>& inputBufferProvider, const ::android::sp<::android::hardware::audio::effect::V7_0::IEffectBufferProviderCallback>& outputBufferProvider) = 0;
57 
58     /**
59      * Reset the effect engine. Keep configuration but resets state and buffer
60      * content.
61      *
62      * @return retval operation completion status.
63      */
64     virtual ::android::hardware::Return<::android::hardware::audio::effect::V7_0::Result> reset() = 0;
65 
66     /**
67      * Enable processing.
68      *
69      * @return retval operation completion status.
70      */
71     virtual ::android::hardware::Return<::android::hardware::audio::effect::V7_0::Result> enable() = 0;
72 
73     /**
74      * Disable processing.
75      *
76      * @return retval operation completion status.
77      */
78     virtual ::android::hardware::Return<::android::hardware::audio::effect::V7_0::Result> disable() = 0;
79 
80     /**
81      * Set the rendering device the audio output path is connected to.  The
82      * effect implementation must set EFFECT_FLAG_DEVICE_IND flag in its
83      * descriptor to receive this command when the device changes.
84      *
85      * Note: this method is only supported for effects inserted into
86      *       the output chain.
87      *
88      * @param device output device specification.
89      * @return retval operation completion status.
90      */
91     virtual ::android::hardware::Return<::android::hardware::audio::effect::V7_0::Result> setDevice(const ::android::hardware::audio::common::V7_0::DeviceAddress& device) = 0;
92 
93     /**
94      * Return callback for setAndGetVolume
95      */
96     using setAndGetVolume_cb = std::function<void(::android::hardware::audio::effect::V7_0::Result retval, const ::android::hardware::hidl_vec<uint32_t>& result)>;
97     /**
98      * Set and get volume. Used by audio framework to delegate volume control to
99      * effect engine. The effect implementation must set EFFECT_FLAG_VOLUME_CTRL
100      * flag in its descriptor to receive this command. The effect engine must
101      * return the volume that should be applied before the effect is
102      * processed. The overall volume (the volume actually applied by the effect
103      * engine multiplied by the returned value) should match the value indicated
104      * in the command.
105      *
106      * @param volumes vector containing volume for each channel defined in
107      *                EffectConfig for output buffer expressed in 8.24 fixed
108      *                point format.
109      * @return result updated volume values.
110      * @return retval operation completion status.
111      */
112     virtual ::android::hardware::Return<void> setAndGetVolume(const ::android::hardware::hidl_vec<uint32_t>& volumes, setAndGetVolume_cb _hidl_cb) = 0;
113 
114     /**
115      * Notify the effect of the volume change. The effect implementation must
116      * set EFFECT_FLAG_VOLUME_IND flag in its descriptor to receive this
117      * command.
118      *
119      * @param volumes vector containing volume for each channel defined in
120      *                EffectConfig for output buffer expressed in 8.24 fixed
121      *                point format.
122      * @return retval operation completion status.
123      */
124     virtual ::android::hardware::Return<::android::hardware::audio::effect::V7_0::Result> volumeChangeNotification(const ::android::hardware::hidl_vec<uint32_t>& volumes) = 0;
125 
126     /**
127      * Set the audio mode. The effect implementation must set
128      * EFFECT_FLAG_AUDIO_MODE_IND flag in its descriptor to receive this command
129      * when the audio mode changes.
130      *
131      * @param mode desired audio mode.
132      * @return retval operation completion status.
133      */
134     virtual ::android::hardware::Return<::android::hardware::audio::effect::V7_0::Result> setAudioMode(::android::hardware::audio::common::V7_0::AudioMode mode) = 0;
135 
136     /**
137      * Apply new audio parameters configurations for input and output buffers of
138      * reverse stream.  An example of reverse stream is the echo reference
139      * supplied to an Acoustic Echo Canceler.
140      *
141      * @param config configuration descriptor.
142      * @param inputBufferProvider optional buffer provider reference.
143      * @param outputBufferProvider optional buffer provider reference.
144      * @return retval operation completion status.
145      */
146     virtual ::android::hardware::Return<::android::hardware::audio::effect::V7_0::Result> setConfigReverse(const ::android::hardware::audio::effect::V7_0::EffectConfig& config, const ::android::sp<::android::hardware::audio::effect::V7_0::IEffectBufferProviderCallback>& inputBufferProvider, const ::android::sp<::android::hardware::audio::effect::V7_0::IEffectBufferProviderCallback>& outputBufferProvider) = 0;
147 
148     /**
149      * Set the capture device the audio input path is connected to. The effect
150      * implementation must set EFFECT_FLAG_DEVICE_IND flag in its descriptor to
151      * receive this command when the device changes.
152      *
153      * Note: this method is only supported for effects inserted into
154      *       the input chain.
155      *
156      * @param device input device specification.
157      * @return retval operation completion status.
158      */
159     virtual ::android::hardware::Return<::android::hardware::audio::effect::V7_0::Result> setInputDevice(const ::android::hardware::audio::common::V7_0::DeviceAddress& device) = 0;
160 
161     /**
162      * Return callback for getConfig
163      */
164     using getConfig_cb = std::function<void(::android::hardware::audio::effect::V7_0::Result retval, const ::android::hardware::audio::effect::V7_0::EffectConfig& config)>;
165     /**
166      * Read audio parameters configurations for input and output buffers.
167      *
168      * @return retval operation completion status.
169      * @return config configuration descriptor.
170      */
171     virtual ::android::hardware::Return<void> getConfig(getConfig_cb _hidl_cb) = 0;
172 
173     /**
174      * Return callback for getConfigReverse
175      */
176     using getConfigReverse_cb = std::function<void(::android::hardware::audio::effect::V7_0::Result retval, const ::android::hardware::audio::effect::V7_0::EffectConfig& config)>;
177     /**
178      * Read audio parameters configurations for input and output buffers of
179      * reverse stream.
180      *
181      * @return retval operation completion status.
182      * @return config configuration descriptor.
183      */
184     virtual ::android::hardware::Return<void> getConfigReverse(getConfigReverse_cb _hidl_cb) = 0;
185 
186     /**
187      * Return callback for getSupportedAuxChannelsConfigs
188      */
189     using getSupportedAuxChannelsConfigs_cb = std::function<void(::android::hardware::audio::effect::V7_0::Result retval, const ::android::hardware::hidl_vec<::android::hardware::audio::effect::V7_0::EffectAuxChannelsConfig>& result)>;
190     /**
191      * Queries for supported combinations of main and auxiliary channels
192      * (e.g. for a multi-microphone noise suppressor).
193      *
194      * @param maxConfigs maximum number of the combinations to return.
195      * @return retval absence of the feature support is indicated using
196      *                NOT_SUPPORTED code. RESULT_TOO_BIG is returned if
197      *                the number of supported combinations exceeds 'maxConfigs'.
198      * @return result list of configuration descriptors.
199      */
200     virtual ::android::hardware::Return<void> getSupportedAuxChannelsConfigs(uint32_t maxConfigs, getSupportedAuxChannelsConfigs_cb _hidl_cb) = 0;
201 
202     /**
203      * Return callback for getAuxChannelsConfig
204      */
205     using getAuxChannelsConfig_cb = std::function<void(::android::hardware::audio::effect::V7_0::Result retval, const ::android::hardware::audio::effect::V7_0::EffectAuxChannelsConfig& result)>;
206     /**
207      * Retrieves the current configuration of main and auxiliary channels.
208      *
209      * @return retval absence of the feature support is indicated using
210      *                NOT_SUPPORTED code.
211      * @return result configuration descriptor.
212      */
213     virtual ::android::hardware::Return<void> getAuxChannelsConfig(getAuxChannelsConfig_cb _hidl_cb) = 0;
214 
215     /**
216      * Sets the current configuration of main and auxiliary channels.
217      *
218      * @return retval operation completion status; absence of the feature
219      *                support is indicated using NOT_SUPPORTED code.
220      */
221     virtual ::android::hardware::Return<::android::hardware::audio::effect::V7_0::Result> setAuxChannelsConfig(const ::android::hardware::audio::effect::V7_0::EffectAuxChannelsConfig& config) = 0;
222 
223     /**
224      * Set the audio source the capture path is configured for (Camcorder, voice
225      * recognition...).
226      *
227      * Note: this method is only supported for effects inserted into
228      *       the input chain.
229      *
230      * @param source source descriptor.
231      * @return retval operation completion status.
232      */
233     virtual ::android::hardware::Return<::android::hardware::audio::effect::V7_0::Result> setAudioSource(const ::android::hardware::hidl_string& source) = 0;
234 
235     /**
236      * This command indicates if the playback thread the effect is attached to
237      * is offloaded or not, and updates the I/O handle of the playback thread
238      * the effect is attached to.
239      *
240      * @param param effect offload descriptor.
241      * @return retval operation completion status.
242      */
243     virtual ::android::hardware::Return<::android::hardware::audio::effect::V7_0::Result> offload(const ::android::hardware::audio::effect::V7_0::EffectOffloadParameter& param) = 0;
244 
245     /**
246      * Return callback for getDescriptor
247      */
248     using getDescriptor_cb = std::function<void(::android::hardware::audio::effect::V7_0::Result retval, const ::android::hardware::audio::effect::V7_0::EffectDescriptor& descriptor)>;
249     /**
250      * Returns the effect descriptor.
251      *
252      * @return retval operation completion status.
253      * @return descriptor effect descriptor.
254      */
255     virtual ::android::hardware::Return<void> getDescriptor(getDescriptor_cb _hidl_cb) = 0;
256 
257     /**
258      * Return callback for prepareForProcessing
259      */
260     using prepareForProcessing_cb = std::function<void(::android::hardware::audio::effect::V7_0::Result retval, const ::android::hardware::MQDescriptorSync<::android::hardware::audio::effect::V7_0::Result>& statusMQ)>;
261     /**
262      * Set up required transports for passing audio buffers to the effect.
263      *
264      * The transport consists of shared memory and a message queue for reporting
265      * effect processing operation status. The shared memory is set up
266      * separately using 'setProcessBuffers' method.
267      *
268      * Processing is requested by setting 'REQUEST_PROCESS' or
269      * 'REQUEST_PROCESS_REVERSE' EventFlags associated with the status message
270      * queue. The result of processing may be one of the following:
271      *   OK if there were no errors during processing;
272      *   INVALID_ARGUMENTS if audio buffers are invalid;
273      *   INVALID_STATE if the engine has finished the disable phase;
274      *   NOT_INITIALIZED if the audio buffers were not set;
275      *   NOT_SUPPORTED if the requested processing type is not supported by
276      *                 the effect.
277      *
278      * @return retval OK if both message queues were created successfully.
279      *                INVALID_STATE if the method was already called.
280      *                INVALID_ARGUMENTS if there was a problem setting up
281      *                                  the queue.
282      * @return statusMQ a message queue used for passing status from the effect.
283      */
284     virtual ::android::hardware::Return<void> prepareForProcessing(prepareForProcessing_cb _hidl_cb) = 0;
285 
286     /**
287      * Set up input and output buffers for processing audio data. The effect
288      * may modify both the input and the output buffer during the operation.
289      * Buffers may be set multiple times during effect lifetime.
290      *
291      * The input and the output buffer may be reused between different effects,
292      * and the input buffer may be used as an output buffer. Buffers are
293      * distinguished using 'AudioBuffer.id' field.
294      *
295      * @param inBuffer input audio buffer.
296      * @param outBuffer output audio buffer.
297      * @return retval OK if both buffers were mapped successfully.
298      *                INVALID_ARGUMENTS if there was a problem with mapping
299      *                                  any of the buffers.
300      */
301     virtual ::android::hardware::Return<::android::hardware::audio::effect::V7_0::Result> setProcessBuffers(const ::android::hardware::audio::effect::V7_0::AudioBuffer& inBuffer, const ::android::hardware::audio::effect::V7_0::AudioBuffer& outBuffer) = 0;
302 
303     /**
304      * Return callback for command
305      */
306     using command_cb = std::function<void(int32_t status, const ::android::hardware::hidl_vec<uint8_t>& result)>;
307     /**
308      * Execute a vendor specific command on the effect. The command code
309      * and data, as well as result data are not interpreted by Android
310      * Framework and are passed as-is between the application and the effect.
311      *
312      * The effect must use standard POSIX.1-2001 error codes for the operation
313      * completion status.
314      *
315      * Use this method only if the effect is provided by a third party, and
316      * there is no interface defined for it. This method only works for effects
317      * implemented in software.
318      *
319      * @param commandId the ID of the command.
320      * @param data command data.
321      * @param resultMaxSize maximum size in bytes of the result; can be 0.
322      * @return status command completion status.
323      * @return result result data.
324      */
325     virtual ::android::hardware::Return<void> command(uint32_t commandId, const ::android::hardware::hidl_vec<uint8_t>& data, uint32_t resultMaxSize, command_cb _hidl_cb) = 0;
326 
327     /**
328      * Set a vendor-specific parameter and apply it immediately. The parameter
329      * code and data are not interpreted by Android Framework and are passed
330      * as-is between the application and the effect.
331      *
332      * The effect must use INVALID_ARGUMENTS return code if the parameter ID is
333      * unknown or if provided parameter data is invalid. If the effect does not
334      * support setting vendor-specific parameters, it must return NOT_SUPPORTED.
335      *
336      * Use this method only if the effect is provided by a third party, and
337      * there is no interface defined for it. This method only works for effects
338      * implemented in software.
339      *
340      * @param parameter identifying data of the parameter.
341      * @param value the value of the parameter.
342      * @return retval operation completion status.
343      */
344     virtual ::android::hardware::Return<::android::hardware::audio::effect::V7_0::Result> setParameter(const ::android::hardware::hidl_vec<uint8_t>& parameter, const ::android::hardware::hidl_vec<uint8_t>& value) = 0;
345 
346     /**
347      * Return callback for getParameter
348      */
349     using getParameter_cb = std::function<void(::android::hardware::audio::effect::V7_0::Result retval, const ::android::hardware::hidl_vec<uint8_t>& value)>;
350     /**
351      * Get a vendor-specific parameter value. The parameter code and returned
352      * data are not interpreted by Android Framework and are passed as-is
353      * between the application and the effect.
354      *
355      * The effect must use INVALID_ARGUMENTS return code if the parameter ID is
356      * unknown. If the effect does not support setting vendor-specific
357      * parameters, it must return NOT_SUPPORTED.
358      *
359      * Use this method only if the effect is provided by a third party, and
360      * there is no interface defined for it.  This method only works for effects
361      * implemented in software.
362      *
363      * @param parameter identifying data of the parameter.
364      * @param valueMaxSize maximum size in bytes of the value.
365      * @return retval operation completion status.
366      * @return result the value of the parameter.
367      */
368     virtual ::android::hardware::Return<void> getParameter(const ::android::hardware::hidl_vec<uint8_t>& parameter, uint32_t valueMaxSize, getParameter_cb _hidl_cb) = 0;
369 
370     /**
371      * Return callback for getSupportedConfigsForFeature
372      */
373     using getSupportedConfigsForFeature_cb = std::function<void(::android::hardware::audio::effect::V7_0::Result retval, uint32_t configsCount, const ::android::hardware::hidl_vec<uint8_t>& configsData)>;
374     /**
375      * Get supported configs for a vendor-specific feature. The configs returned
376      * are not interpreted by Android Framework and are passed as-is between the
377      * application and the effect.
378      *
379      * The effect must use INVALID_ARGUMENTS return code if the feature ID is
380      * unknown. If the effect does not support getting vendor-specific feature
381      * configs, it must return NOT_SUPPORTED. If the feature is supported but
382      * the total number of supported configurations exceeds the maximum number
383      * indicated by the caller, the method must return RESULT_TOO_BIG.
384      *
385      * Use this method only if the effect is provided by a third party, and
386      * there is no interface defined for it.  This method only works for effects
387      * implemented in software.
388      *
389      * @param featureId feature identifier.
390      * @param maxConfigs maximum number of configs to return.
391      * @param configSize size of each config in bytes.
392      * @return retval operation completion status.
393      * @return configsCount number of configs returned.
394      * @return configsData data for all the configs returned.
395      */
396     virtual ::android::hardware::Return<void> getSupportedConfigsForFeature(uint32_t featureId, uint32_t maxConfigs, uint32_t configSize, getSupportedConfigsForFeature_cb _hidl_cb) = 0;
397 
398     /**
399      * Return callback for getCurrentConfigForFeature
400      */
401     using getCurrentConfigForFeature_cb = std::function<void(::android::hardware::audio::effect::V7_0::Result retval, const ::android::hardware::hidl_vec<uint8_t>& configData)>;
402     /**
403      * Get the current config for a vendor-specific feature. The config returned
404      * is not interpreted by Android Framework and is passed as-is between the
405      * application and the effect.
406      *
407      * The effect must use INVALID_ARGUMENTS return code if the feature ID is
408      * unknown. If the effect does not support getting vendor-specific
409      * feature configs, it must return NOT_SUPPORTED.
410      *
411      * Use this method only if the effect is provided by a third party, and
412      * there is no interface defined for it.  This method only works for effects
413      * implemented in software.
414      *
415      * @param featureId feature identifier.
416      * @param configSize size of the config in bytes.
417      * @return retval operation completion status.
418      * @return configData config data.
419      */
420     virtual ::android::hardware::Return<void> getCurrentConfigForFeature(uint32_t featureId, uint32_t configSize, getCurrentConfigForFeature_cb _hidl_cb) = 0;
421 
422     /**
423      * Set the current config for a vendor-specific feature. The config data
424      * is not interpreted by Android Framework and is passed as-is between the
425      * application and the effect.
426      *
427      * The effect must use INVALID_ARGUMENTS return code if the feature ID is
428      * unknown. If the effect does not support getting vendor-specific
429      * feature configs, it must return NOT_SUPPORTED.
430      *
431      * Use this method only if the effect is provided by a third party, and
432      * there is no interface defined for it.  This method only works for effects
433      * implemented in software.
434      *
435      * @param featureId feature identifier.
436      * @param configData config data.
437      * @return retval operation completion status.
438      */
439     virtual ::android::hardware::Return<::android::hardware::audio::effect::V7_0::Result> setCurrentConfigForFeature(uint32_t featureId, const ::android::hardware::hidl_vec<uint8_t>& configData) = 0;
440 
441     /**
442      * Called by the framework to deinitialize the effect and free up
443      * all currently allocated resources. It is recommended to close
444      * the effect on the client side as soon as it is becomes unused.
445      *
446      * The client must ensure that this function is not called while
447      * audio data is being transferred through the effect's message queues.
448      *
449      * @return retval OK in case the success.
450      *                INVALID_STATE if the effect was already closed.
451      */
452     virtual ::android::hardware::Return<::android::hardware::audio::effect::V7_0::Result> close() = 0;
453 
454     /**
455      * Return callback for interfaceChain
456      */
457     using interfaceChain_cb = std::function<void(const ::android::hardware::hidl_vec<::android::hardware::hidl_string>& descriptors)>;
458     /*
459      * Provides run-time type information for this object.
460      * For example, for the following interface definition:
461      *     package [email protected];
462      *     interface IParent {};
463      *     interface IChild extends IParent {};
464      * Calling interfaceChain on an IChild object must yield the following:
465      *     ["[email protected]::IChild",
466      *      "[email protected]::IParent"
467      *      "[email protected]::IBase"]
468      *
469      * @return descriptors a vector of descriptors of the run-time type of the
470      *         object.
471      */
472     virtual ::android::hardware::Return<void> interfaceChain(interfaceChain_cb _hidl_cb) override;
473 
474     /*
475      * Emit diagnostic information to the given file.
476      *
477      * Optionally overriden.
478      *
479      * @param fd      File descriptor to dump data to.
480      *                Must only be used for the duration of this call.
481      * @param options Arguments for debugging.
482      *                Must support empty for default debug information.
483      */
484     virtual ::android::hardware::Return<void> debug(const ::android::hardware::hidl_handle& fd, const ::android::hardware::hidl_vec<::android::hardware::hidl_string>& options) override;
485 
486     /**
487      * Return callback for interfaceDescriptor
488      */
489     using interfaceDescriptor_cb = std::function<void(const ::android::hardware::hidl_string& descriptor)>;
490     /*
491      * Provides run-time type information for this object.
492      * For example, for the following interface definition:
493      *     package [email protected];
494      *     interface IParent {};
495      *     interface IChild extends IParent {};
496      * Calling interfaceDescriptor on an IChild object must yield
497      *     "[email protected]::IChild"
498      *
499      * @return descriptor a descriptor of the run-time type of the
500      *         object (the first element of the vector returned by
501      *         interfaceChain())
502      */
503     virtual ::android::hardware::Return<void> interfaceDescriptor(interfaceDescriptor_cb _hidl_cb) override;
504 
505     /**
506      * Return callback for getHashChain
507      */
508     using getHashChain_cb = std::function<void(const ::android::hardware::hidl_vec<::android::hardware::hidl_array<uint8_t, 32>>& hashchain)>;
509     /*
510      * Returns hashes of the source HAL files that define the interfaces of the
511      * runtime type information on the object.
512      * For example, for the following interface definition:
513      *     package [email protected];
514      *     interface IParent {};
515      *     interface IChild extends IParent {};
516      * Calling interfaceChain on an IChild object must yield the following:
517      *     [(hash of IChild.hal),
518      *      (hash of IParent.hal)
519      *      (hash of IBase.hal)].
520      *
521      * SHA-256 is used as the hashing algorithm. Each hash has 32 bytes
522      * according to SHA-256 standard.
523      *
524      * @return hashchain a vector of SHA-1 digests
525      */
526     virtual ::android::hardware::Return<void> getHashChain(getHashChain_cb _hidl_cb) override;
527 
528     /*
529      * This method trigger the interface to enable/disable instrumentation based
530      * on system property hal.instrumentation.enable.
531      */
532     virtual ::android::hardware::Return<void> setHALInstrumentation() override;
533 
534     /*
535      * Registers a death recipient, to be called when the process hosting this
536      * interface dies.
537      *
538      * @param recipient a hidl_death_recipient callback object
539      * @param cookie a cookie that must be returned with the callback
540      * @return success whether the death recipient was registered successfully.
541      */
542     virtual ::android::hardware::Return<bool> linkToDeath(const ::android::sp<::android::hardware::hidl_death_recipient>& recipient, uint64_t cookie) override;
543 
544     /*
545      * Provides way to determine if interface is running without requesting
546      * any functionality.
547      */
548     virtual ::android::hardware::Return<void> ping() override;
549 
550     /**
551      * Return callback for getDebugInfo
552      */
553     using getDebugInfo_cb = std::function<void(const ::android::hidl::base::V1_0::DebugInfo& info)>;
554     /*
555      * Get debug information on references on this interface.
556      * @return info debugging information. See comments of DebugInfo.
557      */
558     virtual ::android::hardware::Return<void> getDebugInfo(getDebugInfo_cb _hidl_cb) override;
559 
560     /*
561      * This method notifies the interface that one or more system properties
562      * have changed. The default implementation calls
563      * (C++)  report_sysprop_change() in libcutils or
564      * (Java) android.os.SystemProperties.reportSyspropChanged,
565      * which in turn calls a set of registered callbacks (eg to update trace
566      * tags).
567      */
568     virtual ::android::hardware::Return<void> notifySyspropsChanged() override;
569 
570     /*
571      * Unregisters the registered death recipient. If this service was registered
572      * multiple times with the same exact death recipient, this unlinks the most
573      * recently registered one.
574      *
575      * @param recipient a previously registered hidl_death_recipient callback
576      * @return success whether the death recipient was unregistered successfully.
577      */
578     virtual ::android::hardware::Return<bool> unlinkToDeath(const ::android::sp<::android::hardware::hidl_death_recipient>& recipient) override;
579 
580     // cast static functions
581     /**
582      * This performs a checked cast based on what the underlying implementation actually is.
583      */
584     static ::android::hardware::Return<::android::sp<::android::hardware::audio::effect::V7_0::IEffect>> castFrom(const ::android::sp<::android::hardware::audio::effect::V7_0::IEffect>& parent, bool emitError = false);
585     /**
586      * This performs a checked cast based on what the underlying implementation actually is.
587      */
588     static ::android::hardware::Return<::android::sp<::android::hardware::audio::effect::V7_0::IEffect>> castFrom(const ::android::sp<::android::hidl::base::V1_0::IBase>& parent, bool emitError = false);
589 
590     // helper methods for interactions with the hwservicemanager
591     /**
592      * This gets the service of this type with the specified instance name. If the
593      * service is currently not available or not in the VINTF manifest on a Trebilized
594      * device, this will return nullptr. This is useful when you don't want to block
595      * during device boot. If getStub is true, this will try to return an unwrapped
596      * passthrough implementation in the same process. This is useful when getting an
597      * implementation from the same partition/compilation group.
598      *
599      * In general, prefer getService(std::string,bool)
600      */
601     static ::android::sp<IEffect> tryGetService(const std::string &serviceName="default", bool getStub=false);
602     /**
603      * Deprecated. See tryGetService(std::string, bool)
604      */
605     static ::android::sp<IEffect> tryGetService(const char serviceName[], bool getStub=false)  { std::string str(serviceName ? serviceName : "");      return tryGetService(str, getStub); }
606     /**
607      * Deprecated. See tryGetService(std::string, bool)
608      */
609     static ::android::sp<IEffect> tryGetService(const ::android::hardware::hidl_string& serviceName, bool getStub=false)  { std::string str(serviceName.c_str());      return tryGetService(str, getStub); }
610     /**
611      * Calls tryGetService("default", bool). This is the recommended instance name for singleton services.
612      */
tryGetServiceIEffect613     static ::android::sp<IEffect> tryGetService(bool getStub) { return tryGetService("default", getStub); }
614     /**
615      * This gets the service of this type with the specified instance name. If the
616      * service is not in the VINTF manifest on a Trebilized device, this will return
617      * nullptr. If the service is not available, this will wait for the service to
618      * become available. If the service is a lazy service, this will start the service
619      * and return when it becomes available. If getStub is true, this will try to
620      * return an unwrapped passthrough implementation in the same process. This is
621      * useful when getting an implementation from the same partition/compilation group.
622      */
623     static ::android::sp<IEffect> getService(const std::string &serviceName="default", bool getStub=false);
624     /**
625      * Deprecated. See getService(std::string, bool)
626      */
627     static ::android::sp<IEffect> getService(const char serviceName[], bool getStub=false)  { std::string str(serviceName ? serviceName : "");      return getService(str, getStub); }
628     /**
629      * Deprecated. See getService(std::string, bool)
630      */
631     static ::android::sp<IEffect> getService(const ::android::hardware::hidl_string& serviceName, bool getStub=false)  { std::string str(serviceName.c_str());      return getService(str, getStub); }
632     /**
633      * Calls getService("default", bool). This is the recommended instance name for singleton services.
634      */
getServiceIEffect635     static ::android::sp<IEffect> getService(bool getStub) { return getService("default", getStub); }
636     /**
637      * Registers a service with the service manager. For Trebilized devices, the service
638      * must also be in the VINTF manifest.
639      */
640     __attribute__ ((warn_unused_result))::android::status_t registerAsService(const std::string &serviceName="default");
641     /**
642      * Registers for notifications for when a service is registered.
643      */
644     static bool registerForNotifications(
645             const std::string &serviceName,
646             const ::android::sp<::android::hidl::manager::V1_0::IServiceNotification> &notification);
647 };
648 
649 //
650 // type declarations for package
651 //
652 
653 static inline std::string toString(const ::android::sp<::android::hardware::audio::effect::V7_0::IEffect>& o);
654 
655 //
656 // type header definitions for package
657 //
658 
toString(const::android::sp<::android::hardware::audio::effect::V7_0::IEffect> & o)659 static inline std::string toString(const ::android::sp<::android::hardware::audio::effect::V7_0::IEffect>& o) {
660     std::string os = "[class or subclass of ";
661     os += ::android::hardware::audio::effect::V7_0::IEffect::descriptor;
662     os += "]";
663     os += o->isRemote() ? "@remote" : "@local";
664     return os;
665 }
666 
667 
668 }  // namespace V7_0
669 }  // namespace effect
670 }  // namespace audio
671 }  // namespace hardware
672 }  // namespace android
673 
674 //
675 // global type declarations for package
676 //
677 
678 
679 #endif  // HIDL_GENERATED_ANDROID_HARDWARE_AUDIO_EFFECT_V7_0_IEFFECT_H
680