summaryrefslogtreecommitdiff
path: root/src/Components
diff options
context:
space:
mode:
authorJF <jf@codingfield.com>2020-06-16 21:15:16 +0200
committerGitea <gitea@fake.local>2020-06-16 21:15:16 +0200
commit3a49bbbae48a62d5252fee0cb6d04002d917c820 (patch)
tree800c2ab76a4609382865ba9fd8b16b9732e5eb03 /src/Components
parenta0e73f5c1a1e652aa6270b7e42a73aee3d12ded6 (diff)
parent9a89ff7f7764df085a59c8a24fe578228a22fc6c (diff)
Merge branch 'develop' of JF/PineTime into master
Diffstat (limited to 'src/Components')
-rw-r--r--src/Components/Ble/BleController.h9
-rw-r--r--src/Components/Ble/NimbleController.cpp7
-rw-r--r--src/Components/Ble/NimbleController.h2
-rw-r--r--src/Components/DateTime/DateTimeController.cpp3
-rw-r--r--src/Components/DateTime/DateTimeController.h3
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