forked from chromium/chromium
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbluetooth_advertisement_mac.mm
68 lines (55 loc) · 2.34 KB
/
bluetooth_advertisement_mac.mm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "device/bluetooth/bluetooth_advertisement_mac.h"
#include "base/bind.h"
#include "device/bluetooth/bluetooth_adapter_mac.h"
namespace device {
BluetoothAdvertisementMac::BluetoothAdvertisementMac(
std::unique_ptr<BluetoothAdvertisement::UUIDList> service_uuids,
BluetoothAdapter::CreateAdvertisementCallback success_callback,
BluetoothAdapter::AdvertisementErrorCallback error_callback,
BluetoothLowEnergyAdvertisementManagerMac* advertisement_manager)
: service_uuids_(std::move(service_uuids)),
success_callback_(std::move(success_callback)),
error_callback_(std::move(error_callback)),
advertisement_manager_(advertisement_manager),
status_(BluetoothAdvertisementMac::WAITING_FOR_ADAPTER) {}
void BluetoothAdvertisementMac::Unregister(SuccessCallback success_callback,
ErrorCallback error_callback) {
if (status_ == Status::UNREGISTERED) {
std::move(success_callback).Run();
return;
}
status_ = Status::UNREGISTERED;
advertisement_manager_->UnregisterAdvertisement(
this, std::move(success_callback), std::move(error_callback));
}
BluetoothAdvertisementMac::~BluetoothAdvertisementMac() {
// This object should be owned by BluetoothLowEnergyAdvertisementManagerMac,
// and will be cleaned up there.
}
void BluetoothAdvertisementMac::OnAdvertisementPending() {
status_ = Status::ADVERTISEMENT_PENDING;
}
void BluetoothAdvertisementMac::OnAdvertisementError(
base::SingleThreadTaskRunner* task_runner,
BluetoothAdvertisement::ErrorCode error_code) {
status_ = Status::ERROR_ADVERTISING;
task_runner->PostTask(FROM_HERE,
base::BindOnce(std::move(error_callback_), error_code));
}
void BluetoothAdvertisementMac::OnAdvertisementSuccess(
base::SingleThreadTaskRunner* task_runner) {
status_ = Status::ADVERTISING;
task_runner->PostTask(
FROM_HERE,
base::BindOnce(&BluetoothAdvertisementMac::InvokeSuccessCallback, this));
}
void BluetoothAdvertisementMac::OnAdapterReset() {
status_ = Status::UNREGISTERED;
}
void BluetoothAdvertisementMac::InvokeSuccessCallback() {
std::move(success_callback_).Run(this);
}
} // namespace device