diff options
Diffstat (limited to 'src/Components')
-rw-r--r-- | src/Components/Ble/BleController.h | 9 | ||||
-rw-r--r-- | src/Components/Ble/NimbleController.cpp | 7 | ||||
-rw-r--r-- | src/Components/Ble/NimbleController.h | 2 | ||||
-rw-r--r-- | src/Components/DateTime/DateTimeController.cpp | 3 | ||||
-rw-r--r-- | src/Components/DateTime/DateTimeController.h | 3 |
5 files changed, 20 insertions, 4 deletions
diff --git a/src/Components/Ble/BleController.h b/src/Components/Ble/BleController.h index c47e65b6..3f52ea25 100644 --- a/src/Components/Ble/BleController.h +++ b/src/Components/Ble/BleController.h @@ -2,12 +2,15 @@ #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;} @@ -24,12 +27,18 @@ namespace Pinetime { 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; }; } diff --git a/src/Components/Ble/NimbleController.cpp b/src/Components/Ble/NimbleController.cpp index 4c8035b7..561dbce4 100644 --- a/src/Components/Ble/NimbleController.cpp +++ b/src/Components/Ble/NimbleController.cpp @@ -90,8 +90,13 @@ void NimbleController::Init() { res = ble_hs_id_infer_auto(0, &addrType); ASSERT(res == 0); res = ble_svc_gap_device_name_set(deviceName); - ASSERT(res == 0); + Pinetime::Controllers::Ble::BleAddress address; + res = ble_hs_id_copy_addr(addrType, address.data(), nullptr); + ASSERT(res == 0); + bleController.AddressType((addrType == 0) ? Ble::AddressTypes::Public : Ble::AddressTypes::Random); + bleController.Address(std::move(address)); + res = ble_gatts_start(); ASSERT(res == 0); } diff --git a/src/Components/Ble/NimbleController.h b/src/Components/Ble/NimbleController.h index 7e680607..cf50d78d 100644 --- a/src/Components/Ble/NimbleController.h +++ b/src/Components/Ble/NimbleController.h @@ -50,7 +50,7 @@ namespace Pinetime { AlertNotificationClient alertNotificationClient; CurrentTimeService currentTimeService; - uint8_t addrType; + uint8_t addrType; // 1 = Random, 0 = PUBLIC uint16_t connectionHandle; ble_uuid128_t dfuServiceUuid { diff --git a/src/Components/DateTime/DateTimeController.cpp b/src/Components/DateTime/DateTimeController.cpp index 5cfa08eb..30d9c13f 100644 --- a/src/Components/DateTime/DateTimeController.cpp +++ b/src/Components/DateTime/DateTimeController.cpp @@ -47,7 +47,8 @@ void DateTime::UpdateTime(uint32_t systickCounter) { previousSystickCounter = 0xffffff - (rest - systickCounter); } - currentDateTime += std::chrono::seconds (correctedDelta); + currentDateTime += std::chrono::seconds(correctedDelta); + uptime += std::chrono::seconds(correctedDelta); auto dp = date::floor<date::days>(currentDateTime); auto time = date::make_time(currentDateTime-dp); diff --git a/src/Components/DateTime/DateTimeController.h b/src/Components/DateTime/DateTimeController.h index 1e65bd11..d6020745 100644 --- a/src/Components/DateTime/DateTimeController.h +++ b/src/Components/DateTime/DateTimeController.h @@ -21,6 +21,7 @@ namespace Pinetime { uint8_t Seconds() const { return second; } std::chrono::time_point<std::chrono::system_clock, std::chrono::nanoseconds> CurrentDateTime() const { return currentDateTime; } + std::chrono::seconds Uptime() const { return uptime; } private: uint16_t year = 0; Months month = Months::Unknown; @@ -32,7 +33,7 @@ namespace Pinetime { uint32_t previousSystickCounter = 0; std::chrono::time_point<std::chrono::system_clock, std::chrono::nanoseconds> currentDateTime; - + std::chrono::seconds uptime {0}; }; } }
\ No newline at end of file |