blob: 91fad272711cce1a4bf41fedf64da98ac4ebf616 [file] [log] [blame]
Myles Watson90ee15b2017-02-09 16:47:33 -08001//
2// Copyright 2017 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 <android/hardware/bluetooth/1.0/IBluetoothHci.h>
20
21#include <hidl/MQDescriptor.h>
22
23#include "async_fd_watcher.h"
24#include "hci_packetizer_hikey.h"
25
26namespace android {
27namespace hardware {
28namespace bluetooth {
29namespace V1_0 {
30namespace hikey {
31
32using ::android::hardware::Return;
33using ::android::hardware::hidl_vec;
34
35class BluetoothHci : public IBluetoothHci {
36 public:
37 Return<void> initialize(
38 const ::android::sp<IBluetoothHciCallbacks>& cb) override;
39 Return<void> sendHciCommand(const hidl_vec<uint8_t>& packet) override;
40 Return<void> sendAclData(const hidl_vec<uint8_t>& packet) override;
41 Return<void> sendScoData(const hidl_vec<uint8_t>& packet) override;
42 Return<void> close() override;
43
44 static void OnPacketReady();
45
46 static BluetoothHci* get();
47
48 private:
49 ::android::sp<IBluetoothHciCallbacks> event_cb_;
50 int hci_tty_fd_;
51
52 void HandleIncomingPacket();
53
54 async::AsyncFdWatcher fd_watcher_;
55
56 HciPacketizerHikey hci_packetizer_{BluetoothHci::OnPacketReady};
57};
58
59} // namespace hikey
60} // namespace V1_0
61} // namespace bluetooth
62} // namespace hardware
63} // namespace android