Fork from https://os.mbed.com/teams/NXP/code/FXOS8700Q/ to use a local and namespaced MotionSensor.h header that would otherwise clash with other libraries.

Dependents:   TALab2B_Part2_ECE595 TALab3C_i2c_acc Project1 FinalProject ... more

Committer:
carlosperate
Date:
Tue Oct 08 17:28:40 2019 +0000
Revision:
12:a8429f06a04b
Use local MotionSensor.h

Who changed what in which revision?

UserRevisionLine numberNew contents of line
carlosperate 12:a8429f06a04b 1 /* MotionSensor Base Class
carlosperate 12:a8429f06a04b 2 * Copyright (c) 2014-2015 ARM Limited
carlosperate 12:a8429f06a04b 3 *
carlosperate 12:a8429f06a04b 4 * Licensed under the Apache License, Version 2.0 (the "License");
carlosperate 12:a8429f06a04b 5 * you may not use this file except in compliance with the License.
carlosperate 12:a8429f06a04b 6 * You may obtain a copy of the License at
carlosperate 12:a8429f06a04b 7 *
carlosperate 12:a8429f06a04b 8 * http://www.apache.org/licenses/LICENSE-2.0
carlosperate 12:a8429f06a04b 9 *
carlosperate 12:a8429f06a04b 10 * Unless required by applicable law or agreed to in writing, software
carlosperate 12:a8429f06a04b 11 * distributed under the License is distributed on an "AS IS" BASIS,
carlosperate 12:a8429f06a04b 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
carlosperate 12:a8429f06a04b 13 * See the License for the specific language governing permissions and
carlosperate 12:a8429f06a04b 14 * limitations under the License.
carlosperate 12:a8429f06a04b 15 */
carlosperate 12:a8429f06a04b 16
carlosperate 12:a8429f06a04b 17 #ifndef MOTIONSENSOR_H
carlosperate 12:a8429f06a04b 18 #define MOTIONSENSOR_H
carlosperate 12:a8429f06a04b 19
carlosperate 12:a8429f06a04b 20 #include "stdint.h"
carlosperate 12:a8429f06a04b 21
carlosperate 12:a8429f06a04b 22 /** motion_data_counts_t struct
carlosperate 12:a8429f06a04b 23 */
carlosperate 12:a8429f06a04b 24 typedef struct {
carlosperate 12:a8429f06a04b 25 int16_t x; /*!< x-axis counts */
carlosperate 12:a8429f06a04b 26 int16_t y; /*!< y-axis counts */
carlosperate 12:a8429f06a04b 27 int16_t z; /*!< z-axis counts */
carlosperate 12:a8429f06a04b 28 } motion_data_counts_t;
carlosperate 12:a8429f06a04b 29
carlosperate 12:a8429f06a04b 30 /** motion_data_units_t struct
carlosperate 12:a8429f06a04b 31 */
carlosperate 12:a8429f06a04b 32 typedef struct {
carlosperate 12:a8429f06a04b 33 float x; /*!< x-axis counts */
carlosperate 12:a8429f06a04b 34 float y; /*!< y-axis counts */
carlosperate 12:a8429f06a04b 35 float z; /*!< z-axis counts */
carlosperate 12:a8429f06a04b 36 } motion_data_units_t;
carlosperate 12:a8429f06a04b 37
carlosperate 12:a8429f06a04b 38
carlosperate 12:a8429f06a04b 39 /** Motion Sensor Base Class
carlosperate 12:a8429f06a04b 40 Useful for accessing data in a common way
carlosperate 12:a8429f06a04b 41 */
carlosperate 12:a8429f06a04b 42 class MotionSensor
carlosperate 12:a8429f06a04b 43 {
carlosperate 12:a8429f06a04b 44 public:
carlosperate 12:a8429f06a04b 45
carlosperate 12:a8429f06a04b 46 /** Enable the sensor for operation
carlosperate 12:a8429f06a04b 47 */
carlosperate 12:a8429f06a04b 48 virtual void enable(void) const = 0;
carlosperate 12:a8429f06a04b 49
carlosperate 12:a8429f06a04b 50 /** disable the sensors operation
carlosperate 12:a8429f06a04b 51 */
carlosperate 12:a8429f06a04b 52 virtual void disable(void) const = 0;
carlosperate 12:a8429f06a04b 53
carlosperate 12:a8429f06a04b 54 /** Set the sensor sample rate
carlosperate 12:a8429f06a04b 55 @param frequency The desires sample frequency
carlosperate 12:a8429f06a04b 56 @return The amount of error in Hz between desired and actual frequency
carlosperate 12:a8429f06a04b 57 */
carlosperate 12:a8429f06a04b 58 virtual uint32_t sampleRate(uint32_t frequency) const = 0;
carlosperate 12:a8429f06a04b 59
carlosperate 12:a8429f06a04b 60 /** Tells of new data is ready
carlosperate 12:a8429f06a04b 61 @return The amount of data samples ready to be read from a device
carlosperate 12:a8429f06a04b 62 */
carlosperate 12:a8429f06a04b 63 virtual uint32_t dataReady(void) const = 0;
carlosperate 12:a8429f06a04b 64
carlosperate 12:a8429f06a04b 65 /** Get the x data in counts
carlosperate 12:a8429f06a04b 66 @param x A referene to the variable to put the data in, 0 denotes not used
carlosperate 12:a8429f06a04b 67 @return The x data in counts
carlosperate 12:a8429f06a04b 68 */
carlosperate 12:a8429f06a04b 69 virtual int16_t getX(int16_t &x) const = 0;
carlosperate 12:a8429f06a04b 70
carlosperate 12:a8429f06a04b 71 /** Get the y data in counts
carlosperate 12:a8429f06a04b 72 @param y A referene to the variable to put the data in, 0 denotes not used
carlosperate 12:a8429f06a04b 73 @return The y data in counts
carlosperate 12:a8429f06a04b 74 */
carlosperate 12:a8429f06a04b 75 virtual int16_t getY(int16_t &y) const = 0;
carlosperate 12:a8429f06a04b 76
carlosperate 12:a8429f06a04b 77 /** Get the z data in counts
carlosperate 12:a8429f06a04b 78 @param z A referene to the variable to put the data in, 0 denotes not used
carlosperate 12:a8429f06a04b 79 @return The z data in counts
carlosperate 12:a8429f06a04b 80 */
carlosperate 12:a8429f06a04b 81 virtual int16_t getZ(int16_t &z) const = 0;
carlosperate 12:a8429f06a04b 82
carlosperate 12:a8429f06a04b 83 /** Get the x data in units
carlosperate 12:a8429f06a04b 84 @param x A referene to the variable to put the data in, 0 denotes not used
carlosperate 12:a8429f06a04b 85 @return The x data in units
carlosperate 12:a8429f06a04b 86 */
carlosperate 12:a8429f06a04b 87 virtual float getX(float &x) const = 0;
carlosperate 12:a8429f06a04b 88
carlosperate 12:a8429f06a04b 89 /** Get the y data in units
carlosperate 12:a8429f06a04b 90 @param y A referene to the variable to put the data in, 0 denotes not used
carlosperate 12:a8429f06a04b 91 @return The y data in units
carlosperate 12:a8429f06a04b 92 */
carlosperate 12:a8429f06a04b 93 virtual float getY(float &y) const = 0;
carlosperate 12:a8429f06a04b 94
carlosperate 12:a8429f06a04b 95 /** Get the z data in units
carlosperate 12:a8429f06a04b 96 @param z A referene to the variable to put the data in, 0 denotes not used
carlosperate 12:a8429f06a04b 97 @return The z data in units
carlosperate 12:a8429f06a04b 98 */
carlosperate 12:a8429f06a04b 99 virtual float getZ(float &z) const = 0;
carlosperate 12:a8429f06a04b 100
carlosperate 12:a8429f06a04b 101 /** Get the x,y,z data in counts
carlosperate 12:a8429f06a04b 102 @param xyz A referene to the variable to put the data in, 0 denotes not used
carlosperate 12:a8429f06a04b 103 */
carlosperate 12:a8429f06a04b 104 virtual void getAxis(motion_data_counts_t &xyz) const = 0;
carlosperate 12:a8429f06a04b 105
carlosperate 12:a8429f06a04b 106 /** Get the x,y,z data in units
carlosperate 12:a8429f06a04b 107 @param xyz A referene to the variable to put the data in, 0 denotes not used
carlosperate 12:a8429f06a04b 108 */
carlosperate 12:a8429f06a04b 109 virtual void getAxis(motion_data_units_t &xyz) const = 0;
carlosperate 12:a8429f06a04b 110 };
carlosperate 12:a8429f06a04b 111
carlosperate 12:a8429f06a04b 112 #endif