AKM AK9753 IR Sensor IC with I2C I/F

AK9753.h

Committer:
Rhyme
Date:
2017-12-27
Revision:
0:2eb87b5feaab

File content as of revision 0:2eb87b5feaab:

/*************************************
 * AK9753
 * AKM Ultra-small IR Sensor IC with I2C I/F
 **/
#ifndef _AK9753_H_
#define _AK9753_H_
#include "mbed.h"

class AK9753
{
public:
  /**
  * AK9753 constructor
  *
  * @param sda SDA pin
  * @param sdl SCL pin
  * @param addr addr of the I2C peripheral
  */
  AK9753(PinName sda, PinName scl, int addr);

  /**
  * AK9753 destructor
  */
  ~AK9753();
  
  uint8_t getCompanyCode(void) ;
  uint8_t getDeviceID(void) ;
  bool    dataReady(void) ; /* returns ST1[0], read ST2 to clear */
  bool    dataOverRun(void) ; /* return ST1[1], read ST2, etc, to clear */
  uint8_t getINTST(void) ; /** return REG_INTST */
  uint8_t getST1(void) ;
  int16_t getRawIR1(void) ;
  float   getIR1(void) ;
  int16_t getRawIR2(void) ;
  float   getIR2(void) ;
  int16_t getRawIR3(void) ;
  float   getIR3(void) ;
  int16_t getRawIR4(void) ;
  float   getIR4(void) ;
  int16_t getRawTMP(void) ;
  float   getTMP(void) ;
  uint8_t getST2(void) ;
  int16_t getETH13H(void) ;
  int16_t getETH13L(void) ;
  int16_t getETH24H(void) ;
  int16_t getETH24L(void) ;
  uint8_t getEHYS13(void) ;
  uint8_t getEHYS24(void) ;
  uint8_t getEINTEN(void) ;
  uint8_t getECNTL1(void) ;
  uint8_t getCNTL2(void) ;
  
  void    setETH13H(int16_t value) ;
  void    setETH13L(int16_t value) ;
  void    setETH24H(int16_t value) ;
  void    setETH24L(int16_t value) ;
  void    setEHYS13(uint8_t value) ;
  void    setEHYS24(uint8_t value) ;
  void    setEINTEN(uint8_t value) ;
  void    setECNTL1(uint8_t value) ;
  void    software_reset(void) ;
  

private:
  I2C m_i2c;
  int m_addr;
  int readRegs(int addr, uint8_t * data, int len);
  int writeRegs(uint8_t * data, int len);
};

#endif /* _AK9752_H_ */