You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
135 lines
2.7 KiB
135 lines
2.7 KiB
#include "ii2c.hpp"
|
|
#include <memory>
|
|
#include <iostream>
|
|
//
|
|
// implementation
|
|
//
|
|
|
|
/**
|
|
* dummy implementation version
|
|
*/
|
|
class I2C::I2C_impl
|
|
{
|
|
public:
|
|
I2C_impl()
|
|
{
|
|
std::cout << "dummy I2C Ctor" << std::endl;
|
|
}
|
|
uint8_t readByte(const uint8_t& address,
|
|
const uint8_t& reg)
|
|
{
|
|
std::cout << "dummy I2C readByte()" << std::endl;
|
|
std::cout << "address: " << static_cast<int>(address) << std::endl;
|
|
std::cout << "reg : " << static_cast<int>(reg) << std::endl;
|
|
std::cout << "returning 0" << std::endl;
|
|
return 0;
|
|
}
|
|
|
|
|
|
void writeByte(const uint8_t& address,
|
|
const uint8_t& reg,
|
|
const uint8_t& byte)
|
|
{
|
|
std::cout << "dummy I2C writeByte()" << std::endl;
|
|
std::cout << "address: " << static_cast<int>(address) << std::endl;
|
|
std::cout << "reg : " << static_cast<int>(reg) << std::endl;
|
|
std::cout << "byte : " << static_cast<int>(byte) << std::endl;
|
|
}
|
|
|
|
|
|
uint16_t readWord(const uint8_t& address,
|
|
const uint8_t& reg)
|
|
{
|
|
std::cout << "dummy I2C readWord()" << std::endl;
|
|
std::cout << "address: " << static_cast<int>(address) << std::endl;
|
|
std::cout << "reg : " << static_cast<int>(reg) << std::endl;
|
|
std::cout << "returning 0" << std::endl;
|
|
|
|
return 0;
|
|
}
|
|
|
|
void writeWord(const uint8_t& address,
|
|
const uint8_t& reg,
|
|
const uint16_t& word)
|
|
{
|
|
std::cout << "dummy I2C writeWord()" << std::endl;
|
|
std::cout << "address: " << static_cast<int>(address) << std::endl;
|
|
std::cout << "reg : " << static_cast<int>(reg) << std::endl;
|
|
std::cout << "word : " << static_cast<int>(word) << std::endl;
|
|
}
|
|
#if 0
|
|
void readBuffer(const uint8_t& address,
|
|
const uint8_t& reg,
|
|
uint8_t data[],
|
|
uint8_t len);
|
|
|
|
void writeBuffer(const uint8_t& address,
|
|
const uint8_t& reg,
|
|
const uint8_t data[],
|
|
uint8_t len);
|
|
|
|
#endif
|
|
|
|
};
|
|
|
|
//
|
|
// information relay
|
|
//
|
|
|
|
I2C::I2C() :
|
|
impl{std::make_unique<I2C_impl>()}
|
|
{
|
|
|
|
}
|
|
|
|
I2C::~I2C()
|
|
{
|
|
|
|
}
|
|
|
|
uint8_t I2C::readByte(const uint8_t& address,
|
|
const uint8_t& reg)
|
|
{
|
|
return impl->readByte(address,
|
|
reg);
|
|
}
|
|
|
|
void I2C::writeByte(const uint8_t& address,
|
|
const uint8_t& reg,
|
|
const uint8_t& word)
|
|
{
|
|
impl->writeByte(address,
|
|
reg,
|
|
word);
|
|
}
|
|
|
|
|
|
uint16_t I2C::readWord(const uint8_t& address,
|
|
const uint8_t& reg)
|
|
|
|
{
|
|
return impl->readWord(address,
|
|
reg);
|
|
}
|
|
|
|
void I2C::writeWord(const uint8_t& address,
|
|
const uint8_t& reg,
|
|
const uint16_t& word)
|
|
{
|
|
impl->writeWord(address,
|
|
reg,
|
|
word);
|
|
}
|
|
#if 0
|
|
void readBuffer(const uint8_t& address,
|
|
const uint8_t& reg,
|
|
uint8_t data[],
|
|
uint8_t len);
|
|
|
|
void writeBuffer(const uint8_t& address,
|
|
const uint8_t& reg,
|
|
const uint8_t data[],
|
|
uint8_t len);
|
|
|
|
#endif
|