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.
Diff: Motion/Motion.cpp
- Revision:
- 0:3f846fc933a2
- Child:
- 1:2f5a62eb52ad
diff -r 000000000000 -r 3f846fc933a2 Motion/Motion.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Motion/Motion.cpp Sun Sep 01 23:35:18 2013 +0000
@@ -0,0 +1,77 @@
+//
+// This file contains function related to the motion
+// control of the home monitoring system
+//
+
+#include <vector>
+#include <string>
+#include <sstream>
+
+// FIXME - add timestamp to motion samples
+#include "Motion.h"
+
+Motion::Motion() {
+ // These are motion deltas based on playing with
+ // mbed application board motion sensors
+ min_motion.x = 0.097;
+ min_motion.y = 0.097;
+ min_motion.z = 0.097;
+ max_samples_limit = 100; // Max motion buffer is 100 deep
+ max_samples = 20;
+ sample_ptr = 0;
+ wrapped_once = false;
+ // WARNING - width here is important - must be 7 characters!
+ motion_samples.resize(max_samples,"0.00000");
+}
+
+bool Motion::change_max_samples(int num_samples) {
+ // WARNING - setting this dumps all saved data!
+ if (num_samples > 0 && num_samples <= max_samples_limit) {
+ max_samples = num_samples;
+ // WARNING - width here is important - must be 7 characters!
+ motion_samples.resize(max_samples, "0.00000");
+ return true;
+ }
+ else {
+ return false;
+ }
+}
+
+void Motion::add_sample(double sample) {
+ std::string str_sample;
+ convert_sample(sample, str_sample);
+ if (sample_ptr == max_samples) {
+ wrapped_once = true;
+ sample_ptr = 0;
+ motion_samples[sample_ptr] = str_sample;
+ }
+ else {
+ motion_samples[sample_ptr++] = str_sample;
+ }
+}
+
+bool Motion::set_motion_thresh(motion_vec motion_thresh) {
+ // FIXME - maybe add limit checking here. At least
+ // limit to 7 character values?
+ min_motion.x = motion_thresh.x;
+ min_motion.y = motion_thresh.y;
+ min_motion.z = motion_thresh.z;
+ return true;
+}
+
+motion_vec Motion::get_motion_thresh(void) {
+ return min_motion;
+}
+
+int Motion::get_max_samples() {
+ return max_samples;
+}
+
+const std::vector<std::string> &Motion::get_samples(void) {
+ // FIXME - need to copy out samples in order of oldest
+ // to newest or maybe not if change to contain timestamp
+ // and let the host worry about adding it. If use multi-map
+ // it would be sorted automatically. Maybe a better idea.
+ return motion_samples;
+}
+