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); 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); 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); return i2cPimpl->readBuffer(address,buffer,len);
} }

@ -27,8 +27,8 @@ class I2C
uint16_t readWord(const uint8_t& address, const uint8_t& reg); uint16_t readWord(const uint8_t& address, const uint8_t& reg);
uint8_t writeByte(const uint8_t& address, const uint8_t& data); 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 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); void 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 readBuffer(const uint8_t& address, const uint8_t* buffer, uint8_t len);
private: private:
void throwError(errors errNo); void throwError(errors errNo);

@ -96,25 +96,24 @@ struct I2C::i2cImpl
return 0; 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) if (ioctl(deviceDescriptor, I2C_SLAVE, address) < 0)
{ {
throwError(falseAddrs); throwError(falseAddrs);
} }
send_buffer[0] = buffer; //send_buffer[0] = buffer;
if ((write(deviceDescriptor, send_buffer, len)) != len) if ((write(deviceDescriptor, send_buffer, len)) != len)
{ {
throwError(writeFailed); 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) void throwError(I2C::errors errNo)

@ -1,8 +1,7 @@
#define STM 0 #define STM 0
#define LINUX 1 #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); uint16_t readWord(const uint8_t& address, const uint8_t& reg);
uint8_t writeByte(const uint8_t& address, const uint8_t& data); 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 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: private:
}; };
@ -54,9 +54,9 @@ namespace serial
{ {
return pImpL.writeWord(address, reg, data); 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: private:
@ -90,9 +90,9 @@ namespace serial
{ {
return pImpL.writeWord(address, reg, data); 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); uint16_t readWord(const uint8_t& address, const uint8_t& reg);
uint8_t writeByte(const uint8_t& address, const uint8_t& data); 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 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: private:
int16_t deviceDescriptor; int16_t deviceDescriptor;

@ -109,11 +109,10 @@ uint16_t i2c_ch1_pImpL::readWord(const uint8_t& address, const uint8_t& reg)
return result ; 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){ if(len > send_buffer_size){
// TODO: implement error handling here! // 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! // 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 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 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 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: private:
enum{ enum{

Loading…
Cancel
Save