~aleteoryx/muditaos

muditaos/module-bluetooth/Bluetooth/Device.cpp -rw-r--r-- 2.1 KiB
a405cad6Aleteoryx trim readme 6 days ago
                                                                                
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
69
70
71
72
73
74
75
76
77
78
79
80
81
// Copyright (c) 2017-2024, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/blob/master/LICENSE.md

#include "Device.hpp"
#include <btstack_util.h>

Devicei::Devicei(std::string name) : Device(std::move(name))
{
    pageScanRepetitionMode = {};
    clockOffset            = {};
    classOfDevice          = {};
    state                  = DEVICE_STATE::REMOTE_NAME_FAILURE;
    deviceState            = DeviceState::Unknown;
    isPairingSSP           = false;

    memset(address, 0, sizeof(address));
}

Devicei::Devicei(bd_addr_t &address) : Devicei()
{
    setAddress(&address);
}

Devicei &Devicei::operator=(const Devicei &d)
{
    if (&d == this) {
        return *this;
    }
    setAddress(&d.address);
    setName(d.name.data());
    pageScanRepetitionMode = d.pageScanRepetitionMode;
    clockOffset            = d.clockOffset;
    classOfDevice          = d.classOfDevice;
    state                  = d.state;
    deviceState            = d.deviceState;
    isPairingSSP           = d.isPairingSSP;
    return *this;
}

Devicei::Devicei(const Devicei &d) : Devicei(d.name.data())
{
    operator=(d);
}

Devicei &Devicei::operator=(Devicei &&d)
{
    setAddress(&d.address);
    setName(d.name.data());
    pageScanRepetitionMode = d.pageScanRepetitionMode;
    clockOffset            = d.clockOffset;
    classOfDevice          = d.classOfDevice;
    state                  = d.state;
    deviceState            = d.deviceState;
    isPairingSSP           = d.isPairingSSP;
    return *this;
}

Devicei::Devicei(Devicei &&d) noexcept : Devicei(d.name.data())
{
    operator=(d);
}

void Devicei::setAddress(bd_addr_t *addr)
{
    memcpy(&address, addr, sizeof address);
}

bool Devicei::operator==(const Devicei &cmpDevice) const
{
    return (strcmp(cmpDevice.name.data(), name.data()) == 0) && (bd_addr_cmp(cmpDevice.address, address) == 0);
}

bool Devicei::operator!=(const Devicei &cmpDevice) const
{
    return (strcmp(cmpDevice.name.data(), name.data()) != 0) || (bd_addr_cmp(cmpDevice.address, address) != 0);
}

auto Devicei::address_str() const -> const char *
{
    return bd_addr_to_str(address);
}