/*

 * Copyright (c) 2021 Huawei Device Co., Ltd.

 * 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 BLUETOOTH_A2DP_DEVICE_H

#define BLUETOOTH_A2DP_DEVICE_H



#include <cstdint>



namespace OHOS {

namespace bluetooth {

namespace audio {



enum class BTAudioStreamState : uint8_t {

    INVALID,

    IDLE,

    STARTING,

    STARTED,

    SUSPENDING

};



enum class RenderMixerState : uint8_t {

    INVALID = 0,

    INITED = 1,

    NORMAL_STARTED = 2,

    FAST_STARTED = 3,

    MIX_STARTED = 4,

    FAST_ON_MIX_STOP = 5,

    NORMAL_ON_MIX_STOP = 6

};



typedef bool (*SetUpFunc)();

typedef void (*TearDownFunc)();

typedef BTAudioStreamState (*GetStateFunc)();

typedef bool (*StartPlayingFunc)(uint32_t sampleRate, uint32_t channelCount, uint32_t format);

typedef bool (*SuspendPlayingFunc)();

typedef bool (*StopPlayingFunc)();

typedef size_t (*WriteFrameFunc)(const void* data, size_t size);

typedef int32_t (*ReqMmapBufferFunc)(int32_t ashmemLength);

typedef void (*ReadMmapPositionFunc)(int64_t &sec, int64_t &nSec, uint64_t &frames);

typedef bool (*GetLatencyFunc)(uint32_t &latency);

typedef BTAudioStreamState (*GetRealStateFunc)();

typedef RenderMixerState (*GetRenderMixerStateFunc)();

typedef size_t (*ReadFrameFunc)(void *data, size_t size);

typedef bool (*StartCaptureFunc)();

typedef bool (*StartHearingAidFunc)();

}

}

}



#endif