JM9 XRCU Board 0.2.0a
Libraries API Reference
Loading...
Searching...
No Matches
Adafruit_BusIO_Register.h
1#ifndef Adafruit_BusIO_Register_h
2#define Adafruit_BusIO_Register_h
3
4#include <Arduino.h>
5
6#if !defined(SPI_INTERFACES_COUNT) || \
7 (defined(SPI_INTERFACES_COUNT) && (SPI_INTERFACES_COUNT > 0))
8
9#include "Adafruit_I2CDevice.h"
10#include "Adafruit_SPIDevice.h"
11
12typedef enum _Adafruit_BusIO_SPIRegType {
13 ADDRBIT8_HIGH_TOREAD = 0,
20 AD8_HIGH_TOREAD_AD7_HIGH_TOINC = 1,
21
28 ADDRBIT8_HIGH_TOWRITE = 2,
29
35 ADDRESSED_OPCODE_BIT0_LOW_TO_WRITE = 3,
36
37} Adafruit_BusIO_SPIRegType;
38
43class Adafruit_BusIO_Register {
44public:
45 Adafruit_BusIO_Register(Adafruit_I2CDevice *i2cdevice, uint16_t reg_addr,
46 uint8_t width = 1, uint8_t byteorder = LSBFIRST,
47 uint8_t address_width = 1);
48
49 Adafruit_BusIO_Register(Adafruit_SPIDevice *spidevice, uint16_t reg_addr,
50 Adafruit_BusIO_SPIRegType type, uint8_t width = 1,
51 uint8_t byteorder = LSBFIRST,
52 uint8_t address_width = 1);
53
54 Adafruit_BusIO_Register(Adafruit_I2CDevice *i2cdevice,
55 Adafruit_SPIDevice *spidevice,
56 Adafruit_BusIO_SPIRegType type, uint16_t reg_addr,
57 uint8_t width = 1, uint8_t byteorder = LSBFIRST,
58 uint8_t address_width = 1);
59
60 bool read(uint8_t *buffer, uint8_t len);
61 bool read(uint8_t *value);
62 bool read(uint16_t *value);
63 uint32_t read(void);
64 uint32_t readCached(void);
65 bool write(uint8_t *buffer, uint8_t len);
66 bool write(uint32_t value, uint8_t numbytes = 0);
67
68 uint8_t width(void);
69
70 void setWidth(uint8_t width);
71 void setAddress(uint16_t address);
72 void setAddressWidth(uint16_t address_width);
73
74 void print(Stream *s = &Serial);
75 void println(Stream *s = &Serial);
76
77private:
78 Adafruit_I2CDevice *_i2cdevice;
79 Adafruit_SPIDevice *_spidevice;
80 Adafruit_BusIO_SPIRegType _spiregtype;
81 uint16_t _address;
82 uint8_t _width, _addrwidth, _byteorder;
83 uint8_t _buffer[4]; // we won't support anything larger than uint32 for
84 // non-buffered read
85 uint32_t _cached = 0;
86};
87
92class Adafruit_BusIO_RegisterBits {
93public:
94 Adafruit_BusIO_RegisterBits(Adafruit_BusIO_Register *reg, uint8_t bits,
95 uint8_t shift);
96 bool write(uint32_t value);
97 uint32_t read(void);
98
99private:
100 Adafruit_BusIO_Register *_register;
101 uint8_t _bits, _shift;
102};
103
104#endif // SPI exists
105#endif // BusIO_Register_h
The class which defines a device register (a location to read/write data from)
Definition Adafruit_BusIO_Register.h:43
< The class which defines how we will talk to this device over I2C
Definition Adafruit_I2CDevice.h:8
Definition Adafruit_SPIDevice.h:89
Definition Stream.h:49