Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
util.cpp@0:15d3cdafd311, 2014-12-11 (annotated)
- Committer:
- jgoldberg
- Date:
- Thu Dec 11 21:54:03 2014 +0000
- Revision:
- 0:15d3cdafd311
- Child:
- 1:9ebe670d8a19
Accurately counting 0-50 pills
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jgoldberg | 0:15d3cdafd311 | 1 | #include "mbed.h" |
jgoldberg | 0:15d3cdafd311 | 2 | #include "util.h" |
jgoldberg | 0:15d3cdafd311 | 3 | |
jgoldberg | 0:15d3cdafd311 | 4 | uint16_t mvgAvg(uint16_t val, int reset) { |
jgoldberg | 0:15d3cdafd311 | 5 | const uint32_t len = 25; |
jgoldberg | 0:15d3cdafd311 | 6 | static uint16_t vals[len] = {0}; |
jgoldberg | 0:15d3cdafd311 | 7 | static uint32_t ind = 0; |
jgoldberg | 0:15d3cdafd311 | 8 | static uint32_t full = 0; |
jgoldberg | 0:15d3cdafd311 | 9 | static uint32_t sum = 0; |
jgoldberg | 0:15d3cdafd311 | 10 | |
jgoldberg | 0:15d3cdafd311 | 11 | if (reset) { |
jgoldberg | 0:15d3cdafd311 | 12 | ind = full = sum = 0; |
jgoldberg | 0:15d3cdafd311 | 13 | return 0; |
jgoldberg | 0:15d3cdafd311 | 14 | } |
jgoldberg | 0:15d3cdafd311 | 15 | if (full) { |
jgoldberg | 0:15d3cdafd311 | 16 | sum -= vals[ind]; |
jgoldberg | 0:15d3cdafd311 | 17 | } |
jgoldberg | 0:15d3cdafd311 | 18 | sum += val; |
jgoldberg | 0:15d3cdafd311 | 19 | vals[ind] = val; |
jgoldberg | 0:15d3cdafd311 | 20 | |
jgoldberg | 0:15d3cdafd311 | 21 | ind++; |
jgoldberg | 0:15d3cdafd311 | 22 | if (ind >= len) { |
jgoldberg | 0:15d3cdafd311 | 23 | ind = 0; |
jgoldberg | 0:15d3cdafd311 | 24 | full = 1; |
jgoldberg | 0:15d3cdafd311 | 25 | } |
jgoldberg | 0:15d3cdafd311 | 26 | if (full) { |
jgoldberg | 0:15d3cdafd311 | 27 | return (uint16_t) (sum / len); |
jgoldberg | 0:15d3cdafd311 | 28 | } |
jgoldberg | 0:15d3cdafd311 | 29 | return (uint16_t) (sum / ind); |
jgoldberg | 0:15d3cdafd311 | 30 | } |
jgoldberg | 0:15d3cdafd311 | 31 | |
jgoldberg | 0:15d3cdafd311 | 32 | int round(float val) { |
jgoldberg | 0:15d3cdafd311 | 33 | return val > 0 ? ((int) (val + 0.5)) : ((int) (val - 0.5)); |
jgoldberg | 0:15d3cdafd311 | 34 | } |