Skip to content

Commit 2119e35

Browse files
authored
Merge pull request #93 from jvaque/master
Minor refactoring of some functions
2 parents 40df8ff + 4be95a4 commit 2119e35

File tree

2 files changed

+11
-16
lines changed

2 files changed

+11
-16
lines changed

src/Adafruit_MCP23XXX.cpp

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,6 @@ void Adafruit_MCP23XXX::clearInterrupts() {
225225
*/
226226
/**************************************************************************/
227227
uint8_t Adafruit_MCP23XXX::getLastInterruptPin() {
228-
uint8_t intpin = MCP23XXX_INT_ERR;
229228
uint8_t intf;
230229

231230
// Port A
@@ -234,25 +233,23 @@ uint8_t Adafruit_MCP23XXX::getLastInterruptPin() {
234233
INTFA.read(&intf);
235234
for (uint8_t pin = 0; pin < 8; pin++) {
236235
if (intf & (1 << pin)) {
237-
intpin = pin;
238-
break;
236+
return pin;
239237
}
240238
}
241239

242-
// Port B and still not found?
243-
if ((pinCount > 8) && (intpin == MCP23XXX_INT_ERR)) {
240+
// Port B ?
241+
if (pinCount > 8) {
244242
Adafruit_BusIO_Register INTFB(i2c_dev, spi_dev, MCP23XXX_SPIREG,
245243
getRegister(MCP23XXX_INTF, 1));
246244
INTFB.read(&intf);
247245
for (uint8_t pin = 0; pin < 8; pin++) {
248246
if (intf & (1 << pin)) {
249-
intpin = pin + 8;
250-
break;
247+
return pin + 8;
251248
}
252249
}
253250
}
254251

255-
return intpin;
252+
return MCP23XXX_INT_ERR;
256253
}
257254

258255
/**************************************************************************/
@@ -295,10 +292,8 @@ uint16_t Adafruit_MCP23XXX::getRegister(uint8_t baseAddress, uint8_t port) {
295292
uint16_t reg = baseAddress;
296293
// MCP23x17 BANK=0
297294
if (pinCount > 8) {
298-
reg *= 2;
299-
// Port B
300-
if (port)
301-
reg++;
295+
reg <<= 1;
296+
reg |= port;
302297
}
303298
// for SPI, add opcode as high byte
304299
return (spi_dev) ? (0x4000 | (hw_addr << 9) | reg) : reg;

src/Adafruit_MCP23XXX.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,10 @@ class Adafruit_MCP23XXX {
6464
uint16_t getCapturedInterrupt();
6565

6666
protected:
67-
Adafruit_I2CDevice *i2c_dev = NULL; ///< Pointer to I2C bus interface
68-
Adafruit_SPIDevice *spi_dev = NULL; ///< Pointer to SPI bus interface
69-
uint8_t pinCount; ///< Total number of GPIO pins
70-
uint8_t hw_addr; ///< HW address matching A2/A1/A0 pins
67+
Adafruit_I2CDevice *i2c_dev = nullptr; ///< Pointer to I2C bus interface
68+
Adafruit_SPIDevice *spi_dev = nullptr; ///< Pointer to SPI bus interface
69+
uint8_t pinCount; ///< Total number of GPIO pins
70+
uint8_t hw_addr; ///< HW address matching A2/A1/A0 pins
7171
uint16_t getRegister(uint8_t baseAddress, uint8_t port = 0);
7272

7373
private:

0 commit comments

Comments
 (0)