AKM AK9752 Ultra-small IR Sensor IC with I2C I/F

Revision:
0:d177a32f8f36
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/AK9752.h	Wed Dec 27 06:26:33 2017 +0000
@@ -0,0 +1,54 @@
+/*************************************
+ * AK9752
+ * AKM Ultra-small IR Sensor IC with I2C I/F
+ **/
+#ifndef _AK9752_H_
+#define _AK9752_H_
+#include "mbed.h"
+
+class AK9752
+{
+public:
+  /**
+  * AK9752 constructor
+  *
+  * @param sda SDA pin
+  * @param sdl SCL pin
+  * @param addr addr of the I2C peripheral
+  */
+  AK9752(PinName sda, PinName scl, int addr);
+
+  /**
+  * AK9752 destructor
+  */
+  ~AK9752();
+  
+  uint8_t getCompanyCode(void) ; /* 0x48 expected */
+  uint8_t getDeviceID(void) ;    /* 0x14 expected */
+  bool    dataReady(void) ; /* returns ST1[0], read ST2 to clear */
+  uint8_t getIntcause(void) ; /* get REG_INTCAUSE (0x05) */
+  int16_t getRawIR(void) ; /* raw data, must be mulitplied by 0.4578 for pA */
+  float   getIR(void) ;
+  int16_t getRawTMP(void) ; /* raw data, must be multiplied by 0.0019837 and + 25 */
+  float   getTMP(void) ;
+  bool    dataOverRun(void) ; /* check data over run and clear data ready */
+  void    getTHIR(int16_t  *high, int16_t *low) ;
+  void    setTHIR(int16_t   high, int16_t  low) ;
+  void    getTHTMP(int16_t *high, int16_t *low) ;
+  void    setTHTMP(int16_t  high, int16_t  low) ;
+  uint8_t getINTEN(void) ;
+  void    setINTEN(uint8_t value) ;
+  uint8_t getCNTL1(void) ;
+  void    setCNTL1(uint8_t value) ;
+  uint8_t getCNTL2(void) ;
+  void    setCNTL2(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_ */
\ No newline at end of file