AK8963

Dependents:   FreeIMU

Committer:
tyftyftyf
Date:
Wed Mar 28 21:06:51 2018 +0000
Revision:
1:f8ba8df44aab
Child:
2:51199a6440be
wip

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tyftyftyf 1:f8ba8df44aab 1 //ported from arduino library: https://github.com/jrowberg/i2cdevlib/tree/master/Arduino/MPU6050
tyftyftyf 1:f8ba8df44aab 2 //written by szymon gaertig (email: szymon@gaertig.com.pl), small correction by Aloïs Wolff
tyftyftyf 1:f8ba8df44aab 3 //
tyftyftyf 1:f8ba8df44aab 4 //Changelog:
tyftyftyf 1:f8ba8df44aab 5 //2013-01-08 - first beta release
tyftyftyf 1:f8ba8df44aab 6 //2013-02-18 - fixed a malloc with no free in ::readBytes
tyftyftyf 1:f8ba8df44aab 7
tyftyftyf 1:f8ba8df44aab 8 #ifndef I2Cdev_AK8963_h
tyftyftyf 1:f8ba8df44aab 9 #define I2Cdev_AK8963_h
tyftyftyf 1:f8ba8df44aab 10
tyftyftyf 1:f8ba8df44aab 11 #include "mbed.h"
tyftyftyf 1:f8ba8df44aab 12
tyftyftyf 1:f8ba8df44aab 13 #ifndef I2C_SDA
tyftyftyf 1:f8ba8df44aab 14 #define I2C_SDA p28
tyftyftyf 1:f8ba8df44aab 15 #define I2C_SCL p27
tyftyftyf 1:f8ba8df44aab 16 #endif
tyftyftyf 1:f8ba8df44aab 17
tyftyftyf 1:f8ba8df44aab 18 #include "MODI2C.h"
tyftyftyf 1:f8ba8df44aab 19
tyftyftyf 1:f8ba8df44aab 20 namespace AK8963I2C {
tyftyftyf 1:f8ba8df44aab 21
tyftyftyf 1:f8ba8df44aab 22 class I2Cdev {
tyftyftyf 1:f8ba8df44aab 23 private:
tyftyftyf 1:f8ba8df44aab 24
tyftyftyf 1:f8ba8df44aab 25 Serial debugSerial;
tyftyftyf 1:f8ba8df44aab 26 public:
tyftyftyf 1:f8ba8df44aab 27 I2Cdev();
tyftyftyf 1:f8ba8df44aab 28 I2Cdev(PinName i2cSda, PinName i2cScl);
tyftyftyf 1:f8ba8df44aab 29 I2Cdev(MODI2C i2c_);
tyftyftyf 1:f8ba8df44aab 30
tyftyftyf 1:f8ba8df44aab 31 int8_t readBit(uint8_t devAddr, uint8_t regAddr, uint8_t bitNum, uint8_t *data, uint16_t timeout=I2Cdev::readTimeout());
tyftyftyf 1:f8ba8df44aab 32 int8_t readBitW(uint8_t devAddr, uint8_t regAddr, uint8_t bitNum, uint16_t *data, uint16_t timeout=I2Cdev::readTimeout());
tyftyftyf 1:f8ba8df44aab 33 int8_t readBits(uint8_t devAddr, uint8_t regAddr, uint8_t bitStart, uint8_t length, uint8_t *data, uint16_t timeout=I2Cdev::readTimeout());
tyftyftyf 1:f8ba8df44aab 34 int8_t readBitsW(uint8_t devAddr, uint8_t regAddr, uint8_t bitStart, uint8_t length, uint16_t *data, uint16_t timeout=I2Cdev::readTimeout());
tyftyftyf 1:f8ba8df44aab 35 int8_t readByte(uint8_t devAddr, uint8_t regAddr, uint8_t *data, uint16_t timeout=I2Cdev::readTimeout());
tyftyftyf 1:f8ba8df44aab 36 int8_t readWord(uint8_t devAddr, uint8_t regAddr, uint16_t *data, uint16_t timeout=I2Cdev::readTimeout());
tyftyftyf 1:f8ba8df44aab 37 int8_t readBytes(uint8_t devAddr, uint8_t regAddr, uint8_t length, uint8_t *data, uint16_t timeout=I2Cdev::readTimeout());
tyftyftyf 1:f8ba8df44aab 38 int8_t readWords(uint8_t devAddr, uint8_t regAddr, uint8_t length, uint16_t *data, uint16_t timeout=I2Cdev::readTimeout());
tyftyftyf 1:f8ba8df44aab 39
tyftyftyf 1:f8ba8df44aab 40 bool writeBit(uint8_t devAddr, uint8_t regAddr, uint8_t bitNum, uint8_t data);
tyftyftyf 1:f8ba8df44aab 41 bool writeBitW(uint8_t devAddr, uint8_t regAddr, uint8_t bitNum, uint16_t data);
tyftyftyf 1:f8ba8df44aab 42 bool writeBits(uint8_t devAddr, uint8_t regAddr, uint8_t bitStart, uint8_t length, uint8_t data);
tyftyftyf 1:f8ba8df44aab 43 bool writeBitsW(uint8_t devAddr, uint8_t regAddr, uint8_t bitStart, uint8_t length, uint16_t data);
tyftyftyf 1:f8ba8df44aab 44 bool writeByte(uint8_t devAddr, uint8_t regAddr, uint8_t data);
tyftyftyf 1:f8ba8df44aab 45 bool writeWord(uint8_t devAddr, uint8_t regAddr, uint16_t data);
tyftyftyf 1:f8ba8df44aab 46 bool writeBytes(uint8_t devAddr, uint8_t regAddr, uint8_t length, uint8_t *data);
tyftyftyf 1:f8ba8df44aab 47 bool writeWords(uint8_t devAddr, uint8_t regAddr, uint8_t length, uint16_t *data);
tyftyftyf 1:f8ba8df44aab 48
tyftyftyf 1:f8ba8df44aab 49 void readBytes_nb(uint8_t devAddr, char *command, uint8_t length, uint8_t *data, uint32_t (*function)(uint32_t), void* param);
tyftyftyf 1:f8ba8df44aab 50
tyftyftyf 1:f8ba8df44aab 51 static uint16_t readTimeout(void);
tyftyftyf 1:f8ba8df44aab 52
tyftyftyf 1:f8ba8df44aab 53 MODI2C i2c;
tyftyftyf 1:f8ba8df44aab 54
tyftyftyf 1:f8ba8df44aab 55 char* allocbuffer();
tyftyftyf 1:f8ba8df44aab 56 void freebuffer();
tyftyftyf 1:f8ba8df44aab 57
tyftyftyf 1:f8ba8df44aab 58 MemoryPool<char[14], 16> pool;
tyftyftyf 1:f8ba8df44aab 59 Queue<char, 16> queue;
tyftyftyf 1:f8ba8df44aab 60 };
tyftyftyf 1:f8ba8df44aab 61
tyftyftyf 1:f8ba8df44aab 62 }
tyftyftyf 1:f8ba8df44aab 63
tyftyftyf 1:f8ba8df44aab 64 #endif