Kuvée / Base_I2C_Device
Committer:
glansberry
Date:
Wed Jul 29 14:53:01 2015 -0400
Revision:
2:0a77105ec549
Parent:
1:700cce0a0ca8
Child:
3:bc08f5c87a7d
Add ReadRegisterMultiByte function

Who changed what in which revision?

UserRevisionLine numberNew contents of line
glansberry 0:fa683f936086 1 #include "Base_I2C_Device.h"
glansberry 0:fa683f936086 2
glansberry 0:fa683f936086 3
glansberry 0:fa683f936086 4
glansberry 0:fa683f936086 5
glansberry 0:fa683f936086 6 uint8_t Base_I2C_Device::ReadRegisterByte(uint8_t reg)
glansberry 0:fa683f936086 7 {
glansberry 0:fa683f936086 8 char temp_write[1];
glansberry 0:fa683f936086 9 char temp_read[1];
glansberry 0:fa683f936086 10
glansberry 0:fa683f936086 11 temp_write[0] = reg;
glansberry 0:fa683f936086 12 i2c.write(m_address, temp_write, 1, false); // no stop (unsure)
glansberry 0:fa683f936086 13 i2c.read(m_address, temp_read, 1, 0);
glansberry 0:fa683f936086 14
glansberry 0:fa683f936086 15 return (uint8_t)temp_read[0];
glansberry 0:fa683f936086 16 }
glansberry 0:fa683f936086 17 uint16_t Base_I2C_Device::ReadRegisterWord(uint8_t reg)
glansberry 0:fa683f936086 18 {
glansberry 0:fa683f936086 19 char temp_write[1];
glansberry 0:fa683f936086 20 char temp_read[2];
glansberry 0:fa683f936086 21
glansberry 0:fa683f936086 22 temp_write[0] = reg;
glansberry 0:fa683f936086 23 i2c.write(m_address, temp_write, 1, false); // no stop (unsure)
glansberry 0:fa683f936086 24 i2c.read(m_address, temp_read, 2, 0);
glansberry 0:fa683f936086 25
glansberry 0:fa683f936086 26 return (((uint16_t)temp_read[0]) << 8) | (uint16_t)temp_read[1];
glansberry 0:fa683f936086 27
glansberry 0:fa683f936086 28 }
glansberry 2:0a77105ec549 29
glansberry 2:0a77105ec549 30 char * Base_I2C_Device::ReadRegisterMultiByte(uint8_t reg, uint8_t bytes, char * temp_read)
glansberry 2:0a77105ec549 31 {
glansberry 2:0a77105ec549 32 char temp_write[1];
glansberry 2:0a77105ec549 33
glansberry 2:0a77105ec549 34 temp_write[0] = reg;
glansberry 2:0a77105ec549 35 i2c.write(m_address, temp_write, 1, false); // no stop (unsure)
glansberry 2:0a77105ec549 36 i2c.read(m_address, temp_read, bytes, 0);
glansberry 2:0a77105ec549 37
glansberry 2:0a77105ec549 38 return temp_read;
glansberry 2:0a77105ec549 39
glansberry 2:0a77105ec549 40 }
glansberry 2:0a77105ec549 41
glansberry 0:fa683f936086 42 int Base_I2C_Device::WriteRegister(uint8_t reg, uint8_t value)
glansberry 0:fa683f936086 43 {
glansberry 0:fa683f936086 44 char temp_write[2];
glansberry 0:fa683f936086 45
glansberry 0:fa683f936086 46 temp_write[0] = reg;
glansberry 0:fa683f936086 47 temp_write[1] = value; //check order of these (endianness)
glansberry 1:700cce0a0ca8 48 return i2c.write(m_address, temp_write, 2, 0);
glansberry 0:fa683f936086 49 }
glansberry 0:fa683f936086 50
glansberry 0:fa683f936086 51 int Base_I2C_Device::WriteRegister(uint8_t reg, uint16_t value)
glansberry 0:fa683f936086 52 {
glansberry 0:fa683f936086 53 char temp_write[3];
glansberry 0:fa683f936086 54
glansberry 0:fa683f936086 55 temp_write[0] = reg;
glansberry 0:fa683f936086 56 temp_write[1] = value>>8;
glansberry 0:fa683f936086 57 temp_write[2] = (value & 0xFF);
glansberry 1:700cce0a0ca8 58 return i2c.write(m_address, temp_write, 3, 0);
glansberry 0:fa683f936086 59 }