Files
MuditaOS/module-bluetooth/Bluetooth/Device.cpp
Adam Dobrowolski 76c924fd5e [EGD-8002] Added SSP, fixed some minor issues, removed obsolete code
ssp seems working
minor crash fixups
copy lacks patched
obsolete code removed
Devicei tests added for added code and cleanup
Added missing tests for new functions
Code cleaned up a bit - mostly moved to cpp
2021-12-09 12:42:33 +01:00

82 lines
2.1 KiB
C++

// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/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) noexcept
{
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);
}