xref: /aosp_15_r20/hardware/interfaces/soundtrigger/2.1/default/SoundTriggerHw.h (revision 4d7e907c777eeecc4c5bd7cf640a754fac206ff7)
1*4d7e907cSAndroid Build Coastguard Worker /*
2*4d7e907cSAndroid Build Coastguard Worker  * Copyright (C) 2018 The Android Open Source Project
3*4d7e907cSAndroid Build Coastguard Worker  *
4*4d7e907cSAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
5*4d7e907cSAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
6*4d7e907cSAndroid Build Coastguard Worker  * You may obtain a copy of the License at
7*4d7e907cSAndroid Build Coastguard Worker  *
8*4d7e907cSAndroid Build Coastguard Worker  *      http://www.apache.org/licenses/LICENSE-2.0
9*4d7e907cSAndroid Build Coastguard Worker  *
10*4d7e907cSAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
11*4d7e907cSAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
12*4d7e907cSAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*4d7e907cSAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
14*4d7e907cSAndroid Build Coastguard Worker  * limitations under the License.
15*4d7e907cSAndroid Build Coastguard Worker  */
16*4d7e907cSAndroid Build Coastguard Worker 
17*4d7e907cSAndroid Build Coastguard Worker #ifndef ANDROID_HARDWARE_SOUNDTRIGGER_V2_1_SOUNDTRIGGERHW_H
18*4d7e907cSAndroid Build Coastguard Worker #define ANDROID_HARDWARE_SOUNDTRIGGER_V2_1_SOUNDTRIGGERHW_H
19*4d7e907cSAndroid Build Coastguard Worker 
20*4d7e907cSAndroid Build Coastguard Worker #include <SoundTriggerHalImpl.h>
21*4d7e907cSAndroid Build Coastguard Worker #include <android/hardware/soundtrigger/2.1/ISoundTriggerHw.h>
22*4d7e907cSAndroid Build Coastguard Worker #include <hidl/Status.h>
23*4d7e907cSAndroid Build Coastguard Worker 
24*4d7e907cSAndroid Build Coastguard Worker namespace android {
25*4d7e907cSAndroid Build Coastguard Worker namespace hardware {
26*4d7e907cSAndroid Build Coastguard Worker namespace soundtrigger {
27*4d7e907cSAndroid Build Coastguard Worker namespace V2_1 {
28*4d7e907cSAndroid Build Coastguard Worker namespace implementation {
29*4d7e907cSAndroid Build Coastguard Worker 
30*4d7e907cSAndroid Build Coastguard Worker using ::android::sp;
31*4d7e907cSAndroid Build Coastguard Worker using ::android::hardware::hidl_string;
32*4d7e907cSAndroid Build Coastguard Worker using ::android::hardware::hidl_vec;
33*4d7e907cSAndroid Build Coastguard Worker using ::android::hardware::Return;
34*4d7e907cSAndroid Build Coastguard Worker using ::android::hardware::Void;
35*4d7e907cSAndroid Build Coastguard Worker 
36*4d7e907cSAndroid Build Coastguard Worker struct SoundTriggerHw : public V2_0::implementation::SoundTriggerHalImpl {
37*4d7e907cSAndroid Build Coastguard Worker     SoundTriggerHw() = default;
getInterfaceSoundTriggerHw38*4d7e907cSAndroid Build Coastguard Worker     ISoundTriggerHw* getInterface() { return new TrampolineSoundTriggerHw_2_1(this); }
39*4d7e907cSAndroid Build Coastguard Worker 
40*4d7e907cSAndroid Build Coastguard Worker    protected:
41*4d7e907cSAndroid Build Coastguard Worker     virtual ~SoundTriggerHw() = default;
42*4d7e907cSAndroid Build Coastguard Worker 
43*4d7e907cSAndroid Build Coastguard Worker     Return<void> loadSoundModel_2_1(const V2_1::ISoundTriggerHw::SoundModel& soundModel,
44*4d7e907cSAndroid Build Coastguard Worker                                     const sp<V2_1::ISoundTriggerHwCallback>& callback,
45*4d7e907cSAndroid Build Coastguard Worker                                     int32_t cookie,
46*4d7e907cSAndroid Build Coastguard Worker                                     V2_1::ISoundTriggerHw::loadSoundModel_2_1_cb _hidl_cb);
47*4d7e907cSAndroid Build Coastguard Worker     Return<void> loadPhraseSoundModel_2_1(
48*4d7e907cSAndroid Build Coastguard Worker         const V2_1::ISoundTriggerHw::PhraseSoundModel& soundModel,
49*4d7e907cSAndroid Build Coastguard Worker         const sp<V2_1::ISoundTriggerHwCallback>& callback, int32_t cookie,
50*4d7e907cSAndroid Build Coastguard Worker         V2_1::ISoundTriggerHw::loadPhraseSoundModel_2_1_cb _hidl_cb);
51*4d7e907cSAndroid Build Coastguard Worker     Return<int32_t> startRecognition_2_1(int32_t modelHandle,
52*4d7e907cSAndroid Build Coastguard Worker                                          const V2_1::ISoundTriggerHw::RecognitionConfig& config);
53*4d7e907cSAndroid Build Coastguard Worker 
54*4d7e907cSAndroid Build Coastguard Worker    private:
55*4d7e907cSAndroid Build Coastguard Worker     struct TrampolineSoundTriggerHw_2_1 : public ISoundTriggerHw {
TrampolineSoundTriggerHw_2_1SoundTriggerHw::TrampolineSoundTriggerHw_2_156*4d7e907cSAndroid Build Coastguard Worker         explicit TrampolineSoundTriggerHw_2_1(sp<SoundTriggerHw> impl) : mImpl(impl) {}
57*4d7e907cSAndroid Build Coastguard Worker 
58*4d7e907cSAndroid Build Coastguard Worker         // Methods from ::android::hardware::soundtrigger::V2_0::ISoundTriggerHw follow.
getPropertiesSoundTriggerHw::TrampolineSoundTriggerHw_2_159*4d7e907cSAndroid Build Coastguard Worker         Return<void> getProperties(getProperties_cb _hidl_cb) override {
60*4d7e907cSAndroid Build Coastguard Worker             return mImpl->getProperties(_hidl_cb);
61*4d7e907cSAndroid Build Coastguard Worker         }
loadSoundModelSoundTriggerHw::TrampolineSoundTriggerHw_2_162*4d7e907cSAndroid Build Coastguard Worker         Return<void> loadSoundModel(const V2_0::ISoundTriggerHw::SoundModel& soundModel,
63*4d7e907cSAndroid Build Coastguard Worker                                     const sp<V2_0::ISoundTriggerHwCallback>& callback,
64*4d7e907cSAndroid Build Coastguard Worker                                     int32_t cookie, loadSoundModel_cb _hidl_cb) override {
65*4d7e907cSAndroid Build Coastguard Worker             return mImpl->loadSoundModel(soundModel, callback, cookie, _hidl_cb);
66*4d7e907cSAndroid Build Coastguard Worker         }
loadPhraseSoundModelSoundTriggerHw::TrampolineSoundTriggerHw_2_167*4d7e907cSAndroid Build Coastguard Worker         Return<void> loadPhraseSoundModel(const V2_0::ISoundTriggerHw::PhraseSoundModel& soundModel,
68*4d7e907cSAndroid Build Coastguard Worker                                           const sp<V2_0::ISoundTriggerHwCallback>& callback,
69*4d7e907cSAndroid Build Coastguard Worker                                           int32_t cookie,
70*4d7e907cSAndroid Build Coastguard Worker                                           loadPhraseSoundModel_cb _hidl_cb) override {
71*4d7e907cSAndroid Build Coastguard Worker             return mImpl->loadPhraseSoundModel(soundModel, callback, cookie, _hidl_cb);
72*4d7e907cSAndroid Build Coastguard Worker         }
unloadSoundModelSoundTriggerHw::TrampolineSoundTriggerHw_2_173*4d7e907cSAndroid Build Coastguard Worker         Return<int32_t> unloadSoundModel(V2_0::SoundModelHandle modelHandle) override {
74*4d7e907cSAndroid Build Coastguard Worker             return mImpl->unloadSoundModel(modelHandle);
75*4d7e907cSAndroid Build Coastguard Worker         }
startRecognitionSoundTriggerHw::TrampolineSoundTriggerHw_2_176*4d7e907cSAndroid Build Coastguard Worker         Return<int32_t> startRecognition(int32_t modelHandle,
77*4d7e907cSAndroid Build Coastguard Worker                                          const V2_0::ISoundTriggerHw::RecognitionConfig& config,
78*4d7e907cSAndroid Build Coastguard Worker                                          const sp<V2_0::ISoundTriggerHwCallback>& /*callback*/,
79*4d7e907cSAndroid Build Coastguard Worker                                          int32_t /*cookie*/) override {
80*4d7e907cSAndroid Build Coastguard Worker             return mImpl->startRecognition(modelHandle, config);
81*4d7e907cSAndroid Build Coastguard Worker         }
stopRecognitionSoundTriggerHw::TrampolineSoundTriggerHw_2_182*4d7e907cSAndroid Build Coastguard Worker         Return<int32_t> stopRecognition(V2_0::SoundModelHandle modelHandle) override {
83*4d7e907cSAndroid Build Coastguard Worker             return mImpl->stopRecognition(modelHandle);
84*4d7e907cSAndroid Build Coastguard Worker         }
stopAllRecognitionsSoundTriggerHw::TrampolineSoundTriggerHw_2_185*4d7e907cSAndroid Build Coastguard Worker         Return<int32_t> stopAllRecognitions() override { return mImpl->stopAllRecognitions(); }
86*4d7e907cSAndroid Build Coastguard Worker 
87*4d7e907cSAndroid Build Coastguard Worker         // Methods from V2_1::ISoundTriggerHw follow.
loadSoundModel_2_1SoundTriggerHw::TrampolineSoundTriggerHw_2_188*4d7e907cSAndroid Build Coastguard Worker         Return<void> loadSoundModel_2_1(const V2_1::ISoundTriggerHw::SoundModel& soundModel,
89*4d7e907cSAndroid Build Coastguard Worker                                         const sp<V2_1::ISoundTriggerHwCallback>& callback,
90*4d7e907cSAndroid Build Coastguard Worker                                         int32_t cookie, loadSoundModel_2_1_cb _hidl_cb) override {
91*4d7e907cSAndroid Build Coastguard Worker             return mImpl->loadSoundModel_2_1(soundModel, callback, cookie, _hidl_cb);
92*4d7e907cSAndroid Build Coastguard Worker         }
loadPhraseSoundModel_2_1SoundTriggerHw::TrampolineSoundTriggerHw_2_193*4d7e907cSAndroid Build Coastguard Worker         Return<void> loadPhraseSoundModel_2_1(
94*4d7e907cSAndroid Build Coastguard Worker             const V2_1::ISoundTriggerHw::PhraseSoundModel& soundModel,
95*4d7e907cSAndroid Build Coastguard Worker             const sp<V2_1::ISoundTriggerHwCallback>& callback, int32_t cookie,
96*4d7e907cSAndroid Build Coastguard Worker             loadPhraseSoundModel_2_1_cb _hidl_cb) override {
97*4d7e907cSAndroid Build Coastguard Worker             return mImpl->loadPhraseSoundModel_2_1(soundModel, callback, cookie, _hidl_cb);
98*4d7e907cSAndroid Build Coastguard Worker         }
startRecognition_2_1SoundTriggerHw::TrampolineSoundTriggerHw_2_199*4d7e907cSAndroid Build Coastguard Worker         Return<int32_t> startRecognition_2_1(int32_t modelHandle,
100*4d7e907cSAndroid Build Coastguard Worker                                              const V2_1::ISoundTriggerHw::RecognitionConfig& config,
101*4d7e907cSAndroid Build Coastguard Worker                                              const sp<V2_1::ISoundTriggerHwCallback>& /*callback*/,
102*4d7e907cSAndroid Build Coastguard Worker                                              int32_t /*cookie*/) override {
103*4d7e907cSAndroid Build Coastguard Worker             return mImpl->startRecognition_2_1(modelHandle, config);
104*4d7e907cSAndroid Build Coastguard Worker         }
105*4d7e907cSAndroid Build Coastguard Worker 
106*4d7e907cSAndroid Build Coastguard Worker        private:
107*4d7e907cSAndroid Build Coastguard Worker         sp<SoundTriggerHw> mImpl;
108*4d7e907cSAndroid Build Coastguard Worker     };
109*4d7e907cSAndroid Build Coastguard Worker 
110*4d7e907cSAndroid Build Coastguard Worker     class SoundModelClient_2_1 : public SoundModelClient {
111*4d7e907cSAndroid Build Coastguard Worker        public:
SoundModelClient_2_1SoundTriggerHw112*4d7e907cSAndroid Build Coastguard Worker         SoundModelClient_2_1(uint32_t id, V2_1::ISoundTriggerHwCallback::CallbackCookie cookie,
113*4d7e907cSAndroid Build Coastguard Worker                              sp<V2_1::ISoundTriggerHwCallback> callback)
114*4d7e907cSAndroid Build Coastguard Worker             : SoundModelClient(id, cookie), mCallback(callback) {}
115*4d7e907cSAndroid Build Coastguard Worker 
116*4d7e907cSAndroid Build Coastguard Worker         void recognitionCallback(struct sound_trigger_recognition_event* halEvent) override;
117*4d7e907cSAndroid Build Coastguard Worker         void soundModelCallback(struct sound_trigger_model_event* halEvent) override;
118*4d7e907cSAndroid Build Coastguard Worker 
119*4d7e907cSAndroid Build Coastguard Worker        private:
120*4d7e907cSAndroid Build Coastguard Worker         sp<V2_1::ISoundTriggerHwCallback> mCallback;
121*4d7e907cSAndroid Build Coastguard Worker     };
122*4d7e907cSAndroid Build Coastguard Worker };
123*4d7e907cSAndroid Build Coastguard Worker 
124*4d7e907cSAndroid Build Coastguard Worker extern "C" ISoundTriggerHw* HIDL_FETCH_ISoundTriggerHw(const char* name);
125*4d7e907cSAndroid Build Coastguard Worker 
126*4d7e907cSAndroid Build Coastguard Worker }  // namespace implementation
127*4d7e907cSAndroid Build Coastguard Worker }  // namespace V2_1
128*4d7e907cSAndroid Build Coastguard Worker }  // namespace soundtrigger
129*4d7e907cSAndroid Build Coastguard Worker }  // namespace hardware
130*4d7e907cSAndroid Build Coastguard Worker }  // namespace android
131*4d7e907cSAndroid Build Coastguard Worker 
132*4d7e907cSAndroid Build Coastguard Worker #endif  // ANDROID_HARDWARE_SOUNDTRIGGER_V2_1_SOUNDTRIGGERHW_H
133