1- #include < Adafruit_BusIO_Register.h>
1+ /*
2+ * Copyright (c) 2021-2022, RTduino Development Team
3+ *
4+ * SPDX-License-Identifier: MIT
5+ *
6+ * https://github.com/RTduino/RTduino
7+ * https://gitee.com/rtduino/RTduino
8+ *
9+ * Change Logs:
10+ * Date Author Notes
11+ * Adafruit Team First version
12+ * 2022-02-19 Meco Man port to RTduino
13+ */
214
3- #if !defined(SPI_INTERFACES_COUNT) || \
4- (defined (SPI_INTERFACES_COUNT) && (SPI_INTERFACES_COUNT > 0 ))
15+ #include < Adafruit_BusIO_Register.h>
516
17+ #ifdef RTDUINO_USING_WIRE
618/* !
719 * @brief Create a register we access over an I2C Device (which defines the
820 * bus and address)
@@ -21,13 +33,18 @@ Adafruit_BusIO_Register::Adafruit_BusIO_Register(Adafruit_I2CDevice *i2cdevice,
2133 uint8_t byteorder,
2234 uint8_t address_width) {
2335 _i2cdevice = i2cdevice;
24- _spidevice = nullptr ;
36+ #ifdef RTDUINO_USING_SPI
37+ _spidevice = NULL ;
38+ #endif /* RTDUINO_USING_SPI */
2539 _addrwidth = address_width;
2640 _address = reg_addr;
2741 _byteorder = byteorder;
2842 _width = width;
43+ _cached = 0 ;
2944}
45+ #endif /* RTDUINO_USING_WIRE */
3046
47+ #ifdef RTDUINO_USING_SPI
3148/* !
3249 * @brief Create a register we access over an SPI Device (which defines the
3350 * bus and CS pin)
@@ -50,11 +67,12 @@ Adafruit_BusIO_Register::Adafruit_BusIO_Register(Adafruit_SPIDevice *spidevice,
5067 uint8_t address_width) {
5168 _spidevice = spidevice;
5269 _spiregtype = type;
53- _i2cdevice = nullptr ;
70+ _i2cdevice = NULL ;
5471 _addrwidth = address_width;
5572 _address = reg_addr;
5673 _byteorder = byteorder;
5774 _width = width;
75+ _cached = 0 ;
5876}
5977
6078/* !
@@ -86,7 +104,9 @@ Adafruit_BusIO_Register::Adafruit_BusIO_Register(
86104 _address = reg_addr;
87105 _byteorder = byteorder;
88106 _width = width;
107+ _cached = 0 ;
89108}
109+ #endif /* RTDUINO_USING_SPI */
90110
91111/* !
92112 * @brief Write a buffer of data to the register location
@@ -99,10 +119,12 @@ bool Adafruit_BusIO_Register::write(uint8_t *buffer, uint8_t len) {
99119
100120 uint8_t addrbuffer[2 ] = {(uint8_t )(_address & 0xFF ),
101121 (uint8_t )(_address >> 8 )};
102-
122+ # ifdef RTDUINO_USING_WIRE
103123 if (_i2cdevice) {
104124 return _i2cdevice->write (buffer, len, true , addrbuffer, _addrwidth);
105125 }
126+ #endif /* RTDUINO_USING_WIRE */
127+ #ifdef RTDUINO_USING_SPI
106128 if (_spidevice) {
107129 if (_spiregtype == ADDRESSED_OPCODE_BIT0_LOW_TO_WRITE) {
108130 // very special case!
@@ -129,6 +151,7 @@ bool Adafruit_BusIO_Register::write(uint8_t *buffer, uint8_t len) {
129151 }
130152 return _spidevice->write (buffer, len, addrbuffer, _addrwidth);
131153 }
154+ #endif /* RTDUINO_USING_SPI */
132155 return false ;
133156}
134157
@@ -168,7 +191,7 @@ bool Adafruit_BusIO_Register::write(uint32_t value, uint8_t numbytes) {
168191 */
169192uint32_t Adafruit_BusIO_Register::read (void ) {
170193 if (!read (_buffer, _width)) {
171- return -1 ;
194+ return ( uint32_t ) -1 ;
172195 }
173196
174197 uint32_t value = 0 ;
@@ -201,10 +224,12 @@ uint32_t Adafruit_BusIO_Register::readCached(void) { return _cached; }
201224bool Adafruit_BusIO_Register::read (uint8_t *buffer, uint8_t len) {
202225 uint8_t addrbuffer[2 ] = {(uint8_t )(_address & 0xFF ),
203226 (uint8_t )(_address >> 8 )};
204-
227+ # ifdef RTDUINO_USING_WIRE
205228 if (_i2cdevice) {
206229 return _i2cdevice->write_then_read (addrbuffer, _addrwidth, buffer, len);
207230 }
231+ #endif /* RTDUINO_USING_WIRE */
232+ #ifdef RTDUINO_USING_SPI
208233 if (_spidevice) {
209234 if (_spiregtype == ADDRESSED_OPCODE_BIT0_LOW_TO_WRITE) {
210235 // very special case!
@@ -230,6 +255,7 @@ bool Adafruit_BusIO_Register::read(uint8_t *buffer, uint8_t len) {
230255 }
231256 return _spidevice->write_then_read (addrbuffer, _addrwidth, buffer, len);
232257 }
258+ #endif /* RTDUINO_USING_SPI */
233259 return false ;
234260}
235261
@@ -361,5 +387,3 @@ void Adafruit_BusIO_Register::setAddress(uint16_t address) {
361387void Adafruit_BusIO_Register::setAddressWidth (uint16_t address_width) {
362388 _addrwidth = address_width;
363389}
364-
365- #endif // SPI exists
0 commit comments