1#ifndef Adafruit_BusIO_Register_h
2#define Adafruit_BusIO_Register_h
6#if !defined(SPI_INTERFACES_COUNT) || \
7 (defined(SPI_INTERFACES_COUNT) && (SPI_INTERFACES_COUNT > 0))
9#include "Adafruit_I2CDevice.h"
10#include "Adafruit_SPIDevice.h"
12typedef enum _Adafruit_BusIO_SPIRegType {
13 ADDRBIT8_HIGH_TOREAD = 0,
20 AD8_HIGH_TOREAD_AD7_HIGH_TOINC = 1,
28 ADDRBIT8_HIGH_TOWRITE = 2,
35 ADDRESSED_OPCODE_BIT0_LOW_TO_WRITE = 3,
37} Adafruit_BusIO_SPIRegType;
46 uint8_t
width = 1, uint8_t byteorder = LSBFIRST,
47 uint8_t address_width = 1);
50 Adafruit_BusIO_SPIRegType type, uint8_t
width = 1,
51 uint8_t byteorder = LSBFIRST,
52 uint8_t address_width = 1);
56 Adafruit_BusIO_SPIRegType type, uint16_t reg_addr,
57 uint8_t
width = 1, uint8_t byteorder = LSBFIRST,
58 uint8_t address_width = 1);
60 bool read(uint8_t *buffer, uint8_t len);
61 bool read(uint8_t *value);
62 bool read(uint16_t *value);
65 bool write(uint8_t *buffer, uint8_t len);
66 bool write(uint32_t value, uint8_t numbytes = 0);
80 Adafruit_BusIO_SPIRegType _spiregtype;
82 uint8_t _width, _addrwidth, _byteorder;
96 bool write(uint32_t value);
101 uint8_t _bits, _shift;
Adafruit_BusIO_RegisterBits(Adafruit_BusIO_Register *reg, uint8_t bits, uint8_t shift)
Create a slice of the register that we can address without touching other bits.
Definition Adafruit_BusIO_Register.cpp:300
uint32_t read(void)
Read 4 bytes of data from the register.
Definition Adafruit_BusIO_Register.cpp:311
bool write(uint32_t value)
Write 4 bytes of data to the register.
Definition Adafruit_BusIO_Register.cpp:323
The class which defines a device register (a location to read/write data from)
Definition Adafruit_BusIO_Register.h:43
void setAddress(uint16_t address)
Set register address.
Definition Adafruit_BusIO_Register.cpp:353
void setAddressWidth(uint16_t address_width)
Set the width of register address.
Definition Adafruit_BusIO_Register.cpp:361
void setWidth(uint8_t width)
Set the default width of data.
Definition Adafruit_BusIO_Register.cpp:347
uint32_t read(void)
Read data from the register location. This does not do any error checking!
Definition Adafruit_BusIO_Register.cpp:169
Adafruit_BusIO_Register(Adafruit_I2CDevice *i2cdevice, uint16_t reg_addr, uint8_t width=1, uint8_t byteorder=LSBFIRST, uint8_t address_width=1)
Create a register we access over an I2C Device (which defines the bus and address)
Definition Adafruit_BusIO_Register.cpp:18
uint32_t readCached(void)
Read cached data from last time we wrote to this register.
Definition Adafruit_BusIO_Register.cpp:192
bool write(uint8_t *buffer, uint8_t len)
Write a buffer of data to the register location.
Definition Adafruit_BusIO_Register.cpp:98
void print(Stream *s=&Serial)
Pretty printer for this register.
Definition Adafruit_BusIO_Register.cpp:278
uint8_t width(void)
The width of the register data, helpful for doing calculations.
Definition Adafruit_BusIO_Register.cpp:341
void println(Stream *s=&Serial)
Pretty printer for this register.
Definition Adafruit_BusIO_Register.cpp:288
< The class which defines how we will talk to this device over I2C
Definition Adafruit_I2CDevice.h:8
Definition Adafruit_SPIDevice.h:89