summaryrefslogtreecommitdiffstats
path: root/services/sensorservice/legacy/SecondOrderLowPassFilter.h
diff options
context:
space:
mode:
authorRicardo Cerqueira <cyanogenmod@cerqueira.org>2013-04-21 06:43:33 -0700
committerGerrit Code Review <gerrit@cyanogenmod.org>2013-04-21 06:43:33 -0700
commit8c4be653e9e412ed9425e843e40a8037d084fd6d (patch)
treefd327d1a5bef0ceae9b4ad538d9960cb1c50fe4e /services/sensorservice/legacy/SecondOrderLowPassFilter.h
parent6eebd8b63762e7515ca1953e0bd23d15557cb621 (diff)
parentab764de51f6f903deacfc1556fe8498fc4f73088 (diff)
downloadframeworks_native-8c4be653e9e412ed9425e843e40a8037d084fd6d.zip
frameworks_native-8c4be653e9e412ed9425e843e40a8037d084fd6d.tar.gz
frameworks_native-8c4be653e9e412ed9425e843e40a8037d084fd6d.tar.bz2
Merge "sensorservice: Add legacy sensors fusion." into cm-10.1
Diffstat (limited to 'services/sensorservice/legacy/SecondOrderLowPassFilter.h')
-rw-r--r--services/sensorservice/legacy/SecondOrderLowPassFilter.h73
1 files changed, 73 insertions, 0 deletions
diff --git a/services/sensorservice/legacy/SecondOrderLowPassFilter.h b/services/sensorservice/legacy/SecondOrderLowPassFilter.h
new file mode 100644
index 0000000..85698ca
--- /dev/null
+++ b/services/sensorservice/legacy/SecondOrderLowPassFilter.h
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * 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.
+ */
+
+#ifndef ANDROID_SECOND_ORDER_LOW_PASS_FILTER_H
+#define ANDROID_SECOND_ORDER_LOW_PASS_FILTER_H
+
+#include <stdint.h>
+#include <sys/types.h>
+
+// ---------------------------------------------------------------------------
+
+namespace android {
+// ---------------------------------------------------------------------------
+
+class BiquadFilter;
+
+/*
+ * State of a 2nd order low-pass IIR filter
+ */
+class SecondOrderLowPassFilter {
+ friend class BiquadFilter;
+ float iQ, fc;
+ float K, iD;
+ float a0, a1;
+ float b1, b2;
+public:
+ SecondOrderLowPassFilter(float Q, float fc);
+ void setSamplingPeriod(float dT);
+};
+
+/*
+ * Implements a Biquad IIR filter
+ */
+class BiquadFilter {
+ float x1, x2;
+ float y1, y2;
+ const SecondOrderLowPassFilter& s;
+public:
+ BiquadFilter(const SecondOrderLowPassFilter& s);
+ float init(float in);
+ float operator()(float in);
+};
+
+/*
+ * Two cascaded biquad IIR filters
+ * (4-poles IIR)
+ */
+class CascadedBiquadFilter {
+ BiquadFilter mA;
+ BiquadFilter mB;
+public:
+ CascadedBiquadFilter(const SecondOrderLowPassFilter& s);
+ float init(float in);
+ float operator()(float in);
+};
+
+// ---------------------------------------------------------------------------
+}; // namespace android
+
+#endif // ANDROID_SECOND_ORDER_LOW_PASS_FILTER_H