upm  1.2.0
Sensor/Actuator repository for libmraa (v1.6.1)
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
bma250e.hpp
1 /*
2  * Author: Jon Trulson <jtrulson@ics.com>
3  * Copyright (c) 2016-2017 Intel Corporation.
4  *
5  * The MIT License
6  *
7  * Permission is hereby granted, free of charge, to any person obtaining
8  * a copy of this software and associated documentation files (the
9  * "Software"), to deal in the Software without restriction, including
10  * without limitation the rights to use, copy, modify, merge, publish,
11  * distribute, sublicense, and/or sell copies of the Software, and to
12  * permit persons to whom the Software is furnished to do so, subject to
13  * the following conditions:
14  *
15  * The above copyright notice and this permission notice shall be
16  * included in all copies or substantial portions of the Software.
17  *
18  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
19  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
21  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
22  * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
23  * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
24  * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25  */
26 #pragma once
27 
28 #include <string>
29 #include <vector>
30 
31 #include <mraa/gpio.hpp>
32 #include "bma250e.h"
33 
34 namespace upm {
35 
70  class BMA250E {
71  public:
72 
89  BMA250E(int bus=BMA250E_DEFAULT_I2C_BUS,
90  int addr=BMA250E_DEFAULT_ADDR,
91  int cs=-1);
92 
96  ~BMA250E();
97 
103  void update();
104 
110  uint8_t getChipID();
111 
123  void getAccelerometer(float *x, float *y, float *z);
124 
133  std::vector<float> getAccelerometer();
134 
144  float getTemperature(bool fahrenheit=false);
145 
159  void init(BMA250E_POWER_MODE_T pwr=BMA250E_POWER_MODE_NORMAL,
160  BMA250E_RANGE_T range=BMA250E_RANGE_2G,
161  BMA250E_BW_T bw=BMA250E_BW_250);
162 
171  void reset();
172 
180  void setRange(BMA250E_RANGE_T range);
181 
188  void setBandwidth(BMA250E_BW_T bw);
189 
208  void setPowerMode(BMA250E_POWER_MODE_T power);
209 
227  void enableFIFO(bool useFIFO);
228 
237  void fifoSetWatermark(int wm);
238 
248  void fifoConfig(BMA250E_FIFO_MODE_T mode,
249  BMA250E_FIFO_DATA_SEL_T axes);
250 
262  void setSelfTest(bool sign, bool amp, BMA250E_SELFTTEST_AXIS_T axis);
263 
271  uint8_t getInterruptEnable0();
272 
280  void setInterruptEnable0(uint8_t bits);
281 
288  uint8_t getInterruptEnable1();
289 
297  void setInterruptEnable1(uint8_t bits);
298 
305  uint8_t getInterruptEnable2();
306 
314  void setInterruptEnable2(uint8_t bits);
315 
323  uint8_t getInterruptMap0();
324 
333  void setInterruptMap0(uint8_t bits);
334 
341  uint8_t getInterruptMap1();
342 
350  void setInterruptMap1(uint8_t bits);
351 
358  uint8_t getInterruptMap2();
359 
367  void setInterruptMap2(uint8_t bits);
368 
377  uint8_t getInterruptSrc();
378 
388  void setInterruptSrc(uint8_t bits);
389 
398  uint8_t getInterruptOutputControl();
399 
409  void setInterruptOutputControl(uint8_t bits);
410 
416  void clearInterruptLatches();
417 
424  BMA250E_RST_LATCH_T getInterruptLatchBehavior();
425 
433  void setInterruptLatchBehavior(BMA250E_RST_LATCH_T latch);
434 
442  uint8_t getInterruptStatus0();
443 
450  uint8_t getInterruptStatus1();
451 
458  uint8_t getInterruptStatus2();
459 
468  uint8_t getInterruptStatus3Bits();
469 
476  BMA250E_ORIENT_T getInterruptStatus3Orientation();
477 
491  void enableRegisterShadowing(bool shadow);
492 
502  void enableOutputFiltering(bool filter);
503 
512  void setLowPowerMode2();
513 
514 
515 #if defined(SWIGJAVA) || defined(JAVACALLBACK)
516  void installISR(BMA250E_INTERRUPT_PINS_T intr, int gpio,
517  mraa::Edge level, jobject runnable)
518  {
519  installISR(intr, gpio, level, mraa_java_isr_callback, runnable);
520  }
521 #else
522 
535  void installISR(BMA250E_INTERRUPT_PINS_T intr, int gpio,
536  mraa::Edge level,
537  void (*isr)(void *), void *arg);
538 #endif
539 
546  void uninstallISR(BMA250E_INTERRUPT_PINS_T intr);
547 
554  uint8_t readReg(uint8_t reg);
555 
564  int readRegs(uint8_t reg, uint8_t *buffer, int len);
565 
573  void writeReg(uint8_t reg, uint8_t val);
574 
575  protected:
576  bma250e_context m_bma250e;
577 
578  private:
579  // Adding a private function definition for java bindings
580 #if defined(SWIGJAVA) || defined(JAVACALLBACK)
581  void installISR(BMA250E_INTERRUPT_PINS_T intr, int gpio,
582  mraa::Edge level,
583  void (*isr)(void *), void *arg);
584 #endif
585  };
586 }
void uninstallISR(BMA250E_INTERRUPT_PINS_T intr)
Definition: bma250e.cxx:347
void setPowerMode(BMA250E_POWER_MODE_T power)
Definition: bma250e.cxx:147
BMA250E(int bus=BMA250E_DEFAULT_I2C_BUS, int addr=BMA250E_DEFAULT_ADDR, int cs=-1)
Definition: bma250e.cxx:44
void fifoSetWatermark(int wm)
Definition: bma250e.cxx:154
int readRegs(uint8_t reg, uint8_t *buffer, int len)
Definition: bma250e.cxx:82
uint8_t getInterruptEnable0()
Definition: bma250e.cxx:176
void setInterruptSrc(uint8_t bits)
Definition: bma250e.cxx:253
void setBandwidth(BMA250E_BW_T bw)
Definition: bma250e.cxx:140
void setInterruptMap1(uint8_t bits)
Definition: bma250e.cxx:229
C API for the bma250e driver.
uint8_t getInterruptEnable2()
Definition: bma250e.cxx:200
void enableRegisterShadowing(bool shadow)
Definition: bma250e.cxx:291
void writeReg(uint8_t reg, uint8_t val)
Definition: bma250e.cxx:92
uint8_t readReg(uint8_t reg)
Definition: bma250e.cxx:77
void setInterruptEnable0(uint8_t bits)
Definition: bma250e.cxx:181
uint8_t getInterruptSrc()
Definition: bma250e.cxx:248
void setInterruptOutputControl(uint8_t bits)
Definition: bma250e.cxx:265
float getTemperature(bool fahrenheit=false)
Definition: bma250e.cxx:117
void setLowPowerMode2()
Definition: bma250e.cxx:330
uint8_t getInterruptMap2()
Definition: bma250e.cxx:236
void setInterruptMap0(uint8_t bits)
Definition: bma250e.cxx:217
BMA250E_ORIENT_T getInterruptStatus3Orientation()
Definition: bma250e.cxx:325
uint8_t getInterruptStatus0()
Definition: bma250e.cxx:305
void reset()
Definition: bma250e.cxx:126
Definition: bma250e.h:54
void setInterruptEnable1(uint8_t bits)
Definition: bma250e.cxx:193
uint8_t getInterruptStatus2()
Definition: bma250e.cxx:315
~BMA250E()
Definition: bma250e.cxx:52
void installISR(BMA250E_INTERRUPT_PINS_T intr, int gpio, mraa::Edge level, void(*isr)(void *), void *arg)
Definition: bma250e.cxx:337
void setSelfTest(bool sign, bool amp, BMA250E_SELFTTEST_AXIS_T axis)
Definition: bma250e.cxx:169
void clearInterruptLatches()
Definition: bma250e.cxx:272
void setInterruptEnable2(uint8_t bits)
Definition: bma250e.cxx:205
uint8_t getInterruptStatus1()
Definition: bma250e.cxx:310
void fifoConfig(BMA250E_FIFO_MODE_T mode, BMA250E_FIFO_DATA_SEL_T axes)
Definition: bma250e.cxx:161
void update()
Definition: bma250e.cxx:65
void enableFIFO(bool useFIFO)
Definition: bma250e.cxx:72
API for the BMA250E 10 bit Triaxial Accelerometer.
Definition: bma250e.hpp:70
void setInterruptMap2(uint8_t bits)
Definition: bma250e.cxx:241
std::vector< float > getAccelerometer()
Definition: bma250e.cxx:109
uint8_t getInterruptMap0()
Definition: bma250e.cxx:212
uint8_t getInterruptStatus3Bits()
Definition: bma250e.cxx:320
uint8_t getChipID()
Definition: bma250e.cxx:99
void enableOutputFiltering(bool filter)
Definition: bma250e.cxx:298
void init(BMA250E_POWER_MODE_T pwr=BMA250E_POWER_MODE_NORMAL, BMA250E_RANGE_T range=BMA250E_RANGE_2G, BMA250E_BW_T bw=BMA250E_BW_250)
Definition: bma250e.cxx:57
void setInterruptLatchBehavior(BMA250E_RST_LATCH_T latch)
Definition: bma250e.cxx:284
uint8_t getInterruptMap1()
Definition: bma250e.cxx:224
void setRange(BMA250E_RANGE_T range)
Definition: bma250e.cxx:133
BMA250E_RST_LATCH_T getInterruptLatchBehavior()
Definition: bma250e.cxx:279
uint8_t getInterruptEnable1()
Definition: bma250e.cxx:188
uint8_t getInterruptOutputControl()
Definition: bma250e.cxx:260