@@ -42,22 +42,29 @@ static const uint8_t g_acc_init[][2] = {
42
42
/* most recent acceleration measurement */
43
43
static int16_t acc [3 ];
44
44
45
- #if CONFIG_ACCEL_SLEEP
45
+
46
+ #if CONFIG_ACCEL_MOTION
46
47
#define ACC_BUFFER_LEN 10
47
48
#define ACC_DELTA_THRES 100000L
48
- #define ACC_SLEEP_THRES 300
49
49
50
50
static int16_t acc_buffer [ACC_BUFFER_LEN ][3 ];
51
51
static int32_t acc_avg [3 ];
52
52
static uint8_t acc_buffer_index ;
53
53
static uint8_t acc_buffer_full ;
54
- static uint16_t sleep_counter ;
55
54
56
55
uint8_t moving = 1 ;
56
+ #endif /* CONFIG_ACCEL_MOTION */
57
+
58
+
59
+ #if CONFIG_ACCEL_SLEEP
60
+ #define ACC_SLEEP_THRES 300
61
+
57
62
uint8_t sleep = 0 ;
63
+ static uint16_t sleep_counter ;
58
64
#endif /* CONFIG_ACCEL_SLEEP */
59
65
60
66
67
+
61
68
void acc_write (uint8_t cmd , uint8_t data )
62
69
{
63
70
nrf_gpio_pin_clear (CONFIG_ACC_nCS );
@@ -105,7 +112,7 @@ void acc_read(uint8_t cmd, uint8_t len, uint8_t *data)
105
112
}
106
113
107
114
108
- #if CONFIG_ACCEL_SLEEP
115
+ #if CONFIG_ACCEL_MOTION
109
116
static void acc_process_sample (void )
110
117
{
111
118
int16_t acc_delta ;
@@ -130,16 +137,20 @@ static void acc_process_sample(void)
130
137
if (acc_delta_norm < ACC_DELTA_THRES )
131
138
{
132
139
moving = 0 ;
140
+ #if CONFIG_ACCEL_SLEEP
133
141
if (!sleep && ++ sleep_counter > ACC_SLEEP_THRES )
134
142
sleep = 1 ;
143
+ #endif /* CONFIG_ACCEL_SLEEP */
135
144
} else {
145
+ moving = 1 ;
146
+ acc_buffer_index = 0 ;
147
+ acc_buffer_full = 0 ;
148
+ #if CONFIG_ACCEL_SLEEP
136
149
if (sleep )
137
150
status_flags |= FLAG_WOKEUP ;
138
- moving = 1 ;
139
151
sleep = 0 ;
140
152
sleep_counter = 0 ;
141
- acc_buffer_index = 0 ;
142
- acc_buffer_full = 0 ;
153
+ #endif /* CONFIG_ACCEL_SLEEP */
143
154
}
144
155
}
145
156
@@ -153,7 +164,7 @@ static void acc_process_sample(void)
153
164
if (!acc_buffer_full && !acc_buffer_index )
154
165
acc_buffer_full = 1 ;
155
166
}
156
- #endif /* CONFIG_ACCEL_SLEEP */
167
+ #endif /* CONFIG_ACCEL_MOTION */
157
168
158
169
159
170
void acc_sample (void )
@@ -164,7 +175,7 @@ void acc_sample(void)
164
175
acc_read (ACC_REG_OUT_X , sizeof (acc ), (uint8_t * )& acc );
165
176
acc_write (ACC_REG_CTRL_REG1 , 0x00 );
166
177
167
- #if CONFIG_ACCEL_SLEEP
178
+ #if CONFIG_ACCEL_MOTION
168
179
acc_process_sample ();
169
180
#endif
170
181
}
@@ -219,10 +230,13 @@ uint8_t acc_init(void)
219
230
for (i = 0 ; i < ACC_INIT_COUNT ; i ++ )
220
231
acc_write (g_acc_init [i ][0 ], g_acc_init [i ][1 ]);
221
232
222
- #if CONFIG_ACCEL_SLEEP
233
+ #if CONFIG_ACCEL_MOTION
223
234
acc_buffer_index = 0 ;
224
235
acc_buffer_full = 0 ;
225
236
moving = 1 ;
237
+ #endif /* CONFIG_ACCEL_MOTION */
238
+
239
+ #if CONFIG_ACCEL_SLEEP
226
240
sleep = 0 ;
227
241
sleep_counter = 0 ;
228
242
#endif /* CONFIG_ACCEL_SLEEP */
0 commit comments