work on i2c write buffer feature

master
edwin 4 years ago
parent 9bbf2ddb5e
commit b262a37964

@ -23,7 +23,8 @@ 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);
private:
};
@ -53,6 +54,10 @@ namespace serial
{
return pImpL.writeWord(address, reg, data);
}
uint8_t writeBuffer(const uint8_t& address, const uint8_t* buff, const uint8_t& len);
{
return pImpL.writeBuffer(address, buff, len);
}
private:
class i2c_ch0_pImpL;
@ -85,6 +90,11 @@ namespace serial
{
return pImpL.writeWord(address, reg, data);
}
uint8_t writeBuffer(const uint8_t& address, const uint8_t* buff, const uint8_t& len)
{
return pImpL.writeBuffer(address, buff, len);
}
private:
class i2c_ch1_pImpL;

@ -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);
private:
int16_t deviceDescriptor;

@ -108,3 +108,21 @@ uint16_t i2c_ch1_pImpL::readWord(const uint8_t& address, const uint8_t& reg)
result = (recieve_buffer[0] << 8) + recieve_buffer[1] ;
return result ;
}
uint8_t 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;
}
if ((write(deviceDescriptor, send_buffer, len)) != len)
{
// TODO: implement error handling here!
return 0;
}
return 0;
}

@ -29,15 +29,19 @@ 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);
private:
enum{
send_buffer_size = 32,
receive_buffer_size = 32;
}
ErrorHandler *errorHandling;
int16_t deviceDescriptor;
uint8_t device_address;
uint8_t device_reg;
uint8_t send_buffer[32];
uint8_t recieve_buffer[32];
uint8_t send_buffer[send_buffer_size];
uint8_t recieve_buffer[receive_buffer_size];
uint8_t blocks;
uint8_t channel;
uint8_t mode;

Loading…
Cancel
Save