mirror of
https://github.com/google/pebble.git
synced 2025-03-22 11:42:19 +00:00
479 lines
9.8 KiB
C
479 lines
9.8 KiB
C
/*
|
|
* Copyright 2024 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
#include <stdint.h>
|
|
#include <string.h>
|
|
|
|
#include "services/normal/activity/activity_algorithm.h"
|
|
#include "util/size.h"
|
|
|
|
|
|
// ----------------------------------------------------------------
|
|
// Sample captured at: 2015-08-18 22:15:00 local, 2015-08-19 05:15:00 GMT
|
|
// According to Misfit:
|
|
// Total sleep from 10:42 pm to 4:06am (325 minutes)
|
|
// Deep sleep 182 min.
|
|
// Breakdown (very approximate):
|
|
// 10:15 - 10:42 awake (27 min)
|
|
// 10:42 - 10:50 light (8 min)
|
|
// 10:50 - 11:20 deep (30 min)
|
|
// 11:20 - 11:30 light (10 min)
|
|
// 11:30 - 11:40 deep (10 min)
|
|
// 11:40 - 12:30 light (50 min)
|
|
// 12:30 - 2:45 deep (135 min)
|
|
// 2:45 - 3:15 light (30 min)
|
|
// 3:15 - 3:35 deep (20 min)
|
|
// 3:35 - 4:06 light (30 min)
|
|
// 4:06 - 5:00 awake
|
|
AlgMinuteFileSampleV5 *activity_sample_sleep_v1_1(int *len) {
|
|
// list of: {steps, orientation, vmc}
|
|
static AlgMinuteFileSampleV5 samples[] = {
|
|
{0, 0x8f, 6},
|
|
{0, 0x8f, 0},
|
|
{0, 0x8f, 0},
|
|
{0, 0x8f, 0},
|
|
{0, 0x8f, 0},
|
|
{0, 0x8f, 0},
|
|
{0, 0x8f, 4},
|
|
{0, 0x8f, 0},
|
|
{0, 0x8f, 0},
|
|
{0, 0x65, 47},
|
|
{0, 0x44, 5},
|
|
{8, 0x63, 36},
|
|
{10, 0x52, 68},
|
|
{8, 0x53, 61},
|
|
{0, 0x63, 83},
|
|
// 15: Local time: 10:30:00 PM
|
|
{0, 0x64, 107},
|
|
{0, 0x79, 35},
|
|
{0, 0x78, 0},
|
|
{0, 0x78, 37},
|
|
{0, 0x68, 4},
|
|
{0, 0x68, 0},
|
|
{0, 0x68, 0},
|
|
{0, 0x69, 17},
|
|
{0, 0x69, 0},
|
|
{0, 0x68, 10},
|
|
{0, 0x67, 0},
|
|
{0, 0x68, 12},
|
|
{0, 0x68, 0}, // start light
|
|
{0, 0x68, 0},
|
|
{0, 0x67, 41},
|
|
// 30: Local time: 10:45:00 PM
|
|
{0, 0x64, 26},
|
|
{0, 0x54, 0},
|
|
{0, 0x54, 12},
|
|
{0, 0x64, 0},
|
|
{0, 0x64, 0},
|
|
{0, 0x64, 0}, // start deep (30 min)
|
|
{0, 0x64, 0},
|
|
{0, 0x64, 0},
|
|
{0, 0x64, 0},
|
|
{0, 0x64, 0},
|
|
{0, 0x54, 12},
|
|
{0, 0x54, 0},
|
|
{0, 0x54, 0},
|
|
{0, 0x54, 0},
|
|
{0, 0x54, 0},
|
|
// 45: Local time: 11:00:00 PM
|
|
{0, 0x54, 0},
|
|
{0, 0x54, 0},
|
|
{0, 0x54, 0},
|
|
{0, 0x54, 0},
|
|
{0, 0x54, 0},
|
|
{0, 0x54, 0},
|
|
{0, 0x54, 0},
|
|
{0, 0x54, 0},
|
|
{0, 0x54, 0},
|
|
{0, 0x54, 0},
|
|
{0, 0x54, 0},
|
|
{0, 0x54, 0},
|
|
{0, 0x54, 0},
|
|
{0, 0x54, 0},
|
|
{0, 0x54, 0},
|
|
// 60: Local time: 11:15:00 PM
|
|
{0, 0x54, 0},
|
|
{0, 0x54, 0},
|
|
{0, 0x54, 0},
|
|
{0, 0x54, 0},
|
|
{0, 0x54, 0}, // start light
|
|
{0, 0x54, 0},
|
|
{0, 0x54, 0},
|
|
{0, 0x54, 19},
|
|
{0, 0x54, 0},
|
|
{0, 0x54, 6},
|
|
{0, 0x64, 0},
|
|
{0, 0x64, 0},
|
|
{0, 0x64, 0},
|
|
{0, 0x64, 0},
|
|
{0, 0x64, 0},
|
|
// 75: Local time: 11:30:00 PM
|
|
{0, 0x64, 0}, // start deep
|
|
{0, 0x64, 0},
|
|
{0, 0x64, 0},
|
|
{0, 0x64, 0},
|
|
{0, 0x64, 0},
|
|
{0, 0x64, 0},
|
|
{0, 0x64, 0},
|
|
{0, 0x64, 0},
|
|
{0, 0x64, 0},
|
|
{0, 0x64, 0}, // start light
|
|
{0, 0x64, 0},
|
|
{0, 0x64, 0},
|
|
{0, 0x54, 16},
|
|
{0, 0x64, 0},
|
|
{0, 0x64, 0},
|
|
// 90: Local time: 11:45:00 PM
|
|
{0, 0x64, 0},
|
|
{0, 0x54, 2},
|
|
{0, 0x54, 0},
|
|
{0, 0x54, 7},
|
|
{0, 0x54, 0},
|
|
{0, 0x54, 0},
|
|
{0, 0x54, 0},
|
|
{0, 0x54, 0},
|
|
{0, 0x54, 14},
|
|
{0, 0x54, 0},
|
|
{0, 0x54, 0},
|
|
{0, 0x64, 16},
|
|
{0, 0x64, 0},
|
|
{0, 0x54, 13},
|
|
{0, 0x44, 0},
|
|
// 105: Local time: 12:00:00 AM
|
|
{0, 0x44, 0},
|
|
{0, 0x44, 0},
|
|
{0, 0x44, 8},
|
|
{0, 0x44, 0},
|
|
{0, 0x44, 0},
|
|
{0, 0x44, 0},
|
|
{0, 0x44, 0},
|
|
{0, 0x44, 0},
|
|
{0, 0x44, 0},
|
|
{0, 0x44, 0},
|
|
{0, 0x44, 6},
|
|
{0, 0x44, 0},
|
|
{0, 0x44, 0},
|
|
{0, 0x44, 0},
|
|
{0, 0x44, 0},
|
|
// 120: Local time: 12:15:00 AM
|
|
{0, 0x44, 2},
|
|
{0, 0x44, 8},
|
|
{0, 0x44, 0},
|
|
{0, 0x44, 12},
|
|
{0, 0x54, 0},
|
|
{0, 0x54, 0},
|
|
{0, 0x54, 0},
|
|
{0, 0x54, 0},
|
|
{0, 0x54, 0},
|
|
{0, 0x54, 0},
|
|
{0, 0x64, 28},
|
|
{0, 0x65, 28},
|
|
{0, 0x16, 0},
|
|
{0, 0x16, 0},
|
|
{0, 0x16, 0},
|
|
// 135: Local time: 12:30:00 AM
|
|
{0, 0x16, 0}, // start deep
|
|
{0, 0x16, 0},
|
|
{0, 0x16, 0},
|
|
{0, 0x16, 0},
|
|
{0, 0x16, 0},
|
|
{0, 0x16, 0},
|
|
{0, 0x16, 0},
|
|
{0, 0x16, 0},
|
|
{0, 0x16, 0},
|
|
{0, 0x16, 0},
|
|
{0, 0x16, 0},
|
|
{0, 0x16, 0},
|
|
{0, 0x16, 0},
|
|
{0, 0x16, 0},
|
|
{0, 0x16, 0},
|
|
// 150: Local time: 12:45:00 AM
|
|
{0, 0x16, 0},
|
|
{0, 0x16, 0},
|
|
{0, 0x16, 0},
|
|
{0, 0x16, 0},
|
|
{0, 0x16, 0},
|
|
{0, 0x16, 0},
|
|
{0, 0x16, 0},
|
|
{0, 0x16, 0},
|
|
{0, 0x16, 0},
|
|
{0, 0x16, 0},
|
|
{0, 0x16, 0},
|
|
{0, 0x16, 18},
|
|
{0, 0x16, 0},
|
|
{0, 0x16, 0},
|
|
{0, 0x16, 0},
|
|
// 165: Local time: 01:00:00 AM
|
|
{0, 0x16, 0},
|
|
{0, 0x16, 0},
|
|
{0, 0x16, 0},
|
|
{0, 0x16, 0},
|
|
{0, 0x16, 0},
|
|
{0, 0x16, 0},
|
|
{0, 0x16, 0},
|
|
{0, 0x16, 0},
|
|
{0, 0x16, 0},
|
|
{0, 0x16, 0},
|
|
{0, 0x16, 0},
|
|
{0, 0x16, 0},
|
|
{0, 0x16, 0},
|
|
{0, 0x16, 0},
|
|
{0, 0x16, 0},
|
|
// 180: Local time: 01:15:00 AM
|
|
{0, 0x16, 0},
|
|
{0, 0x16, 0},
|
|
{0, 0x16, 0},
|
|
{0, 0x16, 0},
|
|
{0, 0x16, 0},
|
|
{0, 0x16, 0},
|
|
{0, 0x16, 0},
|
|
{0, 0x16, 0},
|
|
{0, 0x16, 0},
|
|
{0, 0x16, 0},
|
|
{0, 0x36, 14},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
// 195: Local time: 01:30:00 AM
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
// 210: Local time: 01:45:00 AM
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
// 225: Local time: 02:00:00 AM
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
// 240: Local time: 02:15:00 AM
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
// 255: Local time: 02:30:00 AM
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x55, 18},
|
|
{0, 0x15, 0},
|
|
{0, 0x15, 0},
|
|
{0, 0x15, 0},
|
|
{0, 0x15, 0},
|
|
{0, 0x15, 5},
|
|
// 270: Local time: 02:45:00 AM
|
|
{0, 0x26, 26}, // start light
|
|
{0, 0x26, 0},
|
|
{0, 0x26, 0},
|
|
{0, 0x26, 0},
|
|
{0, 0x26, 0},
|
|
{0, 0x26, 0},
|
|
{0, 0x26, 0},
|
|
{0, 0x26, 0},
|
|
{0, 0x26, 0},
|
|
{0, 0x26, 0},
|
|
{0, 0x26, 0},
|
|
{0, 0x26, 0},
|
|
{0, 0x35, 20},
|
|
{0, 0x55, 0},
|
|
{0, 0x55, 0},
|
|
// 285: Local time: 03:00:00 AM
|
|
{0, 0x55, 0},
|
|
{0, 0x55, 0},
|
|
{0, 0x55, 0},
|
|
{0, 0x55, 0},
|
|
{0, 0x55, 0},
|
|
{0, 0x65, 9},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
// 300: Local time: 03:15:00 AM
|
|
{0, 0x65, 0}, // start deep
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
// 315: Local time: 03:30:00 AM
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0}, // start light
|
|
{0, 0x65, 0},
|
|
{0, 0x66, 17},
|
|
{0, 0x2a, 0},
|
|
{0, 0x2a, 0},
|
|
{0, 0x2a, 0},
|
|
{0, 0x2a, 0},
|
|
{0, 0x2b, 0},
|
|
{0, 0x2a, 0},
|
|
{0, 0x2a, 0},
|
|
{0, 0x2a, 0},
|
|
// 330: Local time: 03:45:00 AM
|
|
{0, 0x2a, 0},
|
|
{0, 0x57, 19},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x65, 0},
|
|
{0, 0x66, 20},
|
|
{0, 0x77, 8},
|
|
{0, 0x66, 6},
|
|
{0, 0x67, 18},
|
|
{0, 0x68, 0},
|
|
{0, 0x68, 11},
|
|
{0, 0x23, 44},
|
|
{0, 0x42, 62},
|
|
{0, 0x64, 0},
|
|
{0, 0x64, 0},
|
|
// 345: Local time: 04:00:00 AM
|
|
{0, 0x64, 0},
|
|
{0, 0x64, 0},
|
|
{0, 0x64, 0},
|
|
{0, 0x64, 0},
|
|
{0, 0x64, 0},
|
|
{0, 0x64, 0}, // wake up
|
|
{0, 0x64, 0},
|
|
{0, 0x64, 0},
|
|
{0, 0x64, 0},
|
|
{0, 0x64, 7},
|
|
{0, 0x63, 29},
|
|
{0, 0x64, 0},
|
|
{0, 0x7f, 37},
|
|
{0, 0x82, 21},
|
|
{0, 0x75, 17},
|
|
// 360: Local time: 04:15:00 AM
|
|
{12, 0x43, 63},
|
|
{31, 0x32, 55},
|
|
{0, 0x63, 40},
|
|
{0, 0x71, 42},
|
|
{0, 0x7f, 0},
|
|
{0, 0x7f, 0},
|
|
{0, 0x7f, 0},
|
|
{0, 0x7f, 0},
|
|
{0, 0x7f, 0},
|
|
{0, 0x7f, 0},
|
|
{0, 0x7f, 0},
|
|
{0, 0x70, 42},
|
|
{0, 0x65, 20},
|
|
{0, 0x77, 17},
|
|
{0, 0x77, 26},
|
|
// 375: Local time: 04:30:00 AM
|
|
{0, 0x77, 18},
|
|
{0, 0x67, 22},
|
|
{0, 0x65, 30},
|
|
{0, 0x68, 36},
|
|
{0, 0x68, 14},
|
|
{0, 0x68, 18},
|
|
{0, 0x76, 30},
|
|
{0, 0x75, 30},
|
|
{0, 0x65, 31},
|
|
{0, 0x65, 38},
|
|
{9, 0x70, 48},
|
|
{0, 0x71, 0},
|
|
{0, 0x6f, 30},
|
|
{0, 0x6f, 4},
|
|
{0, 0x6f, 0},
|
|
// 390: Local time: 04:45:00 AM
|
|
{0, 0x6f, 0},
|
|
{0, 0x6f, 0},
|
|
{0, 0x6f, 0},
|
|
{0, 0x6f, 0},
|
|
{0, 0x6f, 0},
|
|
{0, 0x6f, 0},
|
|
{0, 0x6f, 2},
|
|
{0, 0x6f, 0},
|
|
{0, 0x6f, 0},
|
|
{0, 0x6f, 0},
|
|
{0, 0x64, 48},
|
|
{0, 0x55, 0},
|
|
{0, 0x55, 36},
|
|
{0, 0x67, 32},
|
|
{0, 0x55, 0},
|
|
};
|
|
*len = ARRAY_LENGTH(samples);
|
|
return samples;
|
|
}
|
|
|