Make temperature range configurable
This commit is contained in:
@@ -31,6 +31,7 @@
|
|||||||
"PKJS_READY",
|
"PKJS_READY",
|
||||||
"PKJS_TEMP_BAR_COUNT",
|
"PKJS_TEMP_BAR_COUNT",
|
||||||
"CLAY_SHOW_TIME_MG",
|
"CLAY_SHOW_TIME_MG",
|
||||||
|
"CLAY_TEMP_BAR_0",
|
||||||
"CLAY_LOW_FUEL_BARS",
|
"CLAY_LOW_FUEL_BARS",
|
||||||
"CLAY_LED_COLOR",
|
"CLAY_LED_COLOR",
|
||||||
"CLAY_BG_COLOR",
|
"CLAY_BG_COLOR",
|
||||||
|
|||||||
+20
-18
@@ -53,7 +53,7 @@ static const uint8_t s_bar_spacing = s_bar_height + 1;
|
|||||||
static void batt_callback(BatteryChargeState state) {
|
static void batt_callback(BatteryChargeState state) {
|
||||||
s_batt_level = state.charge_percent / 5;
|
s_batt_level = state.charge_percent / 5;
|
||||||
layer_mark_dirty(s_fuel_layer);
|
layer_mark_dirty(s_fuel_layer);
|
||||||
if (!s_low_fuel_indicator && s_batt_level <= settings.LowFuelBars) {
|
if (!s_low_fuel_indicator && s_batt_level <= settings.LowFuelBars && settings.LowFuelBars != 21) {
|
||||||
replace_gbitmap_color(s_applied_fg, settings.ColorLowFuel, s_e_icon, s_e_layer);
|
replace_gbitmap_color(s_applied_fg, settings.ColorLowFuel, s_e_icon, s_e_layer);
|
||||||
s_low_fuel_indicator = true;
|
s_low_fuel_indicator = true;
|
||||||
} else if (s_low_fuel_indicator && s_batt_level > settings.LowFuelBars) {
|
} else if (s_low_fuel_indicator && s_batt_level > settings.LowFuelBars) {
|
||||||
@@ -62,7 +62,6 @@ static void batt_callback(BatteryChargeState state) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO use temperature (for now it updates with battery usage)
|
|
||||||
static void temp_update_proc(Layer *layer, GContext *ctx) {
|
static void temp_update_proc(Layer *layer, GContext *ctx) {
|
||||||
graphics_context_set_fill_color(ctx, GColorWhite);
|
graphics_context_set_fill_color(ctx, GColorWhite);
|
||||||
const uint8_t bar_count = s_temp_level;
|
const uint8_t bar_count = s_temp_level;
|
||||||
@@ -112,6 +111,21 @@ static void fuel_mg_update_proc(Layer *layer, GContext *ctx) {
|
|||||||
temp_fuel_mg_update_proc_helper(layer, ctx, true);
|
temp_fuel_mg_update_proc_helper(layer, ctx, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void update_temperature() {
|
||||||
|
DictionaryIterator *out;
|
||||||
|
AppMessageResult result = app_message_outbox_begin(&out);
|
||||||
|
if (result != APP_MSG_OK) {
|
||||||
|
s_temp_level = 0; // error; set to 0 bars to indicate TODO invert color and set to 20?
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
dict_write_int8(out, MESSAGE_KEY_PKJS_TEMP_BAR_COUNT, 1);
|
||||||
|
result = app_message_outbox_send();
|
||||||
|
if (result != APP_MSG_OK) {
|
||||||
|
s_temp_level = 0; // error; set to 0 bars to indicate TODO invert color and set to 20?
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void apply_settings(bool first_run) {
|
static void apply_settings(bool first_run) {
|
||||||
// LED&BG
|
// LED&BG
|
||||||
light_set_color(settings.ColorLED); // no-op on unsupported platforms
|
light_set_color(settings.ColorLED); // no-op on unsupported platforms
|
||||||
@@ -183,6 +197,9 @@ static void apply_settings(bool first_run) {
|
|||||||
s_applied_fg = settings.ColorFG;
|
s_applied_fg = settings.ColorFG;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// changes to temperature range
|
||||||
|
update_temperature();
|
||||||
|
|
||||||
// changes to low fuel threshold
|
// changes to low fuel threshold
|
||||||
batt_callback(battery_state_service_peek());
|
batt_callback(battery_state_service_peek());
|
||||||
}
|
}
|
||||||
@@ -262,21 +279,6 @@ static void update_minute_1() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void update_temperature() {
|
|
||||||
DictionaryIterator *out;
|
|
||||||
AppMessageResult result = app_message_outbox_begin(&out);
|
|
||||||
if (result != APP_MSG_OK) {
|
|
||||||
s_temp_level = 0; // error; set to 0 bars to indicate TODO invert color and set to 20?
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
dict_write_int8(out, MESSAGE_KEY_PKJS_TEMP_BAR_COUNT, 1);
|
|
||||||
result = app_message_outbox_send();
|
|
||||||
if (result != APP_MSG_OK) {
|
|
||||||
s_temp_level = 0; // error; set to 0 bars to indicate TODO invert color and set to 20?
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void minute_handler(struct tm *tick_time, TimeUnits units_changed) {
|
static void minute_handler(struct tm *tick_time, TimeUnits units_changed) {
|
||||||
update_minute_1();
|
update_minute_1();
|
||||||
if (s_pkjs_ready && tick_time->tm_min % 30 == 0) {
|
if (s_pkjs_ready && tick_time->tm_min % 30 == 0) {
|
||||||
@@ -350,7 +352,7 @@ static void init() {
|
|||||||
persist_read_data(STORAGE_KEY_SETTINGS, &settings, sizeof(settings));
|
persist_read_data(STORAGE_KEY_SETTINGS, &settings, sizeof(settings));
|
||||||
} else {
|
} else {
|
||||||
settings.ShowTimeMG = false;
|
settings.ShowTimeMG = false;
|
||||||
settings.LowFuelBars = 2;
|
settings.LowFuelBars = 21;
|
||||||
settings.ColorLED = GColorWhite;
|
settings.ColorLED = GColorWhite;
|
||||||
settings.ColorBG = GColorBlue;
|
settings.ColorBG = GColorBlue;
|
||||||
settings.ColorMGBars = GColorDarkGray;
|
settings.ColorMGBars = GColorDarkGray;
|
||||||
|
|||||||
+14
-3
@@ -16,13 +16,24 @@ module.exports = [
|
|||||||
"type": "toggle",
|
"type": "toggle",
|
||||||
"messageKey": "CLAY_SHOW_TIME_MG",
|
"messageKey": "CLAY_SHOW_TIME_MG",
|
||||||
"defaultValue": false,
|
"defaultValue": false,
|
||||||
"label": "Show time segments midground"
|
"label": "Show time segments midground",
|
||||||
|
"description": "Show or hide the unlit segments behind the time."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "slider",
|
||||||
|
"messageKey": "CLAY_TEMP_BAR_0",
|
||||||
|
defaultValue: -32,
|
||||||
|
min: -50,
|
||||||
|
max: 0,
|
||||||
|
"label": "Minimum of temperature range",
|
||||||
|
"description": "Default: -32°C<br><br>Measured in Celsius, this value sets the temperature that is considered the minimum on the watchface. When it is this temperature, 0 temperature bars will be displayed. The maximum is this value +80, making the default maximum 48°C."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "select",
|
"type": "select",
|
||||||
"messageKey": "CLAY_LOW_FUEL_BARS",
|
"messageKey": "CLAY_LOW_FUEL_BARS",
|
||||||
"defaultValue": 10,
|
"defaultValue": 2,
|
||||||
"label": "Low fuel percentage",
|
"label": "Low fuel indicator percentage",
|
||||||
|
"description": "The low fuel indicator will appear at this battery percentage.",
|
||||||
"options": [
|
"options": [
|
||||||
{
|
{
|
||||||
"label": "disabled",
|
"label": "disabled",
|
||||||
|
|||||||
@@ -29,7 +29,6 @@ module.exports = function (minified) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO show/hide LED color selector (only on emery)
|
|
||||||
function toggleCustomColors() {
|
function toggleCustomColors() {
|
||||||
if (this.get()) {
|
if (this.get()) {
|
||||||
clayConfig.getItemById('color_preset_selector').hide();
|
clayConfig.getItemById('color_preset_selector').hide();
|
||||||
|
|||||||
+13
-6
@@ -15,14 +15,21 @@ function locationSuccess(pos) {
|
|||||||
|
|
||||||
xhrRequest(url, 'GET',
|
xhrRequest(url, 'GET',
|
||||||
function (responseText) {
|
function (responseText) {
|
||||||
var json = JSON.parse(responseText);
|
const current_temp = JSON.parse(responseText).current.temperature_2m;
|
||||||
|
const min_temp = JSON.parse(localStorage.getItem('clay-settings')).CLAY_TEMP_BAR_0;
|
||||||
|
const max_temp = min_temp + 80;
|
||||||
|
|
||||||
// clamp into a range of 80 (technically 81)C (-32,48), -32C=-25.6F, 48C=118.4F
|
const clamped_temp = Math.min(Math.max(current_temp, min_temp), max_temp);
|
||||||
var temperature = Math.min(Math.max(json.current.temperature_2m, -32), 48);
|
const normalized_temp = clamped_temp - min_temp;
|
||||||
// set set range minimum to 0 (add 32) and convert to bars (0-20)
|
const temp_bars = Math.round(normalized_temp / 4);
|
||||||
temperature = Math.round((temperature + 32) / 4);
|
|
||||||
|
|
||||||
Pebble.sendAppMessage({ PKJS_TEMP_BAR_COUNT: temperature });
|
console.log("Current temp: " + current_temp);
|
||||||
|
console.log("Min temp: " + min_temp);
|
||||||
|
console.log("Max temp: " + max_temp);
|
||||||
|
console.log("Clamped temp: " + clamped_temp);
|
||||||
|
console.log("Bars " + temp_bars);
|
||||||
|
|
||||||
|
Pebble.sendAppMessage({ PKJS_TEMP_BAR_COUNT: temp_bars });
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user