AKM AK09970N 3D Magnetic Sensor with Programmable Switch

AK09970N.h

Committer:
Rhyme
Date:
2017-12-28
Revision:
1:2b2ead3e4efc

File content as of revision 1:2b2ead3e4efc:

#ifndef _AK09970N_H_
#define _AK09970N_H_
/** 
 * AK09970N
 * 3D Magnetic Sensor with Programmable Switch
 */
#include "mbed.h"
class AK09970N
{
public:
  /**
  * AK09970N constructor
  *
  * @param sda SDA pin
  * @param sdl SCL pin
  * @param addr addr of the I2C peripheral
  */
  AK09970N(PinName sda, PinName scl, int addr);

  /**
  * AK09970N destructor
  */
  ~AK09970N();
  int       software_reset(void) ;
  int       getID(uint16_t *CompanyID, uint16_t *DeviceID) ;
  uint16_t  getStatus(void) ;
  int       setINT(uint16_t value) ;
  uint16_t  getINT(void) ;
  int       setConfig(uint8_t config) ;
  uint8_t   getConfig(void) ;
  int       singleShot(void) ;
  float     i2f(int16_t value) ; 

/* get data float version */
  int       getX(uint16_t *status, float *x) ;
  int       getY(uint16_t *status, float *y) ;
  int       getZ(uint16_t *status, float *z) ;
  int       getX_Y(uint16_t *status, float *x, float *y) ;
  int       getX_Z(uint16_t *status, float *x, float *z) ;
  int       getY_Z(uint16_t *status, float *y, float *z) ;
  int       getX_Y_Z(uint16_t *status, float *x, float *y, float *z) ;
  
/* get data 16bit version */
  int       getHX(uint16_t *status, int16_t *x) ;
  int       getHY(uint16_t *status, int16_t *y) ;
  int       getHZ(uint16_t *status, int16_t *z) ;
  int       getHX_HY(uint16_t *status, int16_t *x, int16_t *y) ;
  int       getHX_HZ(uint16_t *status, int16_t *x, int16_t *z) ;
  int       getHY_HZ(uint16_t *status, int16_t *y, int16_t *z) ;
  int       getHX_HY_HZ(uint16_t *status, int16_t *x, int16_t *y, int16_t *z) ;
    
/* get data 8bit version */
  int       getBX(uint16_t *status, int8_t *x) ;
  int       getBY(uint16_t *status, int8_t *y) ;
  int       getBZ(uint16_t *status, int8_t *z) ;
  int       getBX_BY(uint16_t *status, int8_t *x, int8_t *y) ;
  int       getBX_BZ(uint16_t *status, int8_t *x, int8_t *z) ;
  int       getBY_BZ(uint16_t *status, int8_t *y, int8_t *z) ;
  int       getBX_BY_BZ(uint16_t *status, int8_t *x, int8_t *y, int8_t *z) ;
  
/* get thresholds */
  int       getTHS_X1(int16_t *bop, int16_t *brp) ;
  int       getTHS_X2(int16_t *bop, int16_t *brp) ;
  int       getTHS_Y1(int16_t *bop, int16_t *brp) ;
  int       getTHS_Y2(int16_t *bop, int16_t *brp) ;
  int       getTHS_Z1(int16_t *bop, int16_t *brp) ;
  int       getTHS_Z2(int16_t *bop, int16_t *brp) ;  

/* set thresholds */
  int       setTHS_X1(int16_t bop, int16_t brp) ;
  int       setTHS_X2(int16_t bop, int16_t brp) ;
  int       setTHS_Y1(int16_t bop, int16_t brp) ;
  int       setTHS_Y2(int16_t bop, int16_t brp) ;
  int       setTHS_Z1(int16_t bop, int16_t brp) ;
  int       setTHS_Z2(int16_t bop, int16_t brp) ;  
  
private:
  uint8_t _mode ;
  uint8_t _sdr ;
  uint8_t _smr ;
  I2C m_i2c;
  int m_addr;
  int readRegs(int addr, uint8_t * data, int len);
  int writeRegs(uint8_t * data, int len);
};
#endif