parent
8e21b7b8f8
commit
a61a6b1c6d
@ -0,0 +1,20 @@
|
||||
cpp_src = $(wildcard *.cpp)
|
||||
|
||||
cpp_obj = $(cpp_src:.cpp=.o)
|
||||
c_obj = $(c_src:.c=.o)
|
||||
CC = g++
|
||||
CFLAGS = -Wall -pedantic -li2c
|
||||
LDFLAGS =
|
||||
EXEC = runtest
|
||||
|
||||
|
||||
all : $(EXEC)
|
||||
|
||||
$(EXEC): $(cpp_obj) $(c_obj)
|
||||
$(CC) -o $@ $^ $(LDFLAGS)
|
||||
|
||||
clean:
|
||||
rm -rf $(c_obj) $(cpp_obj) $(EXEC)
|
||||
|
||||
cleanall:
|
||||
rm -rf $(c_obj) $(cpp_obj) $(EXEC)
|
@ -0,0 +1,110 @@
|
||||
#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;
|
||||
}
|
||||
|
||||
#if 0
|
||||
uint16_t readWord(const uint8_t& address,
|
||||
const uint8_t& reg);
|
||||
|
||||
void writeWord(const uint8_t& address,
|
||||
const uint8_t& reg,
|
||||
const uint16_t& byte);
|
||||
|
||||
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& byte)
|
||||
{
|
||||
impl->writeByte(address,
|
||||
reg,
|
||||
byte);
|
||||
}
|
||||
|
||||
#if 0
|
||||
uint16_t readWord(const uint8_t& address,
|
||||
const uint8_t& reg);
|
||||
|
||||
void writeWord(const uint8_t& address,
|
||||
const uint8_t& reg,
|
||||
const uint16_t& byte);
|
||||
|
||||
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
|
@ -0,0 +1,50 @@
|
||||
#ifndef _II2C_HPP_
|
||||
#define _II2C_HPP_
|
||||
|
||||
#include <memory>
|
||||
#include <stdint.h>
|
||||
|
||||
/**
|
||||
* Interface class for i2c
|
||||
*
|
||||
* It's basedon the pointer to implementation idom (pImpl idom).
|
||||
*/
|
||||
class I2C
|
||||
{
|
||||
public:
|
||||
I2C();
|
||||
~I2C();
|
||||
|
||||
uint8_t readByte(const uint8_t& address,
|
||||
const uint8_t& reg);
|
||||
|
||||
void writeByte(const uint8_t& address,
|
||||
const uint8_t& reg,
|
||||
const uint8_t& byte);
|
||||
#if 0
|
||||
uint16_t readWord(const uint8_t& address,
|
||||
const uint8_t& reg);
|
||||
|
||||
void writeWord(const uint8_t& address,
|
||||
const uint8_t& reg,
|
||||
const uint16_t& byte);
|
||||
|
||||
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
|
||||
|
||||
private:
|
||||
class I2C_impl;//< forward declaration
|
||||
std::unique_ptr<I2C_impl> impl; // pointer to implementation
|
||||
|
||||
};
|
||||
|
||||
#endif // _II2C_HPP_
|
||||
|
@ -0,0 +1,15 @@
|
||||
#include <iostream>
|
||||
#include "ii2c.hpp"
|
||||
#include <iostream>
|
||||
|
||||
int main(void)
|
||||
{
|
||||
I2C i2c;
|
||||
|
||||
std::cout << static_cast<int>(i2c.readByte(100,50)) << std::endl;
|
||||
|
||||
i2c.writeByte(20,30,40);
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
Binary file not shown.
Loading…
Reference in new issue