From e4c8d3ae4e9245cfcde64d5cb7b0276a4e998eeb Mon Sep 17 00:00:00 2001 From: Matthias Granberry Date: Mon, 1 May 2017 14:37:51 -0500 Subject: [PATCH 1/2] Add UAM prediction lines for oref1 --- package.json | 1 + src/app_messages.c | 2 ++ src/app_messages.h | 1 + src/comm.h | 6 +++--- src/graph_element.c | 4 ++-- src/js/app.js | 1 + src/js/data.js | 1 + src/js/format.js | 1 + 8 files changed, 12 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 30798cf..103d80d 100644 --- a/package.json +++ b/package.json @@ -41,6 +41,7 @@ "prediction2": 11, "prediction3": 12, "predictionRecency": 13, + "prediction4": 14, "mmol": 1, "topOfGraph": 2, diff --git a/src/app_messages.c b/src/app_messages.c index 481af9b..2b97f87 100644 --- a/src/app_messages.c +++ b/src/app_messages.c @@ -146,6 +146,7 @@ bool validate_data_message(DictionaryIterator *data, DataMessage *out) { memcpy(out->prediction_1, zeroes, PREDICTION_MAX_LENGTH * sizeof(uint8_t)); memcpy(out->prediction_2, zeroes, PREDICTION_MAX_LENGTH * sizeof(uint8_t)); memcpy(out->prediction_3, zeroes, PREDICTION_MAX_LENGTH * sizeof(uint8_t)); + memcpy(out->prediction_4, zeroes, PREDICTION_MAX_LENGTH * sizeof(uint8_t)); bool success = true && get_int32(data, &out->recency, MESSAGE_KEY_recency, false, 0) @@ -162,6 +163,7 @@ bool validate_data_message(DictionaryIterator *data, DataMessage *out) { get_prediction(data, out->prediction_1, MESSAGE_KEY_prediction1, &out->prediction_length); get_prediction(data, out->prediction_2, MESSAGE_KEY_prediction2, &out->prediction_length); get_prediction(data, out->prediction_3, MESSAGE_KEY_prediction3, &out->prediction_length); + get_prediction(data, out->prediction_4, MESSAGE_KEY_prediction4, &out->prediction_length); if (out->prediction_length > 0) { success = success && get_int32(data, &out->prediction_recency, MESSAGE_KEY_predictionRecency, false, 0); } diff --git a/src/app_messages.h b/src/app_messages.h index 940f560..b611880 100644 --- a/src/app_messages.h +++ b/src/app_messages.h @@ -31,6 +31,7 @@ typedef struct __attribute__((__packed__)) DataMessage { uint8_t prediction_1[PREDICTION_MAX_LENGTH]; uint8_t prediction_2[PREDICTION_MAX_LENGTH]; uint8_t prediction_3[PREDICTION_MAX_LENGTH]; + uint8_t prediction_4[PREDICTION_MAX_LENGTH]; int32_t prediction_recency; } DataMessage; diff --git a/src/comm.h b/src/comm.h index 6b7fb67..2e1309a 100644 --- a/src/comm.h +++ b/src/comm.h @@ -3,11 +3,11 @@ #include #include "app_messages.h" -// This can theoretically be maxed out to 984 bytes by combining: +// This can theoretically be maxed out to 1044 bytes by combining: // - status bar text of 255 characters // - point width of 1px (144 points + 144 "graph extra") -// - 3 prediction series of length 60 -#define CONTENT_SIZE 1024 +// - 4 prediction series of length 60 +#define CONTENT_SIZE 1200 // There are many failure modes... #define INITIAL_TIMEOUT_HALVED 2500 diff --git a/src/graph_element.c b/src/graph_element.c index 37bd5b9..4c5005b 100644 --- a/src/graph_element.c +++ b/src/graph_element.c @@ -244,8 +244,8 @@ static void graph_update_proc(Layer *layer, GContext *ctx) { // Prediction if (data->prediction_length > 0 && data->received_at - data->prediction_recency >= time(NULL) - MAX_PREDICTION_AGE_TO_SHOW_SECONDS) { - uint8_t* series[3] = {data->prediction_1, data->prediction_2, data->prediction_3}; - for(uint8_t si = 0; si < 3; si++) { + uint8_t* series[4] = {data->prediction_1, data->prediction_2, data->prediction_3, data->prediction_4}; + for(uint8_t si = 0; si < 4; si++) { for(i = prediction_skip; i < data->prediction_length; i++) { bg = series[si][i] * 2; if (bg == 0) { diff --git a/src/js/app.js b/src/js/app.js index 8167b16..4f3188d 100644 --- a/src/js/app.js +++ b/src/js/app.js @@ -84,6 +84,7 @@ function app(Pebble, c) { prediction1: predictions.series1, prediction2: predictions.series2, prediction3: predictions.series3, + prediction4: predictions.series4, predictionRecency: predictions.recency, }); } catch (e) { diff --git a/src/js/data.js b/src/js/data.js index 2d69bc6..854e8b9 100644 --- a/src/js/data.js +++ b/src/js/data.js @@ -939,6 +939,7 @@ var data = function(c, maxSGVCount) { if (lastPredicted && lastPredicted['predBGs']) { var series = [ + lastPredicted['predBGs']['UAM'], lastPredicted['predBGs']['IOB'], lastPredicted['predBGs']['COB'], lastPredicted['predBGs']['aCOB'], diff --git a/src/js/format.js b/src/js/format.js index d8fbd1b..fcd6ecb 100644 --- a/src/js/format.js +++ b/src/js/format.js @@ -197,6 +197,7 @@ var format = function(c) { series1: formattedSeries[0], series2: formattedSeries[1], series3: formattedSeries[2], + series4: formattedSeries[3], recency: recency, }; }; From 952ea214dffa8f6179993b9081d6f3040c859381 Mon Sep 17 00:00:00 2001 From: Matthias Granberry Date: Thu, 2 Nov 2017 11:01:21 -0500 Subject: [PATCH 2/2] show ZT instead of aCOB --- src/js/data.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/js/data.js b/src/js/data.js index 854e8b9..3e7f65a 100644 --- a/src/js/data.js +++ b/src/js/data.js @@ -942,7 +942,7 @@ var data = function(c, maxSGVCount) { lastPredicted['predBGs']['UAM'], lastPredicted['predBGs']['IOB'], lastPredicted['predBGs']['COB'], - lastPredicted['predBGs']['aCOB'], + lastPredicted['predBGs']['ZT'] || lastPredicted['predBGs']['aCOB'], ].filter(function(s) { return s !== undefined; });