summaryrefslogtreecommitdiff
path: root/src/components/ble/BleController.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/ble/BleController.h')
-rw-r--r--src/components/ble/BleController.h45
1 files changed, 45 insertions, 0 deletions
diff --git a/src/components/ble/BleController.h b/src/components/ble/BleController.h
new file mode 100644
index 00000000..3f52ea25
--- /dev/null
+++ b/src/components/ble/BleController.h
@@ -0,0 +1,45 @@
+#pragma once
+
+#include <FreeRTOS.h>
+#include <queue.h>
+#include <array>
+
+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 };
+
+ Ble() = default;
+ bool IsConnected() const {return isConnected;}
+ void Connect();
+ void Disconnect();
+
+ 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;}
+ private:
+ bool isConnected = false;
+ bool isFirmwareUpdating = false;
+ uint32_t firmwareUpdateTotalBytes = 0;
+ uint32_t firmwareUpdateCurrentBytes = 0;
+ FirmwareUpdateStates firmwareUpdateState = FirmwareUpdateStates::Idle;
+ BleAddress address;
+ AddressTypes addressType;
+
+ };
+ }
+} \ No newline at end of file