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> ¬ification);
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