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

Commit 9ff780e5 authored by jiabin's avatar jiabin
Browse files

Support query microphones information.

Get list of all/currently active microphones from hal.

Bug: 64038649
Test: Manual Testing and Cts test
Change-Id: Id39cae38ba040f9bc91571e713487f87c2eb67b0
parent 2ca70073
Loading
Loading
Loading
Loading
+3 −3
Original line number Original line Diff line number Diff line
@@ -86,7 +86,7 @@ enum {
    GET_AUDIO_HW_SYNC_FOR_SESSION,
    GET_AUDIO_HW_SYNC_FOR_SESSION,
    SYSTEM_READY,
    SYSTEM_READY,
    FRAME_COUNT_HAL,
    FRAME_COUNT_HAL,
    LIST_MICROPHONES,
    GET_MICROPHONES,
};
};


#define MAX_ITEMS_PER_LIST 1024
#define MAX_ITEMS_PER_LIST 1024
@@ -848,7 +848,7 @@ public:
    {
    {
        Parcel data, reply;
        Parcel data, reply;
        data.writeInterfaceToken(IAudioFlinger::getInterfaceDescriptor());
        data.writeInterfaceToken(IAudioFlinger::getInterfaceDescriptor());
        status_t status = remote()->transact(LIST_MICROPHONES, data, &reply);
        status_t status = remote()->transact(GET_MICROPHONES, data, &reply);
        if (status != NO_ERROR ||
        if (status != NO_ERROR ||
                (status = (status_t)reply.readInt32()) != NO_ERROR) {
                (status = (status_t)reply.readInt32()) != NO_ERROR) {
            return status;
            return status;
@@ -1439,7 +1439,7 @@ status_t BnAudioFlinger::onTransact(
            reply->writeInt64( frameCountHAL((audio_io_handle_t) data.readInt32()) );
            reply->writeInt64( frameCountHAL((audio_io_handle_t) data.readInt32()) );
            return NO_ERROR;
            return NO_ERROR;
        } break;
        } break;
        case LIST_MICROPHONES: {
        case GET_MICROPHONES: {
            CHECK_INTERFACE(IAudioFlinger, data, reply);
            CHECK_INTERFACE(IAudioFlinger, data, reply);
            std::vector<media::MicrophoneInfo> microphones;
            std::vector<media::MicrophoneInfo> microphones;
            status_t status = getMicrophones(&microphones);
            status_t status = getMicrophones(&microphones);
+6 −0
Original line number Original line Diff line number Diff line
@@ -346,6 +346,12 @@ status_t DeviceHalHidl::setAudioPortConfig(const struct audio_port_config *confi
    return processReturn("setAudioPortConfig", mDevice->setAudioPortConfig(hidlConfig));
    return processReturn("setAudioPortConfig", mDevice->setAudioPortConfig(hidlConfig));
}
}


status_t DeviceHalHidl::getMicrophones(
        std::vector<media::MicrophoneInfo> *microphonesInfo __unused) {
    if (mDevice == 0) return NO_INIT;
    return INVALID_OPERATION;
}

status_t DeviceHalHidl::dump(int fd) {
status_t DeviceHalHidl::dump(int fd) {
    if (mDevice == 0) return NO_INIT;
    if (mDevice == 0) return NO_INIT;
    native_handle_t* hidlHandle = native_handle_create(1, 0);
    native_handle_t* hidlHandle = native_handle_create(1, 0);
+3 −0
Original line number Original line Diff line number Diff line
@@ -107,6 +107,9 @@ class DeviceHalHidl : public DeviceHalInterface, public ConversionHelperHidl
    // Set audio port configuration.
    // Set audio port configuration.
    virtual status_t setAudioPortConfig(const struct audio_port_config *config);
    virtual status_t setAudioPortConfig(const struct audio_port_config *config);


    // List microphones
    virtual status_t getMicrophones(std::vector<media::MicrophoneInfo> *microphones);

    virtual status_t dump(int fd);
    virtual status_t dump(int fd);


  private:
  private:
+5 −0
Original line number Original line Diff line number Diff line
@@ -184,6 +184,11 @@ status_t DeviceHalLocal::setAudioPortConfig(const struct audio_port_config *conf
        return INVALID_OPERATION;
        return INVALID_OPERATION;
}
}


status_t DeviceHalLocal::getMicrophones(
        std::vector<media::MicrophoneInfo> *microphones __unused) {
    return INVALID_OPERATION;
}

status_t DeviceHalLocal::dump(int fd) {
status_t DeviceHalLocal::dump(int fd) {
    return mDev->dump(mDev, fd);
    return mDev->dump(mDev, fd);
}
}
+3 −0
Original line number Original line Diff line number Diff line
@@ -100,6 +100,9 @@ class DeviceHalLocal : public DeviceHalInterface
    // Set audio port configuration.
    // Set audio port configuration.
    virtual status_t setAudioPortConfig(const struct audio_port_config *config);
    virtual status_t setAudioPortConfig(const struct audio_port_config *config);


    // List microphones
    virtual status_t getMicrophones(std::vector<media::MicrophoneInfo> *microphones);

    virtual status_t dump(int fd);
    virtual status_t dump(int fd);


    void closeOutputStream(struct audio_stream_out *stream_out);
    void closeOutputStream(struct audio_stream_out *stream_out);
Loading