Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4fa0bb24 authored by Eric Laurent's avatar Eric Laurent Committed by Android (Google) Code Review
Browse files

Merge "add sound trigger native service"

parents 03873edd b7a11d83
Loading
Loading
Loading
Loading
+59 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2014 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef ANDROID_HARDWARE_ISOUNDTRIGGER_H
#define ANDROID_HARDWARE_ISOUNDTRIGGER_H

#include <utils/RefBase.h>
#include <binder/IInterface.h>
#include <binder/Parcel.h>
#include <binder/IMemory.h>
#include <system/sound_trigger.h>

namespace android {

class ISoundTrigger : public IInterface
{
public:
    DECLARE_META_INTERFACE(SoundTrigger);

    virtual void detach() = 0;

    virtual status_t loadSoundModel(const sp<IMemory>& modelMemory,
                                    sound_model_handle_t *handle) = 0;

    virtual status_t unloadSoundModel(sound_model_handle_t handle) = 0;

    virtual status_t startRecognition(sound_model_handle_t handle,
                                      const sp<IMemory>& dataMemory) = 0;
    virtual status_t stopRecognition(sound_model_handle_t handle) = 0;

};

// ----------------------------------------------------------------------------

class BnSoundTrigger: public BnInterface<ISoundTrigger>
{
public:
    virtual status_t    onTransact( uint32_t code,
                                    const Parcel& data,
                                    Parcel* reply,
                                    uint32_t flags = 0);
};

}; // namespace android

#endif //ANDROID_HARDWARE_ISOUNDTRIGGER_H
+49 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2014 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef ANDROID_HARDWARE_ISOUNDTRIGGER_CLIENT_H
#define ANDROID_HARDWARE_ISOUNDTRIGGER_CLIENT_H

#include <utils/RefBase.h>
#include <binder/IInterface.h>
#include <binder/Parcel.h>

namespace android {

class ISoundTriggerClient : public IInterface
{
public:

    DECLARE_META_INTERFACE(SoundTriggerClient);

    virtual void onRecognitionEvent(const sp<IMemory>& eventMemory) = 0;

};

// ----------------------------------------------------------------------------

class BnSoundTriggerClient : public BnInterface<ISoundTriggerClient>
{
public:
    virtual status_t    onTransact( uint32_t code,
                                    const Parcel& data,
                                    Parcel* reply,
                                    uint32_t flags = 0);
};

}; // namespace android

#endif //ANDROID_HARDWARE_ISOUNDTRIGGER_CLIENT_H
+57 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2014 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef ANDROID_HARDWARE_ISOUNDTRIGGER_SERVICE_H
#define ANDROID_HARDWARE_ISOUNDTRIGGER_SERVICE_H

#include <utils/RefBase.h>
#include <binder/IInterface.h>
#include <binder/Parcel.h>
#include <system/sound_trigger.h>

namespace android {

class ISoundTrigger;
class ISoundTriggerClient;

class ISoundTriggerHwService : public IInterface
{
public:

    DECLARE_META_INTERFACE(SoundTriggerHwService);

    virtual status_t listModules(struct sound_trigger_module_descriptor *modules,
                                 uint32_t *numModules) = 0;

    virtual status_t attach(const sound_trigger_module_handle_t handle,
                                      const sp<ISoundTriggerClient>& client,
                                      sp<ISoundTrigger>& module) = 0;
};

// ----------------------------------------------------------------------------

class BnSoundTriggerHwService: public BnInterface<ISoundTriggerHwService>
{
public:
    virtual status_t    onTransact( uint32_t code,
                                    const Parcel& data,
                                    Parcel* reply,
                                    uint32_t flags = 0);
};

}; // namespace android

#endif //ANDROID_HARDWARE_ISOUNDTRIGGER_SERVICE_H
+75 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2014 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef ANDROID_HARDWARE_SOUNDTRIGGER_H
#define ANDROID_HARDWARE_SOUNDTRIGGER_H

#include <binder/IBinder.h>
#include <soundtrigger/SoundTriggerCallback.h>
#include <soundtrigger/ISoundTrigger.h>
#include <soundtrigger/ISoundTriggerHwService.h>
#include <soundtrigger/ISoundTriggerClient.h>
#include <system/sound_trigger.h>

namespace android {

class MemoryDealer;

class SoundTrigger : public BnSoundTriggerClient,
                        public IBinder::DeathRecipient
{
public:
    static  status_t listModules(struct sound_trigger_module_descriptor *modules,
                                 uint32_t *numModules);
    static  sp<SoundTrigger> attach(const sound_trigger_module_handle_t module,
                                       const sp<SoundTriggerCallback>& callback);

            virtual ~SoundTrigger();

            void detach();

            status_t loadSoundModel(const sp<IMemory>& modelMemory,
                                            sound_model_handle_t *handle);

            status_t unloadSoundModel(sound_model_handle_t handle);

            status_t startRecognition(sound_model_handle_t handle, const sp<IMemory>& dataMemory);
            status_t stopRecognition(sound_model_handle_t handle);

            // BpSoundTriggerClient
            virtual void onRecognitionEvent(const sp<IMemory>& eventMemory);

            //IBinder::DeathRecipient
            virtual void binderDied(const wp<IBinder>& who);

            static status_t stringToGuid(const char *str, sound_trigger_uuid_t *guid);
            static status_t guidToString(const sound_trigger_uuid_t *guid,
                                         char *str, size_t maxLen);

private:
            SoundTrigger(sound_trigger_module_handle_t module,
                            const sp<SoundTriggerCallback>&);
            static const sp<ISoundTriggerHwService>& getSoundTriggerHwService();

            Mutex                               mLock;
            sp<ISoundTrigger>                   mISoundTrigger;
            const sound_trigger_module_handle_t mModule;
            sp<SoundTriggerCallback>            mCallback;
};

}; // namespace android

#endif //ANDROID_HARDWARE_SOUNDTRIGGER_H
+40 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2014 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef ANDROID_HARDWARE_SOUNDTRIGGER_CALLBACK_H
#define ANDROID_HARDWARE_SOUNDTRIGGER_CALLBACK_H

#include <utils/RefBase.h>
#include <system/sound_trigger.h>

namespace android {

class SoundTriggerCallback : public RefBase
{
public:

            SoundTriggerCallback() {}
    virtual ~SoundTriggerCallback() {}

    virtual void onRecognitionEvent(struct sound_trigger_recognition_event *event) = 0;

    virtual void onServiceDied() = 0;

};

}; // namespace android

#endif //ANDROID_HARDWARE_SOUNDTRIGGER_CALLBACK_H
Loading