ref: 9196c18d376d4f18c686bcfec8550f9c8659d5ea
src/components/ble/BleController.h
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 |
#pragma once #include <array> #include <cstdint> namespace Pinetime { namespace Controllers { class Ble { public: using BleAddress = std::array<uint8_t, 6>; enum class FirmwareUpdateStates { Idle, Running, Validated, Error }; enum class AddressTypes { Public, Random, RPA_Public, RPA_Random }; Ble() = default; bool IsConnected() const; void Connect(); void Disconnect(); bool IsRadioEnabled() const; void EnableRadio(); void DisableRadio(); 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; } private: bool isConnected = false; bool isRadioEnabled = true; bool isFirmwareUpdating = false; uint32_t firmwareUpdateTotalBytes = 0; uint32_t firmwareUpdateCurrentBytes = 0; FirmwareUpdateStates firmwareUpdateState = FirmwareUpdateStates::Idle; BleAddress address; AddressTypes addressType; uint32_t pairingKey = 0; }; } } |