work on i2c read/write buffer feature

master
edwin 4 years ago
parent 1b06a4a084
commit 2d01b49bbf

@ -36,12 +36,12 @@ uint8_t I2C::writeWord(const uint8_t& address, const uint8_t& reg, const uint8_t
return i2cPimpl->writeWord(address,reg,data);
}
uint8_t I2C::writeBuffer(const uint8_t& address, const uint8_t& buffer, uint8_t len)
void I2C::writeBuffer(const uint8_t& address, const uint8_t* buffer, uint8_t len)
{
return i2cPimpl->writeBuffer(address,buffer,len);
}
uint8_t I2C::readBuffer(const uint8_t& address, const uint8_t& buffer, uint8_t len)
void I2C::readBuffer(const uint8_t& address, const uint8_t* buffer, uint8_t len)
{
return i2cPimpl->readBuffer(address,buffer,len);
}

@ -27,8 +27,8 @@ class I2C
uint16_t readWord(const uint8_t& address, const uint8_t& reg);
uint8_t writeByte(const uint8_t& address, const uint8_t& data);
uint8_t writeWord(const uint8_t& address, const uint8_t& reg, const uint8_t& data);
uint8_t writeBuffer(const uint8_t& address, const uint8_t& buffer, uint8_t len);
uint8_t readBuffer(const uint8_t& address, const uint8_t& buffer, uint8_t len);
void writeBuffer(const uint8_t& address, const uint8_t* buffer, uint8_t len);
void readBuffer(const uint8_t& address, const uint8_t* buffer, uint8_t len);
private:
void throwError(errors errNo);

@ -96,25 +96,24 @@ struct I2C::i2cImpl
return 0;
}
uint8_t writeBuffer(const uint8_t& address, const uint8_t& buffer, uint8_t len)
void writeBuffer(const uint8_t& address, const uint8_t* buffer, uint8_t len)
{
if (ioctl(deviceDescriptor, I2C_SLAVE, address) < 0)
{
throwError(falseAddrs);
}
send_buffer[0] = buffer;
//send_buffer[0] = buffer;
if ((write(deviceDescriptor, send_buffer, len)) != len)
{
throwError(writeFailed);
}
return 0;
}
}
uint8_t readBuffer(const uint8_t& address, const uint8_t& buffer, uint8_t len)
void readBuffer(const uint8_t& address, const uint8_t* buffer, uint8_t len)
{
return 0;
}
void throwError(I2C::errors errNo)

@ -1,8 +1,7 @@
#define STM 0
#define LINUX 1
#define PLATFORM STM
#define PLATFORM LINUX

@ -23,7 +23,7 @@ namespace serial
uint16_t readWord(const uint8_t& address, const uint8_t& reg);
uint8_t writeByte(const uint8_t& address, const uint8_t& data);
uint8_t writeWord(const uint8_t& address, const uint8_t& reg, const uint16_t& data);
uint8_t writeBuffer(const uint8_t& address, const uint8_t* buff, const uint8_t& len);
void writeBuffer(const uint8_t& address, const uint8_t* buff, const uint8_t& len);
private:
};
@ -54,9 +54,9 @@ namespace serial
{
return pImpL.writeWord(address, reg, data);
}
uint8_t writeBuffer(const uint8_t& address, const uint8_t* buff, const uint8_t& len);
void writeBuffer(const uint8_t& address, const uint8_t* buff, const uint8_t& len);
{
return pImpL.writeBuffer(address, buff, len);
pImpL.writeBuffer(address, buff, len);
}
private:
@ -90,9 +90,9 @@ namespace serial
{
return pImpL.writeWord(address, reg, data);
}
uint8_t writeBuffer(const uint8_t& address, const uint8_t* buff, const uint8_t& len)
void writeBuffer(const uint8_t& address, const uint8_t* buff, const uint8_t& len)
{
return pImpL.writeBuffer(address, buff, len);
pImpL.writeBuffer(address, buff, len);
}

@ -28,7 +28,7 @@ class i2c_ch0_pImpL
uint16_t readWord(const uint8_t& address, const uint8_t& reg);
uint8_t writeByte(const uint8_t& address, const uint8_t& data);
uint8_t writeWord(const uint8_t& address, const uint8_t& reg, const uint16_t& data);
uint8_t writeBuffer(const uint8_t& address, const uint8_t* buff, const uint8_t& len);
void writeBuffer(const uint8_t& address, const uint8_t* buff, const uint8_t& len);
private:
int16_t deviceDescriptor;

@ -109,11 +109,10 @@ uint16_t i2c_ch1_pImpL::readWord(const uint8_t& address, const uint8_t& reg)
return result ;
}
uint8_t i2c_ch1_pImpL::writeBuffer(const uint8_t& address, const uint8_t* buff, const uint8_t& len)
void i2c_ch1_pImpL::writeBuffer(const uint8_t& address, const uint8_t* buff, const uint8_t& len)
{
if(len > send_buffer_size){
// TODO: implement error handling here!
return 0;
}
@ -121,8 +120,8 @@ uint8_t i2c_ch1_pImpL::writeBuffer(const uint8_t& address, const uint8_t* buff,
{
// TODO: implement error handling here!
return 0;
}
return 0;
}

@ -29,7 +29,7 @@ class i2c_ch1_pImpL
uint8_t writeByte(const uint8_t& address, const uint8_t& data);
uint8_t writeWord(const uint8_t& address, const uint8_t& reg, const uint8_t& data);
uint8_t writeWordWithReg(const uint8_t& address, const uint8_t& reg, const uint16_t& data); // retuns 0 when a sucsessful transation ocures
uint8_t writeBuffer(const uint8_t& address, const uint8_t* buff, const uint8_t& len);
void writeBuffer(const uint8_t& address, const uint8_t* buff, const uint8_t& len);
private:
enum{

Loading…
Cancel
Save