InfiniTime/src/components/ble/BleController.h

71 lines
2.0 KiB
C
Raw Normal View History

#pragma once
#include <array>
2020-11-15 15:05:51 +01:00
#include <cstdint>
namespace Pinetime {
namespace Controllers {
class Ble {
2021-04-24 12:00:45 +03:00
public:
using BleAddress = std::array<uint8_t, 6>;
enum class FirmwareUpdateStates { Idle, Running, Validated, Error };
enum class AddressTypes { Public, Random, RPA_Public, RPA_Random };
enum class ConnectStates { Disconnected, Connected, Airplane };
Ble() = default;
bool IsConnected() const {
return (connectionState == ConnectStates::Connected);
}
void SetConnectState(ConnectStates newState);
ConnectStates GetConnectState() const;
void StartFirmwareUpdate();
void StopFirmwareUpdate();
void FirmwareUpdateTotalBytes(uint32_t totalBytes);
void FirmwareUpdateCurrentBytes(uint32_t currentBytes);
void State(FirmwareUpdateStates state) {
firmwareUpdateState = state;
}
bool IsFirmwareUpdating() const {
return isFirmwareUpdating;
}
uint32_t FirmwareUpdateTotalBytes() const {
return firmwareUpdateTotalBytes;
}
uint32_t FirmwareUpdateCurrentBytes() const {
return firmwareUpdateCurrentBytes;
}
FirmwareUpdateStates State() const {
return firmwareUpdateState;
}
void Address(BleAddress&& addr) {
address = addr;
}
const BleAddress& Address() const {
return address;
}
void AddressType(AddressTypes t) {
addressType = t;
}
void SetPairingKey(uint32_t k) {
pairingKey = k;
}
uint32_t GetPairingKey() const {
return pairingKey;
}
2021-04-24 12:00:45 +03:00
private:
ConnectStates connectionState = ConnectStates::Disconnected;
bool isFirmwareUpdating = false;
uint32_t firmwareUpdateTotalBytes = 0;
uint32_t firmwareUpdateCurrentBytes = 0;
FirmwareUpdateStates firmwareUpdateState = FirmwareUpdateStates::Idle;
BleAddress address;
AddressTypes addressType;
uint32_t pairingKey = 0;
};
}
}