universal7580: bluetooth: Add ISO
[GitHub/LineageOS/android_device_samsung_universal7580-common.git] / hardware / bluetooth / vendor_interface.h
CommitLineData
8d217709
L
1//
2// Copyright 2016 The Android Open Source Project
3//
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at
7//
8// http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
15//
16
17#pragma once
18
19#include <hidl/HidlSupport.h>
20
21#include "async_fd_watcher.h"
22#include "bt_vendor_lib.h"
23#include "hci_protocol.h"
24
25namespace android {
26namespace hardware {
27namespace bluetooth {
28namespace V1_0 {
29namespace implementation {
30
31using ::android::hardware::hidl_vec;
32using InitializeCompleteCallback = std::function<void(bool success)>;
33using PacketReadCallback = std::function<void(const hidl_vec<uint8_t>&)>;
34
35class FirmwareStartupTimer;
36
37class VendorInterface {
38 public:
39 static bool Initialize(InitializeCompleteCallback initialize_complete_cb,
40 PacketReadCallback event_cb, PacketReadCallback acl_cb,
84a2b381 41 PacketReadCallback sco_cb, PacketReadCallback iso_cb);
8d217709
L
42 static void Shutdown();
43 static VendorInterface *get();
44
45 size_t Send(uint8_t type, const uint8_t *data, size_t length);
46
47 void OnFirmwareConfigured(uint8_t result);
48
49 private:
50 virtual ~VendorInterface() = default;
51
52 bool Open(InitializeCompleteCallback initialize_complete_cb,
53 PacketReadCallback event_cb, PacketReadCallback acl_cb,
84a2b381 54 PacketReadCallback sco_cb, PacketReadCallback iso_cb);
8d217709
L
55 void Close();
56
57 void OnTimeout();
58
59 void HandleIncomingEvent(const hidl_vec<uint8_t>& hci_packet);
60
61 void *lib_handle_;
62 bt_vendor_interface_t *lib_interface_;
63 async::AsyncFdWatcher fd_watcher_;
64 InitializeCompleteCallback initialize_complete_cb_;
65 hci::HciProtocol* hci_;
66
67 PacketReadCallback event_cb_;
68
69 FirmwareStartupTimer *firmware_startup_timer_;
70};
71
72} // namespace implementation
73} // namespace V1_0
74} // namespace bluetooth
75} // namespace hardware
76} // namespace android