Actually save the threshold
Prevent a few crashes due to an LV task being active when it shouldnt be.
This commit is contained in:
parent
d2510d7926
commit
f780ac999a
3 changed files with 23 additions and 8 deletions
|
@ -115,7 +115,11 @@ namespace Pinetime {
|
||||||
};
|
};
|
||||||
|
|
||||||
void SetShakeThreshold(uint16_t thresh){
|
void SetShakeThreshold(uint16_t thresh){
|
||||||
|
if(settings.shakeWakeThreshold != thresh){
|
||||||
settings.shakeWakeThreshold = thresh;
|
settings.shakeWakeThreshold = thresh;
|
||||||
|
settingsChanged = true;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int16_t GetShakeThreshold() const{
|
int16_t GetShakeThreshold() const{
|
||||||
|
|
|
@ -24,13 +24,14 @@ SettingShakeThreshold::SettingShakeThreshold(DisplayApp* app,
|
||||||
systemTask {systemTask} {
|
systemTask {systemTask} {
|
||||||
|
|
||||||
lv_obj_t* title = lv_label_create(lv_scr_act(), nullptr);
|
lv_obj_t* title = lv_label_create(lv_scr_act(), nullptr);
|
||||||
lv_label_set_text_static(title, "Shake Threshold");
|
lv_label_set_text_static(title, "Wake Sensitivity");
|
||||||
lv_label_set_align(title, LV_LABEL_ALIGN_CENTER);
|
lv_label_set_align(title, LV_LABEL_ALIGN_CENTER);
|
||||||
lv_obj_align(title, lv_scr_act(), LV_ALIGN_IN_TOP_MID, 0, 0);
|
lv_obj_align(title, lv_scr_act(), LV_ALIGN_IN_TOP_MID, 0, 0);
|
||||||
|
|
||||||
|
taskCount = 0;
|
||||||
|
|
||||||
positionArc = lv_arc_create(lv_scr_act(), nullptr);
|
positionArc = lv_arc_create(lv_scr_act(), nullptr);
|
||||||
// Why do this?
|
|
||||||
positionArc->user_data = this;
|
positionArc->user_data = this;
|
||||||
|
|
||||||
lv_obj_set_event_cb(positionArc, event_handler);
|
lv_obj_set_event_cb(positionArc, event_handler);
|
||||||
|
@ -59,6 +60,8 @@ SettingShakeThreshold::SettingShakeThreshold(DisplayApp* app,
|
||||||
}
|
}
|
||||||
|
|
||||||
SettingShakeThreshold::~SettingShakeThreshold() {
|
SettingShakeThreshold::~SettingShakeThreshold() {
|
||||||
|
settingsController.SetShakeThreshold(lv_arc_get_value(positionArc));
|
||||||
|
lv_task_del(refreshTask);
|
||||||
lv_obj_clean(lv_scr_act());
|
lv_obj_clean(lv_scr_act());
|
||||||
settingsController.SaveSettings();
|
settingsController.SaveSettings();
|
||||||
}
|
}
|
||||||
|
@ -69,8 +72,9 @@ void SettingShakeThreshold::Refresh() {
|
||||||
if((motionController.currentShakeSpeed()-200) > lv_arc_get_value(positionArc)){
|
if((motionController.currentShakeSpeed()-200) > lv_arc_get_value(positionArc)){
|
||||||
lv_arc_set_value(positionArc,(int16_t)motionController.currentShakeSpeed()-200);
|
lv_arc_set_value(positionArc,(int16_t)motionController.currentShakeSpeed()-200);
|
||||||
}
|
}
|
||||||
if(taskCount >= 100){
|
if(taskCount >= 50){
|
||||||
lv_label_set_text(calLabel, "Calibrate");
|
lv_label_set_text(calLabel, "Calibrate");
|
||||||
|
taskCount=0;
|
||||||
lv_task_del(refreshTask);
|
lv_task_del(refreshTask);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -80,11 +84,18 @@ void SettingShakeThreshold::UpdateSelected(lv_obj_t* object, lv_event_t event) {
|
||||||
|
|
||||||
switch (event) {
|
switch (event) {
|
||||||
case LV_EVENT_PRESSED: {
|
case LV_EVENT_PRESSED: {
|
||||||
taskCount = 0;
|
if(taskCount == 0){
|
||||||
refreshTask = lv_task_create(RefreshTaskCallback, 100, LV_TASK_PRIO_MID, this);
|
refreshTask = lv_task_create(RefreshTaskCallback, 100, LV_TASK_PRIO_MID, this);
|
||||||
lv_label_set_text(calLabel, "Shake!!!");
|
lv_label_set_text(calLabel, "Shake!!!");
|
||||||
|
}else{
|
||||||
|
|
||||||
|
lv_task_del(refreshTask);
|
||||||
|
taskCount=0;
|
||||||
|
lv_label_set_text(calLabel, "Calibrate");
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case LV_EVENT_VALUE_CHANGED: {
|
case LV_EVENT_VALUE_CHANGED: {
|
||||||
if (object == positionArc) {
|
if (object == positionArc) {
|
||||||
settingsController.SetShakeThreshold(lv_arc_get_value(positionArc));
|
settingsController.SetShakeThreshold(lv_arc_get_value(positionArc));
|
||||||
|
|
|
@ -66,7 +66,7 @@ std::unique_ptr<Screen> Settings::CreateScreen3() {
|
||||||
{Symbols::none, "None", Apps::None}
|
{Symbols::none, "None", Apps::None}
|
||||||
}};
|
}};
|
||||||
if (settingsController.isWakeUpModeOn(Pinetime::Controllers::Settings::WakeUpMode::Shake)) {
|
if (settingsController.isWakeUpModeOn(Pinetime::Controllers::Settings::WakeUpMode::Shake)) {
|
||||||
applications[1] = {Symbols::list, "Shake Threshold", Apps::SettingShakeThreshold};
|
applications[1] = {Symbols::list, "Wake Sense", Apps::SettingShakeThreshold};
|
||||||
}
|
}
|
||||||
return std::make_unique<Screens::List>(2, 3, app, settingsController, applications);
|
return std::make_unique<Screens::List>(2, 3, app, settingsController, applications);
|
||||||
}
|
}
|
Loading…
Reference in a new issue