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
MotionSensor.h@12:a8429f06a04b, 2019-10-08 (annotated)
- Committer:
- carlosperate
- Date:
- Tue Oct 08 17:28:40 2019 +0000
- Revision:
- 12:a8429f06a04b
Use local MotionSensor.h
Who changed what in which revision?
User | Revision | Line number | New 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 |