Apply clang-format to all C++ files
This commit is contained in:
parent
718fbdab98
commit
7f45538eb5
|
@ -8,9 +8,9 @@ AlignConsecutiveDeclarations: false
|
|||
AlignEscapedNewlines: Right
|
||||
AlignOperands: Align
|
||||
AlignTrailingComments: true
|
||||
AllowAllArgumentsOnNextLine: true
|
||||
AllowAllArgumentsOnNextLine: false
|
||||
AllowAllConstructorInitializersOnNextLine: true
|
||||
AllowAllParametersOfDeclarationOnNextLine: true
|
||||
AllowAllParametersOfDeclarationOnNextLine: false
|
||||
AllowShortBlocksOnASingleLine: Never
|
||||
AllowShortCaseLabelsOnASingleLine: false
|
||||
AllowShortFunctionsOnASingleLine: None
|
||||
|
@ -83,6 +83,8 @@ IndentGotoLabels: true
|
|||
IndentPPDirectives: BeforeHash
|
||||
IndentWidth: 2
|
||||
IndentWrappedFunctionNames: false
|
||||
# Requires Clang >= 15, could also cause incorrect code formatting:
|
||||
# InsertBraces: true
|
||||
JavaScriptQuotes: Leave
|
||||
JavaScriptWrapImports: true
|
||||
KeepEmptyLinesAtTheStartOfBlocks: true
|
||||
|
|
|
@ -31,6 +31,10 @@ const bool BootloaderVersion::IsValid() {
|
|||
|
||||
void BootloaderVersion::SetVersion(uint32_t v) {
|
||||
BootloaderVersion::version = v;
|
||||
snprintf(BootloaderVersion::versionString, BootloaderVersion::VERSION_STR_LEN, "%ld.%ld.%ld",
|
||||
BootloaderVersion::Major(), BootloaderVersion::Minor(), BootloaderVersion::Patch());
|
||||
snprintf(BootloaderVersion::versionString,
|
||||
BootloaderVersion::VERSION_STR_LEN,
|
||||
"%ld.%ld.%ld",
|
||||
BootloaderVersion::Major(),
|
||||
BootloaderVersion::Minor(),
|
||||
BootloaderVersion::Patch());
|
||||
}
|
||||
|
|
|
@ -12,6 +12,7 @@ namespace Pinetime {
|
|||
static const char* VersionString();
|
||||
static const bool IsValid();
|
||||
static void SetVersion(uint32_t v);
|
||||
|
||||
private:
|
||||
static uint32_t version;
|
||||
static constexpr size_t VERSION_STR_LEN = 12;
|
||||
|
|
|
@ -54,8 +54,7 @@ void AlarmController::ScheduleAlarm() {
|
|||
|
||||
auto now = dateTimeController.CurrentDateTime();
|
||||
alarmTime = now;
|
||||
time_t ttAlarmTime = std::chrono::system_clock::to_time_t(
|
||||
std::chrono::time_point_cast<std::chrono::system_clock::duration>(alarmTime));
|
||||
time_t ttAlarmTime = std::chrono::system_clock::to_time_t(std::chrono::time_point_cast<std::chrono::system_clock::duration>(alarmTime));
|
||||
tm* tmAlarmTime = std::localtime(&ttAlarmTime);
|
||||
|
||||
// If the time being set has already passed today,the alarm should be set for tomorrow
|
||||
|
|
|
@ -26,8 +26,11 @@ namespace {
|
|||
return client->OnCharacteristicsDiscoveryEvent(conn_handle, error, chr);
|
||||
}
|
||||
|
||||
int OnAlertNotificationDescriptorDiscoveryEventCallback(
|
||||
uint16_t conn_handle, const struct ble_gatt_error* error, uint16_t chr_val_handle, const struct ble_gatt_dsc* dsc, void* arg) {
|
||||
int OnAlertNotificationDescriptorDiscoveryEventCallback(uint16_t conn_handle,
|
||||
const struct ble_gatt_error* error,
|
||||
uint16_t chr_val_handle,
|
||||
const struct ble_gatt_dsc* dsc,
|
||||
void* arg) {
|
||||
auto client = static_cast<AlertNotificationClient*>(arg);
|
||||
return client->OnDescriptorDiscoveryEventCallback(conn_handle, error, chr_val_handle, dsc);
|
||||
}
|
||||
|
|
|
@ -18,6 +18,7 @@ namespace Pinetime {
|
|||
|
||||
int OnBatteryServiceRequested(uint16_t connectionHandle, uint16_t attributeHandle, ble_gatt_access_ctxt* context);
|
||||
void NotifyBatteryLevel(uint16_t connectionHandle, uint8_t level);
|
||||
|
||||
private:
|
||||
Controllers::Battery& batteryController;
|
||||
static constexpr uint16_t batteryInformationServiceId {0x180F};
|
||||
|
|
|
@ -85,10 +85,21 @@ int CurrentTimeClient::OnCurrentTimeReadResult(uint16_t conn_handle, const ble_g
|
|||
// TODO check that attribute->handle equals the handle discovered in OnCharacteristicDiscoveryEvent
|
||||
CtsData result;
|
||||
os_mbuf_copydata(attribute->om, 0, sizeof(CtsData), &result);
|
||||
NRF_LOG_INFO(
|
||||
"Received data: %d-%d-%d %d:%d:%d", result.year, result.month, result.dayofmonth, result.hour, result.minute, result.second);
|
||||
dateTimeController.SetTime(
|
||||
result.year, result.month, result.dayofmonth, 0, result.hour, result.minute, result.second, nrf_rtc_counter_get(portNRF_RTC_REG));
|
||||
NRF_LOG_INFO("Received data: %d-%d-%d %d:%d:%d",
|
||||
result.year,
|
||||
result.month,
|
||||
result.dayofmonth,
|
||||
result.hour,
|
||||
result.minute,
|
||||
result.second);
|
||||
dateTimeController.SetTime(result.year,
|
||||
result.month,
|
||||
result.dayofmonth,
|
||||
0,
|
||||
result.hour,
|
||||
result.minute,
|
||||
result.second,
|
||||
nrf_rtc_counter_get(portNRF_RTC_REG));
|
||||
} else {
|
||||
NRF_LOG_INFO("Error retrieving current time: %d", error->status);
|
||||
}
|
||||
|
|
|
@ -29,11 +29,22 @@ int CurrentTimeService::OnTimeAccessed(uint16_t conn_handle, uint16_t attr_handl
|
|||
CtsData result;
|
||||
os_mbuf_copydata(ctxt->om, 0, sizeof(CtsData), &result);
|
||||
|
||||
NRF_LOG_INFO(
|
||||
"Received data: %d-%d-%d %d:%d:%d", result.year, result.month, result.dayofmonth, result.hour, result.minute, result.second);
|
||||
NRF_LOG_INFO("Received data: %d-%d-%d %d:%d:%d",
|
||||
result.year,
|
||||
result.month,
|
||||
result.dayofmonth,
|
||||
result.hour,
|
||||
result.minute,
|
||||
result.second);
|
||||
|
||||
m_dateTimeController.SetTime(
|
||||
result.year, result.month, result.dayofmonth, 0, result.hour, result.minute, result.second, nrf_rtc_counter_get(portNRF_RTC_REG));
|
||||
m_dateTimeController.SetTime(result.year,
|
||||
result.month,
|
||||
result.dayofmonth,
|
||||
0,
|
||||
result.hour,
|
||||
result.minute,
|
||||
result.second,
|
||||
nrf_rtc_counter_get(portNRF_RTC_REG));
|
||||
|
||||
} else if (ctxt->op == BLE_GATT_ACCESS_OP_READ_CHR) {
|
||||
CtsData currentDateTime;
|
||||
|
|
|
@ -57,7 +57,8 @@ int HeartRateService::OnHeartRateRequested(uint16_t connectionHandle, uint16_t a
|
|||
}
|
||||
|
||||
void HeartRateService::OnNewHeartRateValue(uint8_t heartRateValue) {
|
||||
if(!heartRateMeasurementNotificationEnable) return;
|
||||
if (!heartRateMeasurementNotificationEnable)
|
||||
return;
|
||||
|
||||
uint8_t buffer[2] = {0, heartRateController.HeartRate()}; // [0] = flags, [1] = hr value
|
||||
auto* om = ble_hs_mbuf_from_flat(buffer, 2);
|
||||
|
@ -72,11 +73,11 @@ void HeartRateService::OnNewHeartRateValue(uint8_t heartRateValue) {
|
|||
}
|
||||
|
||||
void HeartRateService::SubscribeNotification(uint16_t connectionHandle, uint16_t attributeHandle) {
|
||||
if(attributeHandle == heartRateMeasurementHandle)
|
||||
if (attributeHandle == heartRateMeasurementHandle)
|
||||
heartRateMeasurementNotificationEnable = true;
|
||||
}
|
||||
|
||||
void HeartRateService::UnsubscribeNotification(uint16_t connectionHandle, uint16_t attributeHandle) {
|
||||
if(attributeHandle == heartRateMeasurementHandle)
|
||||
if (attributeHandle == heartRateMeasurementHandle)
|
||||
heartRateMeasurementNotificationEnable = false;
|
||||
}
|
|
@ -8,10 +8,8 @@ using namespace Pinetime::Controllers;
|
|||
namespace {
|
||||
// 0003yyxx-78fc-48fe-8e23-433b3a1942d0
|
||||
constexpr ble_uuid128_t CharUuid(uint8_t x, uint8_t y) {
|
||||
return ble_uuid128_t{
|
||||
.u = {.type = BLE_UUID_TYPE_128},
|
||||
.value = { 0xd0, 0x42, 0x19, 0x3a, 0x3b, 0x43, 0x23, 0x8e, 0xfe, 0x48, 0xfc, 0x78, x, y, 0x03, 0x00 }
|
||||
};
|
||||
return ble_uuid128_t {.u = {.type = BLE_UUID_TYPE_128},
|
||||
.value = {0xd0, 0x42, 0x19, 0x3a, 0x3b, 0x43, 0x23, 0x8e, 0xfe, 0x48, 0xfc, 0x78, x, y, 0x03, 0x00}};
|
||||
}
|
||||
|
||||
// 00030000-78fc-48fe-8e23-433b3a1942d0
|
||||
|
@ -45,11 +43,7 @@ MotionService::MotionService(Pinetime::System::SystemTask& system, Controllers::
|
|||
.val_handle = &motionValuesHandle},
|
||||
{0}},
|
||||
serviceDefinition {
|
||||
{
|
||||
.type = BLE_GATT_SVC_TYPE_PRIMARY,
|
||||
.uuid = &motionServiceUuid.u,
|
||||
.characteristics = characteristicDefinition
|
||||
},
|
||||
{.type = BLE_GATT_SVC_TYPE_PRIMARY, .uuid = &motionServiceUuid.u, .characteristics = characteristicDefinition},
|
||||
{0},
|
||||
} {
|
||||
// TODO refactor to prevent this loop dependency (service depends on controller and controller depends on service)
|
||||
|
@ -72,8 +66,8 @@ int MotionService::OnStepCountRequested(uint16_t connectionHandle, uint16_t attr
|
|||
|
||||
int res = os_mbuf_append(context->om, &buffer, 4);
|
||||
return (res == 0) ? 0 : BLE_ATT_ERR_INSUFFICIENT_RES;
|
||||
} else if(attributeHandle == motionValuesHandle) {
|
||||
int16_t buffer[3] = { motionController.X(), motionController.Y(), motionController.Z() };
|
||||
} else if (attributeHandle == motionValuesHandle) {
|
||||
int16_t buffer[3] = {motionController.X(), motionController.Y(), motionController.Z()};
|
||||
|
||||
int res = os_mbuf_append(context->om, buffer, 3 * sizeof(int16_t));
|
||||
return (res == 0) ? 0 : BLE_ATT_ERR_INSUFFICIENT_RES;
|
||||
|
@ -82,7 +76,8 @@ int MotionService::OnStepCountRequested(uint16_t connectionHandle, uint16_t attr
|
|||
}
|
||||
|
||||
void MotionService::OnNewStepCountValue(uint32_t stepCount) {
|
||||
if(!stepCountNoficationEnabled) return;
|
||||
if (!stepCountNoficationEnabled)
|
||||
return;
|
||||
|
||||
uint32_t buffer = stepCount;
|
||||
auto* om = ble_hs_mbuf_from_flat(&buffer, 4);
|
||||
|
@ -96,9 +91,10 @@ void MotionService::OnNewStepCountValue(uint32_t stepCount) {
|
|||
ble_gattc_notify_custom(connectionHandle, stepCountHandle, om);
|
||||
}
|
||||
void MotionService::OnNewMotionValues(int16_t x, int16_t y, int16_t z) {
|
||||
if(!motionValuesNoficationEnabled) return;
|
||||
if (!motionValuesNoficationEnabled)
|
||||
return;
|
||||
|
||||
int16_t buffer[3] = { motionController.X(), motionController.Y(), motionController.Z() };
|
||||
int16_t buffer[3] = {motionController.X(), motionController.Y(), motionController.Z()};
|
||||
auto* om = ble_hs_mbuf_from_flat(buffer, 3 * sizeof(int16_t));
|
||||
|
||||
uint16_t connectionHandle = system.nimble().connHandle();
|
||||
|
@ -111,15 +107,15 @@ void MotionService::OnNewMotionValues(int16_t x, int16_t y, int16_t z) {
|
|||
}
|
||||
|
||||
void MotionService::SubscribeNotification(uint16_t connectionHandle, uint16_t attributeHandle) {
|
||||
if(attributeHandle == stepCountHandle)
|
||||
if (attributeHandle == stepCountHandle)
|
||||
stepCountNoficationEnabled = true;
|
||||
else if(attributeHandle == motionValuesHandle)
|
||||
else if (attributeHandle == motionValuesHandle)
|
||||
motionValuesNoficationEnabled = true;
|
||||
}
|
||||
|
||||
void MotionService::UnsubscribeNotification(uint16_t connectionHandle, uint16_t attributeHandle) {
|
||||
if(attributeHandle == stepCountHandle)
|
||||
if (attributeHandle == stepCountHandle)
|
||||
stepCountNoficationEnabled = false;
|
||||
else if(attributeHandle == motionValuesHandle)
|
||||
else if (attributeHandle == motionValuesHandle)
|
||||
motionValuesNoficationEnabled = false;
|
||||
}
|
||||
|
|
|
@ -22,10 +22,8 @@
|
|||
namespace {
|
||||
// 0000yyxx-78fc-48fe-8e23-433b3a1942d0
|
||||
constexpr ble_uuid128_t CharUuid(uint8_t x, uint8_t y) {
|
||||
return ble_uuid128_t{
|
||||
.u = {.type = BLE_UUID_TYPE_128},
|
||||
.value = { 0xd0, 0x42, 0x19, 0x3a, 0x3b, 0x43, 0x23, 0x8e, 0xfe, 0x48, 0xfc, 0x78, x, y, 0x00, 0x00 }
|
||||
};
|
||||
return ble_uuid128_t {.u = {.type = BLE_UUID_TYPE_128},
|
||||
.value = {0xd0, 0x42, 0x19, 0x3a, 0x3b, 0x43, 0x23, 0x8e, 0xfe, 0x48, 0xfc, 0x78, x, y, 0x00, 0x00}};
|
||||
}
|
||||
|
||||
// 00000000-78fc-48fe-8e23-433b3a1942d0
|
||||
|
@ -111,8 +109,7 @@ Pinetime::Controllers::MusicService::MusicService(Pinetime::System::SystemTask&
|
|||
.flags = BLE_GATT_CHR_F_WRITE | BLE_GATT_CHR_F_READ};
|
||||
characteristicDefinition[13] = {0};
|
||||
|
||||
serviceDefinition[0] = {
|
||||
.type = BLE_GATT_SVC_TYPE_PRIMARY, .uuid = &msUuid.u, .characteristics = characteristicDefinition};
|
||||
serviceDefinition[0] = {.type = BLE_GATT_SVC_TYPE_PRIMARY, .uuid = &msUuid.u, .characteristics = characteristicDefinition};
|
||||
serviceDefinition[1] = {0};
|
||||
}
|
||||
|
||||
|
@ -137,9 +134,9 @@ int Pinetime::Controllers::MusicService::OnCommand(uint16_t conn_handle, uint16_
|
|||
os_mbuf_copydata(ctxt->om, 0, bufferSize, data);
|
||||
|
||||
if (notifSize > bufferSize) {
|
||||
data[bufferSize-1] = '.';
|
||||
data[bufferSize-2] = '.';
|
||||
data[bufferSize-3] = '.';
|
||||
data[bufferSize - 1] = '.';
|
||||
data[bufferSize - 2] = '.';
|
||||
data[bufferSize - 3] = '.';
|
||||
}
|
||||
data[bufferSize] = '\0';
|
||||
|
||||
|
@ -157,7 +154,8 @@ int Pinetime::Controllers::MusicService::OnCommand(uint16_t conn_handle, uint16_
|
|||
if (playing) {
|
||||
trackProgressUpdateTime = xTaskGetTickCount();
|
||||
} else {
|
||||
trackProgress += static_cast<int>((static_cast<float>(xTaskGetTickCount() - trackProgressUpdateTime) / 1024.0f) * getPlaybackSpeed());
|
||||
trackProgress +=
|
||||
static_cast<int>((static_cast<float>(xTaskGetTickCount() - trackProgressUpdateTime) / 1024.0f) * getPlaybackSpeed());
|
||||
}
|
||||
} else if (ble_uuid_cmp(ctxt->chr->uuid, &msRepeatCharUuid.u) == 0) {
|
||||
repeat = s[0];
|
||||
|
@ -201,7 +199,8 @@ float Pinetime::Controllers::MusicService::getPlaybackSpeed() const {
|
|||
|
||||
int Pinetime::Controllers::MusicService::getProgress() const {
|
||||
if (isPlaying()) {
|
||||
return trackProgress + static_cast<int>((static_cast<float>(xTaskGetTickCount() - trackProgressUpdateTime) / 1024.0f) * getPlaybackSpeed());
|
||||
return trackProgress +
|
||||
static_cast<int>((static_cast<float>(xTaskGetTickCount() - trackProgressUpdateTime) / 1024.0f) * getPlaybackSpeed());
|
||||
}
|
||||
return trackProgress;
|
||||
}
|
||||
|
|
|
@ -46,15 +46,23 @@ namespace {
|
|||
} // namespace
|
||||
|
||||
Pinetime::Controllers::NavigationService::NavigationService(Pinetime::System::SystemTask& system) : m_system(system) {
|
||||
characteristicDefinition[0] = {
|
||||
.uuid = &navFlagCharUuid.u, .access_cb = NAVCallback, .arg = this, .flags = BLE_GATT_CHR_F_WRITE | BLE_GATT_CHR_F_READ};
|
||||
characteristicDefinition[0] = {.uuid = &navFlagCharUuid.u,
|
||||
.access_cb = NAVCallback,
|
||||
.arg = this,
|
||||
.flags = BLE_GATT_CHR_F_WRITE | BLE_GATT_CHR_F_READ};
|
||||
|
||||
characteristicDefinition[1] = {
|
||||
.uuid = &navNarrativeCharUuid.u, .access_cb = NAVCallback, .arg = this, .flags = BLE_GATT_CHR_F_WRITE | BLE_GATT_CHR_F_READ};
|
||||
characteristicDefinition[2] = {
|
||||
.uuid = &navManDistCharUuid.u, .access_cb = NAVCallback, .arg = this, .flags = BLE_GATT_CHR_F_WRITE | BLE_GATT_CHR_F_READ};
|
||||
characteristicDefinition[3] = {
|
||||
.uuid = &navProgressCharUuid.u, .access_cb = NAVCallback, .arg = this, .flags = BLE_GATT_CHR_F_WRITE | BLE_GATT_CHR_F_READ};
|
||||
characteristicDefinition[1] = {.uuid = &navNarrativeCharUuid.u,
|
||||
.access_cb = NAVCallback,
|
||||
.arg = this,
|
||||
.flags = BLE_GATT_CHR_F_WRITE | BLE_GATT_CHR_F_READ};
|
||||
characteristicDefinition[2] = {.uuid = &navManDistCharUuid.u,
|
||||
.access_cb = NAVCallback,
|
||||
.arg = this,
|
||||
.flags = BLE_GATT_CHR_F_WRITE | BLE_GATT_CHR_F_READ};
|
||||
characteristicDefinition[3] = {.uuid = &navProgressCharUuid.u,
|
||||
.access_cb = NAVCallback,
|
||||
.arg = this,
|
||||
.flags = BLE_GATT_CHR_F_WRITE | BLE_GATT_CHR_F_READ};
|
||||
|
||||
characteristicDefinition[4] = {0};
|
||||
|
||||
|
|
|
@ -223,7 +223,7 @@ int NimbleController::OnGAPEvent(ble_gap_event* event) {
|
|||
currentTimeClient.Reset();
|
||||
alertNotificationClient.Reset();
|
||||
connectionHandle = BLE_HS_CONN_HANDLE_NONE;
|
||||
if(bleController.IsConnected()) {
|
||||
if (bleController.IsConnected()) {
|
||||
bleController.Disconnect();
|
||||
fastAdvCount = 0;
|
||||
StartAdvertising();
|
||||
|
|
|
@ -127,7 +127,8 @@ namespace Pinetime {
|
|||
{.uuid = &weatherControlCharUuid.u, .access_cb = WeatherCallback, .arg = this, .flags = BLE_GATT_CHR_F_WRITE | BLE_GATT_CHR_F_READ},
|
||||
{nullptr}};
|
||||
const struct ble_gatt_svc_def serviceDefinition[2] = {
|
||||
{.type = BLE_GATT_SVC_TYPE_PRIMARY, .uuid = &weatherUuid.u, .characteristics = characteristicDefinition}, {0}};
|
||||
{.type = BLE_GATT_SVC_TYPE_PRIMARY, .uuid = &weatherUuid.u, .characteristics = characteristicDefinition},
|
||||
{0}};
|
||||
|
||||
uint16_t eventHandle {};
|
||||
|
||||
|
|
|
@ -19,8 +19,14 @@ void DateTime::SetCurrentTime(std::chrono::time_point<std::chrono::system_clock,
|
|||
UpdateTime(previousSystickCounter); // Update internal state without updating the time
|
||||
}
|
||||
|
||||
void DateTime::SetTime(
|
||||
uint16_t year, uint8_t month, uint8_t day, uint8_t dayOfWeek, uint8_t hour, uint8_t minute, uint8_t second, uint32_t systickCounter) {
|
||||
void DateTime::SetTime(uint16_t year,
|
||||
uint8_t month,
|
||||
uint8_t day,
|
||||
uint8_t dayOfWeek,
|
||||
uint8_t hour,
|
||||
uint8_t minute,
|
||||
uint8_t second,
|
||||
uint32_t systickCounter) {
|
||||
std::tm tm = {
|
||||
/* .tm_sec = */ second,
|
||||
/* .tm_min = */ minute,
|
||||
|
@ -129,16 +135,16 @@ std::string DateTime::FormattedTime() {
|
|||
// Return time as a string in 12- or 24-hour format
|
||||
char buff[9];
|
||||
if (settingsController.GetClockType() == ClockType::H12) {
|
||||
uint8_t hour12;
|
||||
const char* amPmStr;
|
||||
if (hour < 12) {
|
||||
hour12 = (hour == 0) ? 12 : hour;
|
||||
amPmStr = "AM";
|
||||
} else {
|
||||
hour12 = (hour == 12) ? 12 : hour - 12;
|
||||
amPmStr = "PM";
|
||||
}
|
||||
sprintf(buff, "%i:%02i %s", hour12, minute, amPmStr);
|
||||
uint8_t hour12;
|
||||
const char* amPmStr;
|
||||
if (hour < 12) {
|
||||
hour12 = (hour == 0) ? 12 : hour;
|
||||
amPmStr = "AM";
|
||||
} else {
|
||||
hour12 = (hour == 12) ? 12 : hour - 12;
|
||||
amPmStr = "PM";
|
||||
}
|
||||
sprintf(buff, "%i:%02i %s", hour12, minute, amPmStr);
|
||||
} else {
|
||||
sprintf(buff, "%02i:%02i", hour, minute);
|
||||
}
|
||||
|
|
|
@ -95,8 +95,8 @@ int FS::DirRewind(lfs_dir_t* dir) {
|
|||
int FS::DirCreate(const char* path) {
|
||||
return lfs_mkdir(&lfs, path);
|
||||
}
|
||||
int FS::Rename(const char* oldPath, const char* newPath){
|
||||
return lfs_rename(&lfs,oldPath,newPath);
|
||||
int FS::Rename(const char* oldPath, const char* newPath) {
|
||||
return lfs_rename(&lfs, oldPath, newPath);
|
||||
}
|
||||
int FS::Stat(const char* path, lfs_info* info) {
|
||||
return lfs_stat(&lfs, path, info);
|
||||
|
|
|
@ -26,12 +26,12 @@ void Settings::LoadSettingsFromFile() {
|
|||
SettingsData bufferSettings;
|
||||
lfs_file_t settingsFile;
|
||||
|
||||
if ( fs.FileOpen(&settingsFile, "/settings.dat", LFS_O_RDONLY) != LFS_ERR_OK) {
|
||||
if (fs.FileOpen(&settingsFile, "/settings.dat", LFS_O_RDONLY) != LFS_ERR_OK) {
|
||||
return;
|
||||
}
|
||||
fs.FileRead(&settingsFile, reinterpret_cast<uint8_t*>(&bufferSettings), sizeof(settings));
|
||||
fs.FileClose(&settingsFile);
|
||||
if ( bufferSettings.version == settingsVersion ) {
|
||||
if (bufferSettings.version == settingsVersion) {
|
||||
settings = bufferSettings;
|
||||
}
|
||||
}
|
||||
|
@ -39,7 +39,7 @@ void Settings::LoadSettingsFromFile() {
|
|||
void Settings::SaveSettingsToFile() {
|
||||
lfs_file_t settingsFile;
|
||||
|
||||
if ( fs.FileOpen(&settingsFile, "/settings.dat", LFS_O_WRONLY | LFS_O_CREAT) != LFS_ERR_OK) {
|
||||
if (fs.FileOpen(&settingsFile, "/settings.dat", LFS_O_WRONLY | LFS_O_CREAT) != LFS_ERR_OK) {
|
||||
return;
|
||||
}
|
||||
fs.FileWrite(&settingsFile, reinterpret_cast<uint8_t*>(&settings), sizeof(settings));
|
||||
|
|
|
@ -140,15 +140,14 @@ namespace Pinetime {
|
|||
return settings.screenTimeOut;
|
||||
};
|
||||
|
||||
void SetShakeThreshold(uint16_t thresh){
|
||||
if(settings.shakeWakeThreshold != thresh){
|
||||
settings.shakeWakeThreshold = thresh;
|
||||
settingsChanged = true;
|
||||
void SetShakeThreshold(uint16_t thresh) {
|
||||
if (settings.shakeWakeThreshold != thresh) {
|
||||
settings.shakeWakeThreshold = thresh;
|
||||
settingsChanged = true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
int16_t GetShakeThreshold() const{
|
||||
int16_t GetShakeThreshold() const {
|
||||
return settings.shakeWakeThreshold;
|
||||
}
|
||||
|
||||
|
@ -202,13 +201,13 @@ namespace Pinetime {
|
|||
return settings.stepsGoal;
|
||||
};
|
||||
|
||||
void SetBleRadioEnabled(bool enabled) {
|
||||
bleRadioEnabled = enabled;
|
||||
};
|
||||
void SetBleRadioEnabled(bool enabled) {
|
||||
bleRadioEnabled = enabled;
|
||||
};
|
||||
|
||||
bool GetBleRadioEnabled() const {
|
||||
return bleRadioEnabled;
|
||||
};
|
||||
bool GetBleRadioEnabled() const {
|
||||
return bleRadioEnabled;
|
||||
};
|
||||
|
||||
private:
|
||||
Pinetime::Controllers::FS& fs;
|
||||
|
|
|
@ -5,23 +5,41 @@ using namespace Pinetime::Controllers;
|
|||
|
||||
lv_color_t Pinetime::Applications::Convert(Pinetime::Controllers::Settings::Colors color) {
|
||||
switch (color) {
|
||||
case Pinetime::Controllers::Settings::Colors::White: return LV_COLOR_WHITE;
|
||||
case Pinetime::Controllers::Settings::Colors::Silver: return LV_COLOR_SILVER;
|
||||
case Pinetime::Controllers::Settings::Colors::Gray: return LV_COLOR_GRAY;
|
||||
case Pinetime::Controllers::Settings::Colors::Black: return LV_COLOR_BLACK;
|
||||
case Pinetime::Controllers::Settings::Colors::Red: return LV_COLOR_RED;
|
||||
case Pinetime::Controllers::Settings::Colors::Maroon: return LV_COLOR_MAKE(0xb0, 0x0, 0x0);
|
||||
case Pinetime::Controllers::Settings::Colors::Yellow: return LV_COLOR_YELLOW;
|
||||
case Pinetime::Controllers::Settings::Colors::Olive: return LV_COLOR_MAKE(0xb0, 0xb0, 0x0);
|
||||
case Pinetime::Controllers::Settings::Colors::Lime: return LV_COLOR_LIME;
|
||||
case Pinetime::Controllers::Settings::Colors::Green: return LV_COLOR_MAKE(0x0, 0xb0, 0x0);
|
||||
case Pinetime::Controllers::Settings::Colors::Cyan: return LV_COLOR_CYAN;
|
||||
case Pinetime::Controllers::Settings::Colors::Teal: return LV_COLOR_MAKE(0x0, 0xb0, 0xb0);
|
||||
case Pinetime::Controllers::Settings::Colors::Blue: return LV_COLOR_BLUE;
|
||||
case Pinetime::Controllers::Settings::Colors::Navy: return LV_COLOR_MAKE(0x0, 0x0, 0xb0);
|
||||
case Pinetime::Controllers::Settings::Colors::Magenta: return LV_COLOR_MAGENTA;
|
||||
case Pinetime::Controllers::Settings::Colors::Purple: return LV_COLOR_MAKE(0xb0, 0x0, 0xb0);
|
||||
case Pinetime::Controllers::Settings::Colors::Orange: return LV_COLOR_ORANGE;
|
||||
default: return LV_COLOR_WHITE;
|
||||
case Pinetime::Controllers::Settings::Colors::White:
|
||||
return LV_COLOR_WHITE;
|
||||
case Pinetime::Controllers::Settings::Colors::Silver:
|
||||
return LV_COLOR_SILVER;
|
||||
case Pinetime::Controllers::Settings::Colors::Gray:
|
||||
return LV_COLOR_GRAY;
|
||||
case Pinetime::Controllers::Settings::Colors::Black:
|
||||
return LV_COLOR_BLACK;
|
||||
case Pinetime::Controllers::Settings::Colors::Red:
|
||||
return LV_COLOR_RED;
|
||||
case Pinetime::Controllers::Settings::Colors::Maroon:
|
||||
return LV_COLOR_MAKE(0xb0, 0x0, 0x0);
|
||||
case Pinetime::Controllers::Settings::Colors::Yellow:
|
||||
return LV_COLOR_YELLOW;
|
||||
case Pinetime::Controllers::Settings::Colors::Olive:
|
||||
return LV_COLOR_MAKE(0xb0, 0xb0, 0x0);
|
||||
case Pinetime::Controllers::Settings::Colors::Lime:
|
||||
return LV_COLOR_LIME;
|
||||
case Pinetime::Controllers::Settings::Colors::Green:
|
||||
return LV_COLOR_MAKE(0x0, 0xb0, 0x0);
|
||||
case Pinetime::Controllers::Settings::Colors::Cyan:
|
||||
return LV_COLOR_CYAN;
|
||||
case Pinetime::Controllers::Settings::Colors::Teal:
|
||||
return LV_COLOR_MAKE(0x0, 0xb0, 0xb0);
|
||||
case Pinetime::Controllers::Settings::Colors::Blue:
|
||||
return LV_COLOR_BLUE;
|
||||
case Pinetime::Controllers::Settings::Colors::Navy:
|
||||
return LV_COLOR_MAKE(0x0, 0x0, 0xb0);
|
||||
case Pinetime::Controllers::Settings::Colors::Magenta:
|
||||
return LV_COLOR_MAGENTA;
|
||||
case Pinetime::Controllers::Settings::Colors::Purple:
|
||||
return LV_COLOR_MAKE(0xb0, 0x0, 0xb0);
|
||||
case Pinetime::Controllers::Settings::Colors::Orange:
|
||||
return LV_COLOR_ORANGE;
|
||||
default:
|
||||
return LV_COLOR_WHITE;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -348,13 +348,21 @@ void DisplayApp::LoadApp(Apps app, DisplayApp::FullRefreshDirections direction)
|
|||
break;
|
||||
|
||||
case Apps::Notifications:
|
||||
currentScreen = std::make_unique<Screens::Notifications>(
|
||||
this, notificationManager, systemTask->nimble().alertService(), motorController, *systemTask, Screens::Notifications::Modes::Normal);
|
||||
currentScreen = std::make_unique<Screens::Notifications>(this,
|
||||
notificationManager,
|
||||
systemTask->nimble().alertService(),
|
||||
motorController,
|
||||
*systemTask,
|
||||
Screens::Notifications::Modes::Normal);
|
||||
ReturnApp(Apps::Clock, FullRefreshDirections::Up, TouchEvents::SwipeUp);
|
||||
break;
|
||||
case Apps::NotificationsPreview:
|
||||
currentScreen = std::make_unique<Screens::Notifications>(
|
||||
this, notificationManager, systemTask->nimble().alertService(), motorController, *systemTask, Screens::Notifications::Modes::Preview);
|
||||
currentScreen = std::make_unique<Screens::Notifications>(this,
|
||||
notificationManager,
|
||||
systemTask->nimble().alertService(),
|
||||
motorController,
|
||||
*systemTask,
|
||||
Screens::Notifications::Modes::Preview);
|
||||
ReturnApp(Apps::Clock, FullRefreshDirections::Up, TouchEvents::SwipeUp);
|
||||
break;
|
||||
case Apps::Timer:
|
||||
|
@ -366,8 +374,12 @@ void DisplayApp::LoadApp(Apps app, DisplayApp::FullRefreshDirections direction)
|
|||
|
||||
// Settings
|
||||
case Apps::QuickSettings:
|
||||
currentScreen = std::make_unique<Screens::QuickSettings>(
|
||||
this, batteryController, dateTimeController, brightnessController, motorController, settingsController);
|
||||
currentScreen = std::make_unique<Screens::QuickSettings>(this,
|
||||
batteryController,
|
||||
dateTimeController,
|
||||
brightnessController,
|
||||
motorController,
|
||||
settingsController);
|
||||
ReturnApp(Apps::Clock, FullRefreshDirections::LeftAnim, TouchEvents::SwipeLeft);
|
||||
break;
|
||||
case Apps::Settings:
|
||||
|
@ -419,8 +431,14 @@ void DisplayApp::LoadApp(Apps app, DisplayApp::FullRefreshDirections direction)
|
|||
ReturnApp(Apps::Settings, FullRefreshDirections::Down, TouchEvents::SwipeDown);
|
||||
break;
|
||||
case Apps::SysInfo:
|
||||
currentScreen = std::make_unique<Screens::SystemInfo>(
|
||||
this, dateTimeController, batteryController, brightnessController, bleController, watchdog, motionController, touchPanel);
|
||||
currentScreen = std::make_unique<Screens::SystemInfo>(this,
|
||||
dateTimeController,
|
||||
batteryController,
|
||||
brightnessController,
|
||||
bleController,
|
||||
watchdog,
|
||||
motionController,
|
||||
touchPanel);
|
||||
ReturnApp(Apps::Settings, FullRefreshDirections::Down, TouchEvents::SwipeDown);
|
||||
break;
|
||||
case Apps::FlashLight:
|
||||
|
|
|
@ -88,7 +88,7 @@ namespace Pinetime {
|
|||
Pinetime::Controllers::MotionController& motionController;
|
||||
Pinetime::Controllers::TimerController& timerController;
|
||||
Pinetime::Controllers::AlarmController& alarmController;
|
||||
Pinetime::Controllers::BrightnessController &brightnessController;
|
||||
Pinetime::Controllers::BrightnessController& brightnessController;
|
||||
Pinetime::Controllers::TouchHandler& touchHandler;
|
||||
|
||||
Pinetime::Controllers::FirmwareValidator validator;
|
||||
|
|
|
@ -26,7 +26,6 @@ DisplayApp::DisplayApp(Drivers::St7789& lcd,
|
|||
Pinetime::Controllers::BrightnessController& brightnessController,
|
||||
Pinetime::Controllers::TouchHandler& touchHandler)
|
||||
: lcd {lcd}, bleController {bleController} {
|
||||
|
||||
}
|
||||
|
||||
void DisplayApp::Start() {
|
||||
|
@ -121,5 +120,4 @@ void DisplayApp::PushMessage(Display::Messages msg) {
|
|||
}
|
||||
|
||||
void DisplayApp::Register(Pinetime::System::SystemTask* systemTask) {
|
||||
|
||||
}
|
||||
|
|
|
@ -61,7 +61,9 @@ namespace Pinetime {
|
|||
Pinetime::Controllers::BrightnessController& brightnessController,
|
||||
Pinetime::Controllers::TouchHandler& touchHandler);
|
||||
void Start();
|
||||
void Start(Pinetime::System::BootErrors){ Start(); };
|
||||
void Start(Pinetime::System::BootErrors) {
|
||||
Start();
|
||||
};
|
||||
void PushMessage(Pinetime::Applications::Display::Messages msg);
|
||||
void Register(Pinetime::System::SystemTask* systemTask);
|
||||
|
||||
|
|
|
@ -20,7 +20,6 @@ namespace Pinetime {
|
|||
LittleVgl& operator=(LittleVgl&&) = delete;
|
||||
|
||||
void Init() {
|
||||
|
||||
}
|
||||
|
||||
void FlushDisplay(const lv_area_t* area, lv_color_t* color_p) {
|
||||
|
@ -33,7 +32,6 @@ namespace Pinetime {
|
|||
void SetNewTapEvent(uint16_t x, uint16_t y) {
|
||||
}
|
||||
void SetNewTouchPoint(uint16_t x, uint16_t y, bool contact) {
|
||||
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
|
@ -195,8 +195,13 @@ bool LittleVgl::GetTouchPadInfo(lv_indev_data_t* ptr) {
|
|||
|
||||
void LittleVgl::InitTheme() {
|
||||
|
||||
lv_theme_t* th = lv_pinetime_theme_init(
|
||||
LV_COLOR_WHITE, LV_COLOR_SILVER, 0, &jetbrains_mono_bold_20, &jetbrains_mono_bold_20, &jetbrains_mono_bold_20, &jetbrains_mono_bold_20);
|
||||
lv_theme_t* th = lv_pinetime_theme_init(LV_COLOR_WHITE,
|
||||
LV_COLOR_SILVER,
|
||||
0,
|
||||
&jetbrains_mono_bold_20,
|
||||
&jetbrains_mono_bold_20,
|
||||
&jetbrains_mono_bold_20,
|
||||
&jetbrains_mono_bold_20);
|
||||
|
||||
lv_theme_set_act(th);
|
||||
}
|
||||
|
|
|
@ -300,8 +300,12 @@ void Alarm::ShowInfo() {
|
|||
auto minToAlarm = (timeToAlarm % 3600) / 60;
|
||||
auto secToAlarm = timeToAlarm % 60;
|
||||
|
||||
lv_label_set_text_fmt(
|
||||
txtMessage, "Time to\nalarm:\n%2lu Days\n%2lu Hours\n%2lu Minutes\n%2lu Seconds", daysToAlarm, hrsToAlarm, minToAlarm, secToAlarm);
|
||||
lv_label_set_text_fmt(txtMessage,
|
||||
"Time to\nalarm:\n%2lu Days\n%2lu Hours\n%2lu Minutes\n%2lu Seconds",
|
||||
daysToAlarm,
|
||||
hrsToAlarm,
|
||||
minToAlarm,
|
||||
secToAlarm);
|
||||
} else {
|
||||
lv_label_set_text_static(txtMessage, "Alarm\nis not\nset.");
|
||||
}
|
||||
|
|
|
@ -45,8 +45,8 @@ namespace Pinetime {
|
|||
Controllers::Settings& settingsController;
|
||||
System::SystemTask& systemTask;
|
||||
|
||||
lv_obj_t *time, *lblampm, *btnStop, *txtStop, *btnMinutesUp, *btnMinutesDown, *btnHoursUp, *btnHoursDown, *txtMinUp,
|
||||
*txtMinDown, *txtHrUp, *txtHrDown, *btnRecur, *txtRecur, *btnInfo, *txtInfo, *enableSwitch;
|
||||
lv_obj_t *time, *lblampm, *btnStop, *txtStop, *btnMinutesUp, *btnMinutesDown, *btnHoursUp, *btnHoursDown, *txtMinUp, *txtMinDown,
|
||||
*txtHrUp, *txtHrDown, *btnRecur, *txtRecur, *btnInfo, *txtInfo, *enableSwitch;
|
||||
lv_obj_t* txtMessage = nullptr;
|
||||
lv_obj_t* btnMessage = nullptr;
|
||||
lv_task_t* taskStopAlarm = nullptr;
|
||||
|
|
|
@ -15,6 +15,7 @@ namespace Pinetime {
|
|||
|
||||
static const char* GetUnknownIcon();
|
||||
static const char* GetPlugIcon(bool isCharging);
|
||||
|
||||
private:
|
||||
lv_obj_t* batteryImg;
|
||||
lv_obj_t* batteryJuice;
|
||||
|
|
|
@ -75,13 +75,22 @@ std::unique_ptr<Screen> Clock::WatchFaceDigitalScreen() {
|
|||
}
|
||||
|
||||
std::unique_ptr<Screen> Clock::WatchFaceAnalogScreen() {
|
||||
return std::make_unique<Screens::WatchFaceAnalog>(
|
||||
app, dateTimeController, batteryController, bleController, notificatioManager, settingsController);
|
||||
return std::make_unique<Screens::WatchFaceAnalog>(app,
|
||||
dateTimeController,
|
||||
batteryController,
|
||||
bleController,
|
||||
notificatioManager,
|
||||
settingsController);
|
||||
}
|
||||
|
||||
std::unique_ptr<Screen> Clock::WatchFacePineTimeStyleScreen() {
|
||||
return std::make_unique<Screens::WatchFacePineTimeStyle>(
|
||||
app, dateTimeController, batteryController, bleController, notificatioManager, settingsController, motionController);
|
||||
return std::make_unique<Screens::WatchFacePineTimeStyle>(app,
|
||||
dateTimeController,
|
||||
batteryController,
|
||||
bleController,
|
||||
notificatioManager,
|
||||
settingsController,
|
||||
motionController);
|
||||
}
|
||||
|
||||
std::unique_ptr<Screen> Clock::WatchFaceTerminalScreen() {
|
||||
|
|
|
@ -9,8 +9,7 @@ namespace {
|
|||
}
|
||||
}
|
||||
|
||||
Error::Error(Pinetime::Applications::DisplayApp* app, System::BootErrors error)
|
||||
: Screen(app) {
|
||||
Error::Error(Pinetime::Applications::DisplayApp* app, System::BootErrors error) : Screen(app) {
|
||||
|
||||
lv_obj_t* warningLabel = lv_label_create(lv_scr_act(), nullptr);
|
||||
lv_obj_set_style_local_text_color(warningLabel, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_ORANGE);
|
||||
|
|
|
@ -13,6 +13,7 @@ namespace Pinetime {
|
|||
~Error() override;
|
||||
|
||||
void ButtonEventHandler();
|
||||
|
||||
private:
|
||||
lv_obj_t* btnOk;
|
||||
};
|
||||
|
|
|
@ -34,7 +34,8 @@ FirmwareValidation::FirmwareValidation(Pinetime::Applications::DisplayApp* app,
|
|||
if (validator.IsValidated())
|
||||
lv_label_set_text_static(labelIsValidated, "You have already\n#00ff00 validated# this firmware#");
|
||||
else {
|
||||
lv_label_set_text_static(labelIsValidated, "Please #00ff00 Validate# this version or\n#ff0000 Reset# to rollback to the previous version.");
|
||||
lv_label_set_text_static(labelIsValidated,
|
||||
"Please #00ff00 Validate# this version or\n#ff0000 Reset# to rollback to the previous version.");
|
||||
|
||||
buttonValidate = lv_btn_create(lv_scr_act(), nullptr);
|
||||
buttonValidate->user_data = this;
|
||||
|
|
|
@ -28,7 +28,7 @@ FlashLight::FlashLight(Pinetime::Applications::DisplayApp* app,
|
|||
lv_label_set_text_static(flashLight, Symbols::highlight);
|
||||
lv_obj_align(flashLight, nullptr, LV_ALIGN_CENTER, 0, 0);
|
||||
|
||||
for (auto & i : indicators) {
|
||||
for (auto& i : indicators) {
|
||||
i = lv_obj_create(lv_scr_act(), nullptr);
|
||||
lv_obj_set_size(i, 15, 10);
|
||||
lv_obj_set_style_local_border_width(i, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, 2);
|
||||
|
@ -64,7 +64,7 @@ void FlashLight::SetColors() {
|
|||
if (isOn) {
|
||||
lv_obj_set_style_local_bg_color(lv_scr_act(), LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_WHITE);
|
||||
lv_obj_set_style_local_text_color(flashLight, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_MAKE(0xb0, 0xb0, 0xb0));
|
||||
for (auto & i : indicators) {
|
||||
for (auto& i : indicators) {
|
||||
lv_obj_set_style_local_bg_color(i, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_MAKE(0xb0, 0xb0, 0xb0));
|
||||
lv_obj_set_style_local_bg_color(i, LV_OBJ_PART_MAIN, LV_STATE_DISABLED, LV_COLOR_WHITE);
|
||||
lv_obj_set_style_local_border_color(i, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_MAKE(0xb0, 0xb0, 0xb0));
|
||||
|
@ -72,7 +72,7 @@ void FlashLight::SetColors() {
|
|||
} else {
|
||||
lv_obj_set_style_local_bg_color(lv_scr_act(), LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK);
|
||||
lv_obj_set_style_local_text_color(flashLight, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_WHITE);
|
||||
for (auto & i : indicators) {
|
||||
for (auto& i : indicators) {
|
||||
lv_obj_set_style_local_bg_color(i, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_WHITE);
|
||||
lv_obj_set_style_local_bg_color(i, LV_OBJ_PART_MAIN, LV_STATE_DISABLED, LV_COLOR_BLACK);
|
||||
lv_obj_set_style_local_border_color(i, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_WHITE);
|
||||
|
|
|
@ -30,7 +30,7 @@ namespace Pinetime {
|
|||
|
||||
lv_obj_t *bpmArc, *bpmTap, *bpmValue;
|
||||
lv_obj_t *bpbDropdown, *currentBpbText;
|
||||
lv_obj_t *playPause;
|
||||
lv_obj_t* playPause;
|
||||
|
||||
lv_task_t* taskRefresh;
|
||||
};
|
||||
|
|
|
@ -198,12 +198,12 @@ Notifications::NotificationItem::NotificationItem(const char* title,
|
|||
|
||||
lv_obj_t* alert_type = lv_label_create(lv_scr_act(), nullptr);
|
||||
lv_obj_set_style_local_text_color(alert_type, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_MAKE(0xb0, 0xb0, 0xb0));
|
||||
if(title == nullptr) {
|
||||
if (title == nullptr) {
|
||||
lv_label_set_text_static(alert_type, "Notification");
|
||||
} else {
|
||||
// copy title to label and replace newlines with spaces
|
||||
lv_label_set_text(alert_type, title);
|
||||
char *pchar = strchr(lv_label_get_text(alert_type), '\n');
|
||||
char* pchar = strchr(lv_label_get_text(alert_type), '\n');
|
||||
while (pchar != nullptr) {
|
||||
*pchar = ' ';
|
||||
pchar = strchr(pchar + 1, '\n');
|
||||
|
|
|
@ -53,7 +53,7 @@ void Paddle::Refresh() {
|
|||
if (ballX >= LV_HOR_RES - ballSize - 1) {
|
||||
dx *= -1;
|
||||
dy += rand() % 3 - 1; // add a little randomization in wall bounce direction, one of [-1, 0, 1]
|
||||
if (dy > 5) { // limit dy to be in range [-5 to 5]
|
||||
if (dy > 5) { // limit dy to be in range [-5 to 5]
|
||||
dy = 5;
|
||||
}
|
||||
if (dy < -5) {
|
||||
|
|
|
@ -14,4 +14,3 @@ PassKey::PassKey(Pinetime::Applications::DisplayApp* app, uint32_t key) : Screen
|
|||
PassKey::~PassKey() {
|
||||
lv_obj_clean(lv_scr_act());
|
||||
}
|
||||
|
||||
|
|
|
@ -17,8 +17,12 @@ namespace Pinetime {
|
|||
uint8_t initScreen,
|
||||
const std::array<std::function<std::unique_ptr<Screen>()>, N>&& screens,
|
||||
ScreenListModes mode)
|
||||
: Screen(app), initScreen {initScreen}, screens {std::move(screens)}, mode {mode}, screenIndex{initScreen}, current {this->screens[initScreen]()} {
|
||||
|
||||
: Screen(app),
|
||||
initScreen {initScreen},
|
||||
screens {std::move(screens)},
|
||||
mode {mode},
|
||||
screenIndex {initScreen},
|
||||
current {this->screens[initScreen]()} {
|
||||
}
|
||||
|
||||
ScreenList(const ScreenList&) = delete;
|
||||
|
|
|
@ -166,8 +166,12 @@ void StopWatch::stopLapBtnEventHandler(lv_event_t event) {
|
|||
lapBuffer.addLaps(currentTimeSeparated);
|
||||
lapNr++;
|
||||
if (lapBuffer[1]) {
|
||||
lv_label_set_text_fmt(
|
||||
lapOneText, "#%2d %2d:%02d.%02d", (lapNr - 1), lapBuffer[1]->mins, lapBuffer[1]->secs, lapBuffer[1]->hundredths);
|
||||
lv_label_set_text_fmt(lapOneText,
|
||||
"#%2d %2d:%02d.%02d",
|
||||
(lapNr - 1),
|
||||
lapBuffer[1]->mins,
|
||||
lapBuffer[1]->secs,
|
||||
lapBuffer[1]->hundredths);
|
||||
}
|
||||
if (lapBuffer[0]) {
|
||||
lv_label_set_text_fmt(lapTwoText, "#%2d %2d:%02d.%02d", lapNr, lapBuffer[0]->mins, lapBuffer[0]->secs, lapBuffer[0]->hundredths);
|
||||
|
|
|
@ -120,7 +120,8 @@ void Tile::UpdateScreen() {
|
|||
}
|
||||
|
||||
void Tile::OnValueChangedEvent(lv_obj_t* obj, uint32_t buttonId) {
|
||||
if(obj != btnm1) return;
|
||||
if (obj != btnm1)
|
||||
return;
|
||||
|
||||
app->StartApp(apps[buttonId], DisplayApp::FullRefreshDirections::Up);
|
||||
running = false;
|
||||
|
|
|
@ -12,35 +12,33 @@ LV_IMG_DECLARE(bg_clock);
|
|||
using namespace Pinetime::Applications::Screens;
|
||||
|
||||
namespace {
|
||||
constexpr int16_t HourLength = 70;
|
||||
constexpr int16_t MinuteLength = 90;
|
||||
constexpr int16_t SecondLength = 110;
|
||||
constexpr int16_t HourLength = 70;
|
||||
constexpr int16_t MinuteLength = 90;
|
||||
constexpr int16_t SecondLength = 110;
|
||||
|
||||
// sin(90) = 1 so the value of _lv_trigo_sin(90) is the scaling factor
|
||||
const auto LV_TRIG_SCALE = _lv_trigo_sin(90);
|
||||
// sin(90) = 1 so the value of _lv_trigo_sin(90) is the scaling factor
|
||||
const auto LV_TRIG_SCALE = _lv_trigo_sin(90);
|
||||
|
||||
int16_t Cosine(int16_t angle) {
|
||||
return _lv_trigo_sin(angle + 90);
|
||||
}
|
||||
int16_t Cosine(int16_t angle) {
|
||||
return _lv_trigo_sin(angle + 90);
|
||||
}
|
||||
|
||||
int16_t Sine(int16_t angle) {
|
||||
return _lv_trigo_sin(angle);
|
||||
}
|
||||
int16_t Sine(int16_t angle) {
|
||||
return _lv_trigo_sin(angle);
|
||||
}
|
||||
|
||||
int16_t CoordinateXRelocate(int16_t x) {
|
||||
return (x + LV_HOR_RES / 2);
|
||||
}
|
||||
int16_t CoordinateXRelocate(int16_t x) {
|
||||
return (x + LV_HOR_RES / 2);
|
||||
}
|
||||
|
||||
int16_t CoordinateYRelocate(int16_t y) {
|
||||
return std::abs(y - LV_HOR_RES / 2);
|
||||
}
|
||||
int16_t CoordinateYRelocate(int16_t y) {
|
||||
return std::abs(y - LV_HOR_RES / 2);
|
||||
}
|
||||
|
||||
lv_point_t CoordinateRelocate(int16_t radius, int16_t angle) {
|
||||
return lv_point_t{
|
||||
.x = CoordinateXRelocate(radius * static_cast<int32_t>(Sine(angle)) / LV_TRIG_SCALE),
|
||||
.y = CoordinateYRelocate(radius * static_cast<int32_t>(Cosine(angle)) / LV_TRIG_SCALE)
|
||||
};
|
||||
}
|
||||
lv_point_t CoordinateRelocate(int16_t radius, int16_t angle) {
|
||||
return lv_point_t {.x = CoordinateXRelocate(radius * static_cast<int32_t>(Sine(angle)) / LV_TRIG_SCALE),
|
||||
.y = CoordinateYRelocate(radius * static_cast<int32_t>(Cosine(angle)) / LV_TRIG_SCALE)};
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -160,11 +160,19 @@ void WatchFaceDigital::Refresh() {
|
|||
|
||||
if ((year != currentYear) || (month != currentMonth) || (dayOfWeek != currentDayOfWeek) || (day != currentDay)) {
|
||||
if (settingsController.GetClockType() == Controllers::Settings::ClockType::H24) {
|
||||
lv_label_set_text_fmt(
|
||||
label_date, "%s %d %s %d", dateTimeController.DayOfWeekShortToString(), day, dateTimeController.MonthShortToString(), year);
|
||||
lv_label_set_text_fmt(label_date,
|
||||
"%s %d %s %d",
|
||||
dateTimeController.DayOfWeekShortToString(),
|
||||
day,
|
||||
dateTimeController.MonthShortToString(),
|
||||
year);
|
||||
} else {
|
||||
lv_label_set_text_fmt(
|
||||
label_date, "%s %s %d %d", dateTimeController.DayOfWeekShortToString(), dateTimeController.MonthShortToString(), day, year);
|
||||
lv_label_set_text_fmt(label_date,
|
||||
"%s %s %d %d",
|
||||
dateTimeController.DayOfWeekShortToString(),
|
||||
dateTimeController.MonthShortToString(),
|
||||
day,
|
||||
year);
|
||||
}
|
||||
lv_obj_realign(label_date);
|
||||
|
||||
|
|
|
@ -44,7 +44,7 @@ namespace {
|
|||
}
|
||||
|
||||
bool IsBleIconVisible(bool isRadioEnabled, bool isConnected) {
|
||||
if(!isRadioEnabled) {
|
||||
if (!isRadioEnabled) {
|
||||
return true;
|
||||
}
|
||||
return isConnected;
|
||||
|
@ -52,12 +52,12 @@ namespace {
|
|||
}
|
||||
|
||||
WatchFacePineTimeStyle::WatchFacePineTimeStyle(DisplayApp* app,
|
||||
Controllers::DateTime& dateTimeController,
|
||||
Controllers::Battery& batteryController,
|
||||
Controllers::Ble& bleController,
|
||||
Controllers::NotificationManager& notificatioManager,
|
||||
Controllers::Settings& settingsController,
|
||||
Controllers::MotionController& motionController)
|
||||
Controllers::DateTime& dateTimeController,
|
||||
Controllers::Battery& batteryController,
|
||||
Controllers::Ble& bleController,
|
||||
Controllers::NotificationManager& notificatioManager,
|
||||
Controllers::Settings& settingsController,
|
||||
Controllers::MotionController& motionController)
|
||||
: Screen(app),
|
||||
currentDateTime {{}},
|
||||
dateTimeController {dateTimeController},
|
||||
|
|
|
@ -25,12 +25,12 @@ namespace Pinetime {
|
|||
class WatchFacePineTimeStyle : public Screen {
|
||||
public:
|
||||
WatchFacePineTimeStyle(DisplayApp* app,
|
||||
Controllers::DateTime& dateTimeController,
|
||||
Controllers::Battery& batteryController,
|
||||
Controllers::Ble& bleController,
|
||||
Controllers::NotificationManager& notificatioManager,
|
||||
Controllers::Settings& settingsController,
|
||||
Controllers::MotionController& motionController);
|
||||
Controllers::DateTime& dateTimeController,
|
||||
Controllers::Battery& batteryController,
|
||||
Controllers::Ble& bleController,
|
||||
Controllers::NotificationManager& notificatioManager,
|
||||
Controllers::Settings& settingsController,
|
||||
Controllers::MotionController& motionController);
|
||||
~WatchFacePineTimeStyle() override;
|
||||
|
||||
bool OnTouchEvent(TouchEvents event) override;
|
||||
|
@ -38,7 +38,7 @@ namespace Pinetime {
|
|||
|
||||
void Refresh() override;
|
||||
|
||||
void UpdateSelected(lv_obj_t *object, lv_event_t event);
|
||||
void UpdateSelected(lv_obj_t* object, lv_event_t event);
|
||||
|
||||
private:
|
||||
uint8_t displayedHour = -1;
|
||||
|
|
|
@ -89,7 +89,7 @@ void WatchFaceTerminal::Refresh() {
|
|||
bleState = bleController.IsConnected();
|
||||
bleRadioEnabled = bleController.IsRadioEnabled();
|
||||
if (bleState.IsUpdated() || bleRadioEnabled.IsUpdated()) {
|
||||
if(!bleRadioEnabled.Get()) {
|
||||
if (!bleRadioEnabled.Get()) {
|
||||
lv_label_set_text_static(connectState, "[STAT]#0082fc Disabled#");
|
||||
} else {
|
||||
if (bleState.Get()) {
|
||||
|
|
|
@ -44,7 +44,7 @@ QuickSettings::QuickSettings(Pinetime::Applications::DisplayApp* app,
|
|||
static constexpr uint8_t barHeight = 20 + innerDistance;
|
||||
static constexpr uint8_t buttonHeight = (LV_VER_RES_MAX - barHeight - innerDistance) / 2;
|
||||
static constexpr uint8_t buttonWidth = (LV_HOR_RES_MAX - innerDistance) / 2; // wide buttons
|
||||
//static constexpr uint8_t buttonWidth = buttonHeight; // square buttons
|
||||
// static constexpr uint8_t buttonWidth = buttonHeight; // square buttons
|
||||
static constexpr uint8_t buttonXOffset = (LV_HOR_RES_MAX - buttonWidth * 2 - innerDistance) / 2;
|
||||
|
||||
lv_style_init(&btn_style);
|
||||
|
@ -67,7 +67,7 @@ QuickSettings::QuickSettings(Pinetime::Applications::DisplayApp* app,
|
|||
lv_obj_set_event_cb(btn2, ButtonEventHandler);
|
||||
lv_obj_add_style(btn2, LV_BTN_PART_MAIN, &btn_style);
|
||||
lv_obj_set_size(btn2, buttonWidth, buttonHeight);
|
||||
lv_obj_align(btn2, nullptr, LV_ALIGN_IN_TOP_RIGHT, - buttonXOffset, barHeight);
|
||||
lv_obj_align(btn2, nullptr, LV_ALIGN_IN_TOP_RIGHT, -buttonXOffset, barHeight);
|
||||
|
||||
lv_obj_t* lbl_btn;
|
||||
lbl_btn = lv_label_create(btn2, nullptr);
|
||||
|
@ -98,7 +98,7 @@ QuickSettings::QuickSettings(Pinetime::Applications::DisplayApp* app,
|
|||
lv_obj_set_event_cb(btn4, ButtonEventHandler);
|
||||
lv_obj_add_style(btn4, LV_BTN_PART_MAIN, &btn_style);
|
||||
lv_obj_set_size(btn4, buttonWidth, buttonHeight);
|
||||
lv_obj_align(btn4, nullptr, LV_ALIGN_IN_BOTTOM_RIGHT, - buttonXOffset, 0);
|
||||
lv_obj_align(btn4, nullptr, LV_ALIGN_IN_BOTTOM_RIGHT, -buttonXOffset, 0);
|
||||
|
||||
lbl_btn = lv_label_create(btn4, nullptr);
|
||||
lv_obj_set_style_local_text_font(lbl_btn, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, &lv_font_sys_48);
|
||||
|
|
|
@ -90,4 +90,3 @@ void SettingBluetooth::OnBluetoothEnabled(lv_obj_t* object, lv_event_t event) {
|
|||
settingsController.SetBleRadioEnabled(true);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -46,7 +46,7 @@ SettingDisplay::SettingDisplay(Pinetime::Applications::DisplayApp* app, Pinetime
|
|||
char buffer[12];
|
||||
for (unsigned int i = 0; i < options.size(); i++) {
|
||||
cbOption[i] = lv_checkbox_create(container1, nullptr);
|
||||
sprintf(buffer, "%3d seconds", options[i] / 1000);
|
||||
sprintf(buffer, "%3d seconds", options[i] / 1000);
|
||||
lv_checkbox_set_text(cbOption[i], buffer);
|
||||
cbOption[i]->user_data = this;
|
||||
lv_obj_set_event_cb(cbOption[i], event_handler);
|
||||
|
|
|
@ -15,21 +15,20 @@ namespace {
|
|||
constexpr int16_t POS_Y_TEXT = -6;
|
||||
constexpr int16_t POS_Y_MINUS = 40;
|
||||
|
||||
void event_handler(lv_obj_t * obj, lv_event_t event) {
|
||||
auto* screen = static_cast<SettingSetDate *>(obj->user_data);
|
||||
void event_handler(lv_obj_t* obj, lv_event_t event) {
|
||||
auto* screen = static_cast<SettingSetDate*>(obj->user_data);
|
||||
screen->HandleButtonPress(obj, event);
|
||||
}
|
||||
}
|
||||
|
||||
SettingSetDate::SettingSetDate(Pinetime::Applications::DisplayApp *app, Pinetime::Controllers::DateTime &dateTimeController) :
|
||||
Screen(app),
|
||||
dateTimeController {dateTimeController} {
|
||||
lv_obj_t * title = lv_label_create(lv_scr_act(), nullptr);
|
||||
SettingSetDate::SettingSetDate(Pinetime::Applications::DisplayApp* app, Pinetime::Controllers::DateTime& dateTimeController)
|
||||
: Screen(app), dateTimeController {dateTimeController} {
|
||||
lv_obj_t* title = lv_label_create(lv_scr_act(), nullptr);
|
||||
lv_label_set_text_static(title, "Set current date");
|
||||
lv_label_set_align(title, LV_LABEL_ALIGN_CENTER);
|
||||
lv_obj_align(title, lv_scr_act(), LV_ALIGN_IN_TOP_MID, 15, 15);
|
||||
|
||||
lv_obj_t * icon = lv_label_create(lv_scr_act(), nullptr);
|
||||
lv_obj_t* icon = lv_label_create(lv_scr_act(), nullptr);
|
||||
lv_obj_set_style_local_text_color(icon, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_ORANGE);
|
||||
|
||||
lv_label_set_text_static(icon, Symbols::clock);
|
||||
|
@ -113,7 +112,7 @@ SettingSetDate::~SettingSetDate() {
|
|||
lv_obj_clean(lv_scr_act());
|
||||
}
|
||||
|
||||
void SettingSetDate::HandleButtonPress(lv_obj_t *object, lv_event_t event) {
|
||||
void SettingSetDate::HandleButtonPress(lv_obj_t* object, lv_event_t event) {
|
||||
if (event != LV_EVENT_CLICKED)
|
||||
return;
|
||||
|
||||
|
@ -194,5 +193,6 @@ void SettingSetDate::CheckDay() {
|
|||
|
||||
void SettingSetDate::UpdateMonthLabel() {
|
||||
lv_label_set_text_static(
|
||||
lblMonth, Pinetime::Controllers::DateTime::MonthShortToStringLow(static_cast<Pinetime::Controllers::DateTime::Months>(monthValue)));
|
||||
lblMonth,
|
||||
Pinetime::Controllers::DateTime::MonthShortToStringLow(static_cast<Pinetime::Controllers::DateTime::Months>(monthValue)));
|
||||
}
|
||||
|
|
|
@ -8,33 +8,33 @@
|
|||
namespace Pinetime {
|
||||
namespace Applications {
|
||||
namespace Screens {
|
||||
class SettingSetDate : public Screen{
|
||||
public:
|
||||
SettingSetDate(DisplayApp* app, Pinetime::Controllers::DateTime &dateTimeController);
|
||||
~SettingSetDate() override;
|
||||
class SettingSetDate : public Screen {
|
||||
public:
|
||||
SettingSetDate(DisplayApp* app, Pinetime::Controllers::DateTime& dateTimeController);
|
||||
~SettingSetDate() override;
|
||||
|
||||
void HandleButtonPress(lv_obj_t *object, lv_event_t event);
|
||||
void HandleButtonPress(lv_obj_t* object, lv_event_t event);
|
||||
|
||||
private:
|
||||
Controllers::DateTime& dateTimeController;
|
||||
private:
|
||||
Controllers::DateTime& dateTimeController;
|
||||
|
||||
int dayValue;
|
||||
int monthValue;
|
||||
int yearValue;
|
||||
lv_obj_t * lblDay;
|
||||
lv_obj_t * lblMonth;
|
||||
lv_obj_t * lblYear;
|
||||
lv_obj_t * btnDayPlus;
|
||||
lv_obj_t * btnDayMinus;
|
||||
lv_obj_t * btnMonthPlus;
|
||||
lv_obj_t * btnMonthMinus;
|
||||
lv_obj_t * btnYearPlus;
|
||||
lv_obj_t * btnYearMinus;
|
||||
lv_obj_t * btnSetTime;
|
||||
int dayValue;
|
||||
int monthValue;
|
||||
int yearValue;
|
||||
lv_obj_t* lblDay;
|
||||
lv_obj_t* lblMonth;
|
||||
lv_obj_t* lblYear;
|
||||
lv_obj_t* btnDayPlus;
|
||||
lv_obj_t* btnDayMinus;
|
||||
lv_obj_t* btnMonthPlus;
|
||||
lv_obj_t* btnMonthMinus;
|
||||
lv_obj_t* btnYearPlus;
|
||||
lv_obj_t* btnYearMinus;
|
||||
lv_obj_t* btnSetTime;
|
||||
|
||||
int MaximumDayOfMonth() const;
|
||||
void CheckDay();
|
||||
void UpdateMonthLabel();
|
||||
int MaximumDayOfMonth() const;
|
||||
void CheckDay();
|
||||
void UpdateMonthLabel();
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
|
@ -64,9 +64,9 @@ SettingShakeThreshold::SettingShakeThreshold(DisplayApp* app,
|
|||
vDecay = xTaskGetTickCount();
|
||||
calibrating = false;
|
||||
EnableForCal = false;
|
||||
if(!settingsController.isWakeUpModeOn(Pinetime::Controllers::Settings::WakeUpMode::Shake)){
|
||||
if (!settingsController.isWakeUpModeOn(Pinetime::Controllers::Settings::WakeUpMode::Shake)) {
|
||||
EnableForCal = true;
|
||||
settingsController.setWakeUpMode(Pinetime::Controllers::Settings::WakeUpMode::Shake,true);
|
||||
settingsController.setWakeUpMode(Pinetime::Controllers::Settings::WakeUpMode::Shake, true);
|
||||
}
|
||||
refreshTask = lv_task_create(RefreshTaskCallback, LV_DISP_DEF_REFR_PERIOD, LV_TASK_PRIO_MID, this);
|
||||
}
|
||||
|
@ -74,8 +74,8 @@ SettingShakeThreshold::SettingShakeThreshold(DisplayApp* app,
|
|||
SettingShakeThreshold::~SettingShakeThreshold() {
|
||||
settingsController.SetShakeThreshold(lv_arc_get_value(positionArc));
|
||||
|
||||
if(EnableForCal){
|
||||
settingsController.setWakeUpMode(Pinetime::Controllers::Settings::WakeUpMode::Shake,false);
|
||||
if (EnableForCal) {
|
||||
settingsController.setWakeUpMode(Pinetime::Controllers::Settings::WakeUpMode::Shake, false);
|
||||
EnableForCal = false;
|
||||
}
|
||||
lv_task_del(refreshTask);
|
||||
|
|
|
@ -28,8 +28,8 @@ namespace Pinetime {
|
|||
System::SystemTask& systemTask;
|
||||
uint8_t calibrating;
|
||||
bool EnableForCal;
|
||||
uint32_t vDecay,vCalTime;
|
||||
lv_obj_t *positionArc, *animArc,*calButton, *calLabel;
|
||||
uint32_t vDecay, vCalTime;
|
||||
lv_obj_t *positionArc, *animArc, *calButton, *calLabel;
|
||||
lv_task_t* refreshTask;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -12,15 +12,12 @@ namespace {
|
|||
}
|
||||
}
|
||||
|
||||
SettingSteps::SettingSteps(
|
||||
Pinetime::Applications::DisplayApp *app, Pinetime::Controllers::Settings &settingsController) :
|
||||
Screen(app),
|
||||
settingsController{settingsController}
|
||||
{
|
||||
SettingSteps::SettingSteps(Pinetime::Applications::DisplayApp* app, Pinetime::Controllers::Settings& settingsController)
|
||||
: Screen(app), settingsController {settingsController} {
|
||||
|
||||
lv_obj_t * container1 = lv_cont_create(lv_scr_act(), nullptr);
|
||||
lv_obj_t* container1 = lv_cont_create(lv_scr_act(), nullptr);
|
||||
|
||||
//lv_obj_set_style_local_bg_color(container1, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x111111));
|
||||
// lv_obj_set_style_local_bg_color(container1, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, lv_color_hex(0x111111));
|
||||
lv_obj_set_style_local_bg_opa(container1, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_OPA_TRANSP);
|
||||
lv_obj_set_style_local_pad_all(container1, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, 10);
|
||||
lv_obj_set_style_local_pad_inner(container1, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, 5);
|
||||
|
@ -31,7 +28,7 @@ SettingSteps::SettingSteps(
|
|||
lv_cont_set_layout(container1, LV_LAYOUT_COLUMN_LEFT);
|
||||
|
||||
lv_obj_t* title = lv_label_create(lv_scr_act(), nullptr);
|
||||
lv_label_set_text_static(title,"Daily steps goal");
|
||||
lv_label_set_text_static(title, "Daily steps goal");
|
||||
lv_label_set_align(title, LV_LABEL_ALIGN_CENTER);
|
||||
lv_obj_align(title, lv_scr_act(), LV_ALIGN_IN_TOP_MID, 15, 15);
|
||||
|
||||
|
@ -61,7 +58,6 @@ SettingSteps::SettingSteps(
|
|||
lv_obj_set_event_cb(btnMinus, event_handler);
|
||||
lv_obj_align(btnMinus, lv_scr_act(), LV_ALIGN_CENTER, -55, 80);
|
||||
lv_obj_set_style_local_value_str(btnMinus, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, "-");
|
||||
|
||||
}
|
||||
|
||||
SettingSteps::~SettingSteps() {
|
||||
|
@ -69,24 +65,23 @@ SettingSteps::~SettingSteps() {
|
|||
settingsController.SaveSettings();
|
||||
}
|
||||
|
||||
void SettingSteps::UpdateSelected(lv_obj_t *object, lv_event_t event) {
|
||||
void SettingSteps::UpdateSelected(lv_obj_t* object, lv_event_t event) {
|
||||
uint32_t value = settingsController.GetStepsGoal();
|
||||
if(object == btnPlus && (event == LV_EVENT_PRESSED)) {
|
||||
if (object == btnPlus && (event == LV_EVENT_PRESSED)) {
|
||||
value += 1000;
|
||||
if ( value <= 500000 ) {
|
||||
if (value <= 500000) {
|
||||
settingsController.SetStepsGoal(value);
|
||||
lv_label_set_text_fmt(stepValue, "%lu", settingsController.GetStepsGoal());
|
||||
lv_obj_align(stepValue, lv_scr_act(), LV_ALIGN_CENTER, 0, -10);
|
||||
}
|
||||
}
|
||||
|
||||
if(object == btnMinus && (event == LV_EVENT_PRESSED)) {
|
||||
if (object == btnMinus && (event == LV_EVENT_PRESSED)) {
|
||||
value -= 1000;
|
||||
if ( value >= 1000 ) {
|
||||
if (value >= 1000) {
|
||||
settingsController.SetStepsGoal(value);
|
||||
lv_label_set_text_fmt(stepValue, "%lu", settingsController.GetStepsGoal());
|
||||
lv_obj_align(stepValue, lv_scr_act(), LV_ALIGN_CENTER, 0, -10);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -13,18 +13,19 @@ Settings::Settings(Pinetime::Applications::DisplayApp* app, Pinetime::Controller
|
|||
settingsController {settingsController},
|
||||
screens {app,
|
||||
settingsController.GetSettingsMenu(),
|
||||
{[this]() -> std::unique_ptr<Screen> {
|
||||
return CreateScreen1();
|
||||
},
|
||||
[this]() -> std::unique_ptr<Screen> {
|
||||
return CreateScreen2();
|
||||
},
|
||||
[this]() -> std::unique_ptr<Screen> {
|
||||
return CreateScreen3();
|
||||
},
|
||||
[this]() -> std::unique_ptr<Screen> {
|
||||
return CreateScreen4();
|
||||
},
|
||||
{
|
||||
[this]() -> std::unique_ptr<Screen> {
|
||||
return CreateScreen1();
|
||||
},
|
||||
[this]() -> std::unique_ptr<Screen> {
|
||||
return CreateScreen2();
|
||||
},
|
||||
[this]() -> std::unique_ptr<Screen> {
|
||||
return CreateScreen3();
|
||||
},
|
||||
[this]() -> std::unique_ptr<Screen> {
|
||||
return CreateScreen4();
|
||||
},
|
||||
},
|
||||
Screens::ScreenListModes::UpDown} {
|
||||
}
|
||||
|
@ -53,7 +54,8 @@ std::unique_ptr<Screen> Settings::CreateScreen2() {
|
|||
{Symbols::shoe, "Steps", Apps::SettingSteps},
|
||||
{Symbols::clock, "Set date", Apps::SettingSetDate},
|
||||
{Symbols::clock, "Set time", Apps::SettingSetTime},
|
||||
{Symbols::batteryHalf, "Battery", Apps::BatteryInfo}}};
|
||||
{Symbols::batteryHalf, "Battery", Apps::BatteryInfo},
|
||||
}};
|
||||
|
||||
return std::make_unique<Screens::List>(1, 4, app, settingsController, applications);
|
||||
}
|
||||
|
@ -64,7 +66,7 @@ std::unique_ptr<Screen> Settings::CreateScreen3() {
|
|||
{Symbols::clock, "Chimes", Apps::SettingChimes},
|
||||
{Symbols::tachometer, "Shake Calib.", Apps::SettingShakeThreshold},
|
||||
{Symbols::check, "Firmware", Apps::FirmwareValidation},
|
||||
{Symbols::bluetooth, "Bluetooth", Apps::SettingBluetooth}
|
||||
{Symbols::bluetooth, "Bluetooth", Apps::SettingBluetooth},
|
||||
}};
|
||||
|
||||
return std::make_unique<Screens::List>(2, 4, app, settingsController, applications);
|
||||
|
@ -76,7 +78,7 @@ std::unique_ptr<Screen> Settings::CreateScreen4() {
|
|||
{Symbols::list, "About", Apps::SysInfo},
|
||||
{Symbols::none, "None", Apps::None},
|
||||
{Symbols::none, "None", Apps::None},
|
||||
{Symbols::none, "None", Apps::None}
|
||||
{Symbols::none, "None", Apps::None},
|
||||
}};
|
||||
|
||||
return std::make_unique<Screens::List>(3, 4, app, settingsController, applications);
|
||||
|
|
|
@ -42,10 +42,16 @@ void Bma421::Init() {
|
|||
if (ret != BMA4_OK)
|
||||
return;
|
||||
|
||||
switch(bma.chip_id) {
|
||||
case BMA423_CHIP_ID: deviceType = DeviceTypes::BMA421; break;
|
||||
case BMA425_CHIP_ID: deviceType = DeviceTypes::BMA425; break;
|
||||
default: deviceType = DeviceTypes::Unknown; break;
|
||||
switch (bma.chip_id) {
|
||||
case BMA423_CHIP_ID:
|
||||
deviceType = DeviceTypes::BMA421;
|
||||
break;
|
||||
case BMA425_CHIP_ID:
|
||||
deviceType = DeviceTypes::BMA425;
|
||||
break;
|
||||
default:
|
||||
deviceType = DeviceTypes::Unknown;
|
||||
break;
|
||||
}
|
||||
|
||||
ret = bma423_write_config_file(&bma);
|
||||
|
|
|
@ -6,11 +6,7 @@ namespace Pinetime {
|
|||
class TwiMaster;
|
||||
class Bma421 {
|
||||
public:
|
||||
enum class DeviceTypes : uint8_t {
|
||||
Unknown,
|
||||
BMA421,
|
||||
BMA425
|
||||
};
|
||||
enum class DeviceTypes : uint8_t { Unknown, BMA421, BMA425 };
|
||||
struct Values {
|
||||
uint32_t steps;
|
||||
int16_t x;
|
||||
|
|
|
@ -80,14 +80,9 @@ Cst816S::TouchInfos Cst816S::GetTouchInfo() {
|
|||
Gestures gesture = static_cast<Gestures>(touchData[gestureIndex]);
|
||||
|
||||
// Validity check
|
||||
if(x >= maxX || y >= maxY ||
|
||||
(gesture != Gestures::None &&
|
||||
gesture != Gestures::SlideDown &&
|
||||
gesture != Gestures::SlideUp &&
|
||||
gesture != Gestures::SlideLeft &&
|
||||
gesture != Gestures::SlideRight &&
|
||||
gesture != Gestures::SingleTap &&
|
||||
gesture != Gestures::DoubleTap &&
|
||||
if (x >= maxX || y >= maxY ||
|
||||
(gesture != Gestures::None && gesture != Gestures::SlideDown && gesture != Gestures::SlideUp && gesture != Gestures::SlideLeft &&
|
||||
gesture != Gestures::SlideRight && gesture != Gestures::SingleTap && gesture != Gestures::DoubleTap &&
|
||||
gesture != Gestures::LongPress)) {
|
||||
info.isValid = false;
|
||||
return info;
|
||||
|
|
|
@ -44,21 +44,22 @@ namespace Pinetime {
|
|||
uint8_t GetFwVersion() const {
|
||||
return fwVersion;
|
||||
}
|
||||
|
||||
private:
|
||||
bool CheckDeviceIds();
|
||||
|
||||
// Unused/Unavailable commented out
|
||||
static constexpr uint8_t gestureIndex = 1;
|
||||
static constexpr uint8_t touchPointNumIndex = 2;
|
||||
//static constexpr uint8_t touchEventIndex = 3;
|
||||
// static constexpr uint8_t touchEventIndex = 3;
|
||||
static constexpr uint8_t touchXHighIndex = 3;
|
||||
static constexpr uint8_t touchXLowIndex = 4;
|
||||
//static constexpr uint8_t touchIdIndex = 5;
|
||||
// static constexpr uint8_t touchIdIndex = 5;
|
||||
static constexpr uint8_t touchYHighIndex = 5;
|
||||
static constexpr uint8_t touchYLowIndex = 6;
|
||||
//static constexpr uint8_t touchStep = 6;
|
||||
//static constexpr uint8_t touchXYIndex = 7;
|
||||
//static constexpr uint8_t touchMiscIndex = 8;
|
||||
// static constexpr uint8_t touchStep = 6;
|
||||
// static constexpr uint8_t touchXYIndex = 7;
|
||||
// static constexpr uint8_t touchMiscIndex = 8;
|
||||
|
||||
static constexpr uint8_t maxX = 240;
|
||||
static constexpr uint8_t maxY = 240;
|
||||
|
|
|
@ -4,17 +4,17 @@
|
|||
namespace Pinetime {
|
||||
namespace PinMap {
|
||||
|
||||
#ifdef WATCH_P8
|
||||
// COLMI P8
|
||||
static constexpr uint8_t Charging = 19;
|
||||
static constexpr uint8_t Cst816sReset = 13;
|
||||
static constexpr uint8_t Button = 17;
|
||||
#else
|
||||
// Pinetime
|
||||
static constexpr uint8_t Charging = 12;
|
||||
static constexpr uint8_t Cst816sReset = 10;
|
||||
static constexpr uint8_t Button = 13;
|
||||
#endif
|
||||
#ifdef WATCH_P8
|
||||
// COLMI P8
|
||||
static constexpr uint8_t Charging = 19;
|
||||
static constexpr uint8_t Cst816sReset = 13;
|
||||
static constexpr uint8_t Button = 17;
|
||||
#else
|
||||
// Pinetime
|
||||
static constexpr uint8_t Charging = 12;
|
||||
static constexpr uint8_t Cst816sReset = 10;
|
||||
static constexpr uint8_t Button = 13;
|
||||
#endif
|
||||
|
||||
static constexpr uint8_t Cst816sIrq = 28;
|
||||
static constexpr uint8_t PowerPresent = 19;
|
||||
|
|
|
@ -10,7 +10,7 @@ SpiMaster::SpiMaster(const SpiMaster::SpiModule spi, const SpiMaster::Parameters
|
|||
}
|
||||
|
||||
bool SpiMaster::Init() {
|
||||
if(mutex == nullptr) {
|
||||
if (mutex == nullptr) {
|
||||
mutex = xSemaphoreCreateBinary();
|
||||
ASSERT(mutex != nullptr);
|
||||
}
|
||||
|
|
|
@ -13,19 +13,13 @@ TwiMaster::TwiMaster(NRF_TWIM_Type* module, uint32_t frequency, uint8_t pinSda,
|
|||
}
|
||||
|
||||
void TwiMaster::ConfigurePins() const {
|
||||
NRF_GPIO->PIN_CNF[pinScl] =
|
||||
(GPIO_PIN_CNF_DIR_Input << GPIO_PIN_CNF_DIR_Pos) |
|
||||
(GPIO_PIN_CNF_INPUT_Connect << GPIO_PIN_CNF_INPUT_Pos) |
|
||||
(GPIO_PIN_CNF_PULL_Disabled << GPIO_PIN_CNF_PULL_Pos) |
|
||||
(GPIO_PIN_CNF_DRIVE_S0D1 << GPIO_PIN_CNF_DRIVE_Pos) |
|
||||
(GPIO_PIN_CNF_SENSE_Disabled << GPIO_PIN_CNF_SENSE_Pos);
|
||||
NRF_GPIO->PIN_CNF[pinScl] = (GPIO_PIN_CNF_DIR_Input << GPIO_PIN_CNF_DIR_Pos) | (GPIO_PIN_CNF_INPUT_Connect << GPIO_PIN_CNF_INPUT_Pos) |
|
||||
(GPIO_PIN_CNF_PULL_Disabled << GPIO_PIN_CNF_PULL_Pos) | (GPIO_PIN_CNF_DRIVE_S0D1 << GPIO_PIN_CNF_DRIVE_Pos) |
|
||||
(GPIO_PIN_CNF_SENSE_Disabled << GPIO_PIN_CNF_SENSE_Pos);
|
||||
|
||||
NRF_GPIO->PIN_CNF[pinSda] =
|
||||
(GPIO_PIN_CNF_DIR_Input << GPIO_PIN_CNF_DIR_Pos) |
|
||||
(GPIO_PIN_CNF_INPUT_Connect << GPIO_PIN_CNF_INPUT_Pos) |
|
||||
(GPIO_PIN_CNF_PULL_Disabled << GPIO_PIN_CNF_PULL_Pos) |
|
||||
(GPIO_PIN_CNF_DRIVE_S0D1 << GPIO_PIN_CNF_DRIVE_Pos) |
|
||||
(GPIO_PIN_CNF_SENSE_Disabled << GPIO_PIN_CNF_SENSE_Pos);
|
||||
NRF_GPIO->PIN_CNF[pinSda] = (GPIO_PIN_CNF_DIR_Input << GPIO_PIN_CNF_DIR_Pos) | (GPIO_PIN_CNF_INPUT_Connect << GPIO_PIN_CNF_INPUT_Pos) |
|
||||
(GPIO_PIN_CNF_PULL_Disabled << GPIO_PIN_CNF_PULL_Pos) | (GPIO_PIN_CNF_DRIVE_S0D1 << GPIO_PIN_CNF_DRIVE_Pos) |
|
||||
(GPIO_PIN_CNF_SENSE_Disabled << GPIO_PIN_CNF_SENSE_Pos);
|
||||
}
|
||||
|
||||
void TwiMaster::Init() {
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
using namespace Pinetime::Applications;
|
||||
|
||||
HeartRateTask::HeartRateTask(Drivers::Hrs3300& heartRateSensor, Controllers::HeartRateController& controller)
|
||||
: heartRateSensor {heartRateSensor}, controller {controller}, ppg{} {
|
||||
: heartRateSensor {heartRateSensor}, controller {controller}, ppg {} {
|
||||
}
|
||||
|
||||
void HeartRateTask::Start() {
|
||||
|
|
|
@ -168,7 +168,6 @@ static constexpr uint32_t NoInit_MagicValue = 0xDEAD0000;
|
|||
uint32_t NoInit_MagicWord __attribute__((section(".noinit")));
|
||||
std::chrono::time_point<std::chrono::system_clock, std::chrono::nanoseconds> NoInit_BackUpTime __attribute__((section(".noinit")));
|
||||
|
||||
|
||||
void nrfx_gpiote_evt_handler(nrfx_gpiote_pin_t pin, nrf_gpiote_polarity_t action) {
|
||||
if (pin == Pinetime::PinMap::Cst816sIrq) {
|
||||
systemTask.OnTouchEvent();
|
||||
|
@ -327,12 +326,11 @@ int main(void) {
|
|||
// retrieve version stored by bootloader
|
||||
Pinetime::BootloaderVersion::SetVersion(NRF_TIMER2->CC[0]);
|
||||
|
||||
|
||||
if (NoInit_MagicWord == NoInit_MagicValue) {
|
||||
dateTimeController.SetCurrentTime(NoInit_BackUpTime);
|
||||
} else {
|
||||
//Clear Memory to known state
|
||||
memset(&__start_noinit_data,0,(uintptr_t)&__stop_noinit_data-(uintptr_t)&__start_noinit_data);
|
||||
// Clear Memory to known state
|
||||
memset(&__start_noinit_data, 0, (uintptr_t) &__stop_noinit_data - (uintptr_t) &__start_noinit_data);
|
||||
NoInit_MagicWord = NoInit_MagicValue;
|
||||
}
|
||||
|
||||
|
|
|
@ -28,7 +28,6 @@ Pinetime::Logging::NrfLogger logger;
|
|||
Pinetime::Logging::DummyLogger logger;
|
||||
#endif
|
||||
|
||||
|
||||
static constexpr uint8_t displayWidth = 240;
|
||||
static constexpr uint8_t displayHeight = 240;
|
||||
static constexpr uint8_t bytesPerPixel = 2;
|
||||
|
|
|
@ -2,36 +2,36 @@
|
|||
|
||||
namespace Pinetime {
|
||||
namespace System {
|
||||
enum class Messages {
|
||||
GoToSleep,
|
||||
GoToRunning,
|
||||
TouchWakeUp,
|
||||
OnNewTime,
|
||||
OnNewNotification,
|
||||
OnTimerDone,
|
||||
OnNewCall,
|
||||
BleConnected,
|
||||
UpdateTimeOut,
|
||||
BleFirmwareUpdateStarted,
|
||||
BleFirmwareUpdateFinished,
|
||||
OnTouchEvent,
|
||||
HandleButtonEvent,
|
||||
HandleButtonTimerEvent,
|
||||
OnDisplayTaskSleeping,
|
||||
EnableSleeping,
|
||||
DisableSleeping,
|
||||
OnNewDay,
|
||||
OnNewHour,
|
||||
OnNewHalfHour,
|
||||
OnChargingEvent,
|
||||
OnPairing,
|
||||
SetOffAlarm,
|
||||
StopRinging,
|
||||
MeasureBatteryTimerExpired,
|
||||
BatteryPercentageUpdated,
|
||||
StartFileTransfer,
|
||||
StopFileTransfer,
|
||||
BleRadioEnableToggle
|
||||
};
|
||||
}
|
||||
enum class Messages {
|
||||
GoToSleep,
|
||||
GoToRunning,
|
||||
TouchWakeUp,
|
||||
OnNewTime,
|
||||
OnNewNotification,
|
||||
OnTimerDone,
|
||||
OnNewCall,
|
||||
BleConnected,
|
||||
UpdateTimeOut,
|
||||
BleFirmwareUpdateStarted,
|
||||
BleFirmwareUpdateFinished,
|
||||
OnTouchEvent,
|
||||
HandleButtonEvent,
|
||||
HandleButtonTimerEvent,
|
||||
OnDisplayTaskSleeping,
|
||||
EnableSleeping,
|
||||
DisableSleeping,
|
||||
OnNewDay,
|
||||
OnNewHour,
|
||||
OnNewHalfHour,
|
||||
OnChargingEvent,
|
||||
OnPairing,
|
||||
SetOffAlarm,
|
||||
StopRinging,
|
||||
MeasureBatteryTimerExpired,
|
||||
BatteryPercentageUpdated,
|
||||
StartFileTransfer,
|
||||
StopFileTransfer,
|
||||
BleRadioEnableToggle
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
#include "systemtask/SystemTask.h"
|
||||
#if configUSE_TRACE_FACILITY == 1
|
||||
// FreeRtosMonitor
|
||||
#include <FreeRTOS.h>
|
||||
#include <task.h>
|
||||
#include <nrf_log.h>
|
||||
// FreeRtosMonitor
|
||||
#include <FreeRTOS.h>
|
||||
#include <task.h>
|
||||
#include <nrf_log.h>
|
||||
|
||||
void Pinetime::System::SystemMonitor::Process() {
|
||||
if (xTaskGetTickCount() - lastTick > 10000) {
|
||||
|
@ -14,13 +14,14 @@ void Pinetime::System::SystemMonitor::Process() {
|
|||
NRF_LOG_INFO("Task [%s] - %d", tasksStatus[i].pcTaskName, tasksStatus[i].usStackHighWaterMark);
|
||||
if (tasksStatus[i].usStackHighWaterMark < 20)
|
||||
NRF_LOG_INFO("WARNING!!! Task %s task is nearly full, only %dB available",
|
||||
tasksStatus[i].pcTaskName,
|
||||
tasksStatus[i].usStackHighWaterMark * 4);
|
||||
tasksStatus[i].pcTaskName,
|
||||
tasksStatus[i].usStackHighWaterMark * 4);
|
||||
}
|
||||
lastTick = xTaskGetTickCount();
|
||||
}
|
||||
}
|
||||
#else
|
||||
// DummyMonitor
|
||||
void Pinetime::System::SystemMonitor::Process() {}
|
||||
void Pinetime::System::SystemMonitor::Process() {
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -11,30 +11,30 @@ namespace Pinetime {
|
|||
}
|
||||
namespace Controllers {
|
||||
class TouchHandler {
|
||||
public:
|
||||
explicit TouchHandler(Drivers::Cst816S&, Components::LittleVgl&);
|
||||
void CancelTap();
|
||||
bool GetNewTouchInfo();
|
||||
void UpdateLvglTouchPoint();
|
||||
public:
|
||||
explicit TouchHandler(Drivers::Cst816S&, Components::LittleVgl&);
|
||||
void CancelTap();
|
||||
bool GetNewTouchInfo();
|
||||
void UpdateLvglTouchPoint();
|
||||
|
||||
bool IsTouching() const {
|
||||
return info.touching;
|
||||
}
|
||||
uint8_t GetX() const {
|
||||
return info.x;
|
||||
}
|
||||
uint8_t GetY() const {
|
||||
return info.y;
|
||||
}
|
||||
Pinetime::Applications::TouchEvents GestureGet();
|
||||
private:
|
||||
bool IsTouching() const {
|
||||
return info.touching;
|
||||
}
|
||||
uint8_t GetX() const {
|
||||
return info.x;
|
||||
}
|
||||
uint8_t GetY() const {
|
||||
return info.y;
|
||||
}
|
||||
Pinetime::Applications::TouchEvents GestureGet();
|
||||
|
||||
Pinetime::Drivers::Cst816S::TouchInfos info;
|
||||
Pinetime::Drivers::Cst816S& touchPanel;
|
||||
Pinetime::Components::LittleVgl& lvgl;
|
||||
Pinetime::Applications::TouchEvents gesture;
|
||||
bool isCancelled = false;
|
||||
bool gestureReleased = true;
|
||||
private:
|
||||
Pinetime::Drivers::Cst816S::TouchInfos info;
|
||||
Pinetime::Drivers::Cst816S& touchPanel;
|
||||
Pinetime::Components::LittleVgl& lvgl;
|
||||
Pinetime::Applications::TouchEvents gesture;
|
||||
bool isCancelled = false;
|
||||
bool gestureReleased = true;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user