ISSDK  1.8
IoT Sensing Software Development Kit
pedometer.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2015, Freescale Semiconductor, Inc.
3  * Copyright 2016-2017 NXP
4  * All rights reserved.
5  *
6  * SPDX-License-Identifier: BSD-3-Clause
7  */
8 
9 /**
10 * @file pedometer.h
11 * @brief The pedometer.h file contains the interface and structure definitions for
12 * pedometer application.
13 */
14 
15 #ifndef PEDOMETER_H_
16 #define PEDOMETER_H_
17 
18 #include <stddef.h>
19 #include <stdint.h>
20 #include <stdbool.h>
21 #include "KeynetikPedometer.h"
22 /******************************************************************************
23  * Public Datatypes
24  *****************************************************************************/
25 
26 typedef KeynetikActivityLevel activitylevel_t; /* alias to a shorter name for readability */
27 typedef uint16_t debounce_count_t;
28 #define PEDO_ONEG_8G 4096 /* One G value for 8G mode.*/
29 #define PEDO_ONEG_4G 8192 /* One G value for 4G mode.*/
30 #define PEDO_ONEG_2G 16384 /* One G value for 2G mode.*/
31 #define PEDO_FREQHZ_DEFAULT 50 /* Default frequency*/
32 #define PEDO_STEP_THRESHOLD_DEFAULT 130
33 #define PEDO_SPEED_PERIOD_DEFAULT 5
34 #define PEDO_FILTER_TIME_DEFAULT 3
35 #define PEDO_FILTER_STEPS_DEFAULT 4
36 /*!
37  * @brief This defines the acceleration input data for the pedometer.
38  */
39 typedef struct
40 {
41  int16_t accel[3];
42 } ped_accel_t;
43 /*!
44  * @brief This defines the configuration structure of the pedometer.
45  */
46 typedef struct
47 {
48  uint16_t sleepminimum; /* Sleep vector magnitude minimum */
49  uint16_t sleepmaximum; /* Sleep vector magnitude maximum */
50  debounce_count_t sleepcount_threshold; /* Sleep debounce counter threshold */
51  struct
52  {
53  uint8_t : 5; /* Reserved */
54  bool sleep_dbcntm : 1; /* Sleep debounce counter mode. Set to 1 to clear the debounce counter when the test
55  condition fails, otherwise decrement. */
56  bool activity_dbcntm : 1; /* Activity debounce counter mode. Set to 1 to clear the debounce counter when the
57  test condition fails, otherwise decrement. */
58  bool config : 1; /* Set to 1 to initialize the pedometer and configure it with the other configuration
59  variables. */
60  } bits;
61  KeynetikConfig keynetik; /* Keynetik parameters (step length, height, weight, etc) */
62  debounce_count_t activitycount_threshold; /* Activity debounce counter threshold */
63  uint8_t stepcoalesce; /* Number of steps to coalesce for step interrupt */
64  uint16_t oneG; /* One G value for the range at accelerometer is running. refer the data sheet of the accelerometer
65  and compute this value.
66  eg. 2G Mode, 1G is 4096.*/
67  uint16_t frequency; /* The frequency at which accelerometer runs in HZ. best set frequencies are 25HZ or 50HZ. It
68  can run at higher too.*/
70 /*!
71  * @brief This defines the pedometer instance.
72  */
73 typedef struct
74 {
76  {
77  union
78  {
79  struct
80  {
81  activitylevel_t activity : 3; /* Activity level. */
82  bool suspend : 1; /* Pedometer autonomously suspended. */
83  bool activitychange : 1; /* Change in activity level. */
84  bool stepchange : 1; /* Change in step count. */
85  bool suspendchange : 1; /* Change in suspend state .*/
86  bool mergedflags : 1; /* Merged status flags. */
87  } bits;
88  uint8_t byte;
89  } status;
90  uint8_t version; /* Pedometer version number. */
91  uint16_t stepcount; /* Step count. */
92  uint16_t distance; /* Total distance in meters or activity state. */
93  uint16_t speed; /* Average speed in meters per hour. The value is updated on the completion of each step. */
94  uint16_t calories; /* Calorie count expended. */
95  debounce_count_t sleepcount; /* Sleep debounce counter. */
96  } status;
97  pedometer_config_t config; /* Pedometer configuration.*/
99  {
100  debounce_count_t activitycount; /* Activity debounce counter. */
101  uint16_t stepchg_stepcount; /* Step count at last stepchange interrupt (for step coalesing) */
102  } private;
103 } pedometer_t;
104 
105 /******************************************************************************
106  * Public Function Declarations
107  ******************************************************************************/
108 /*******************************************************************************
109  * API
110  ******************************************************************************/
111 /*! @brief The interface function initialize the pedometer.
112  * @details This function initialize the pedometer structure and return the handle.
113 
114  * @param[in] pPedometer handle to the pedometer.
115  *
116  * @return void.
117  *
118  * @Constraints None
119  *
120  * @Reentrant Yes
121  */
122 void pedometer_init(pedometer_t *pPedometer);
123 
124 /*! @brief The interface function to configure the pedometer.
125  *
126  * @param[in] pedometer_t handle to the pedometer.
127  * @param[in] config configuration value.
128  *
129  * @return void.
130  *
131  * @Constraints None
132  *
133  * @Reentrant Yes
134  */
135 void pedometer_configure(pedometer_t *pPedometer, const pedometer_config_t *pConfig);
136 /*! @brief The interface function excutes the pedometer algorithm.
137  * @details Call this function the rate at which accelerometer runs.
138 
139  * @param[in] pPedometer handle to the pedometer.
140  * @param[in] accel_data acceleration data.
141  * @return ::pedometer_run() returns the status .
142  *
143  * @Constraints None
144  *
145  * @Reentrant Yes
146  */
147 int32_t pedometer_run(pedometer_t *pPedometer, ped_accel_t *pData);
148 
149 #endif // PEDOMETER_H_
KeynetikConfig keynetik
Definition: pedometer.h:61
KeynetikActivityLevel activitylevel_t
Definition: pedometer.h:26
int32_t status
uint8_t stepcoalesce
Definition: pedometer.h:63
This defines the configuration structure of the pedometer.
Definition: pedometer.h:46
debounce_count_t sleepcount_threshold
Definition: pedometer.h:50
typedef int32_t(DATA_FORMAT_Append_t))(void *pData
The interface function to append the data on the formated stream.
debounce_count_t activitycount_threshold
Definition: pedometer.h:62
This defines the pedometer instance.
Definition: pedometer.h:73
This defines the acceleration input data for the pedometer.
Definition: pedometer.h:39
uint16_t frequency
Definition: pedometer.h:67
uint16_t sleepminimum
Definition: pedometer.h:48
pedometer_config_t config
Definition: pedometer.h:97
uint16_t debounce_count_t
Definition: pedometer.h:27
uint16_t sleepmaximum
Definition: pedometer.h:49
int32_t pedometer_run(pedometer_t *pPedometer, ped_accel_t *pData)
The interface function excutes the pedometer algorithm.
Definition: pedometer.c:125
void pedometer_configure(pedometer_t *pPedometer, const pedometer_config_t *pConfig)
The interface function to configure the pedometer.
Definition: pedometer.c:111
void pedometer_init(pedometer_t *pPedometer)
The interface function initialize the pedometer.
Definition: pedometer.c:97