From e0fd3df23272328cd35e247d07ee42eb8bf2506a Mon Sep 17 00:00:00 2001 From: Sterling Hanenkamp Date: Mon, 8 Jul 2019 20:59:16 -0500 Subject: [PATCH] Eliminate duplicated code in pin_mode_bulk* --- adafruit_seesaw/seesaw.py | 28 +++++++--------------------- 1 file changed, 7 insertions(+), 21 deletions(-) diff --git a/adafruit_seesaw/seesaw.py b/adafruit_seesaw/seesaw.py index 6be55df..0e0cce5 100644 --- a/adafruit_seesaw/seesaw.py +++ b/adafruit_seesaw/seesaw.py @@ -253,8 +253,9 @@ def moisture_read(self): return ret - def pin_mode_bulk(self, pins, mode): - cmd = struct.pack(">I", pins) + def _pin_mode_bulk_x(self, capacity, offset, pins, mode): + cmd = bytearray(capacity) + cmd[offset:] = struct.pack(">I", pins) if mode == self.OUTPUT: self.write(_GPIO_BASE, _GPIO_DIRSET_BULK, cmd) elif mode == self.INPUT: @@ -273,26 +274,11 @@ def pin_mode_bulk(self, pins, mode): else: raise ValueError("Invalid pin mode") - def pin_mode_bulk_b(self, pins, mode): - cmd = bytearray(8) - cmd[4:] = struct.pack(">I", pins) - if mode == self.OUTPUT: - self.write(_GPIO_BASE, _GPIO_DIRSET_BULK, cmd) - elif mode == self.INPUT: - self.write(_GPIO_BASE, _GPIO_DIRCLR_BULK, cmd) - - elif mode == self.INPUT_PULLUP: - self.write(_GPIO_BASE, _GPIO_DIRCLR_BULK, cmd) - self.write(_GPIO_BASE, _GPIO_PULLENSET, cmd) - self.write(_GPIO_BASE, _GPIO_BULK_SET, cmd) - - elif mode == self.INPUT_PULLDOWN: - self.write(_GPIO_BASE, _GPIO_DIRCLR_BULK, cmd) - self.write(_GPIO_BASE, _GPIO_PULLENSET, cmd) - self.write(_GPIO_BASE, _GPIO_BULK_CLR, cmd) + def pin_mode_bulk(self, pins, mode): + self._pin_mode_bulk_x(4, 0, pins, mode) - else: - raise ValueError("Invalid pin mode") + def pin_mode_bulk_b(self, pins, mode): + self._pin_mode_bulk_x(8, 4, pins, mode) def digital_write_bulk(self, pins, value): cmd = struct.pack(">I", pins)