Skip to content

Commit 126f24e

Browse files
committed
Eliminate duplicated code in pin_mode_bulk*
1 parent f1171f9 commit 126f24e

File tree

1 file changed

+7
-21
lines changed

1 file changed

+7
-21
lines changed

adafruit_seesaw/seesaw.py

Lines changed: 7 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -253,8 +253,9 @@ def moisture_read(self):
253253

254254
return ret
255255

256-
def pin_mode_bulk(self, pins, mode):
257-
cmd = struct.pack(">I", pins)
256+
def _pin_mode_bulk_x(self, capacity, offset, mode, cmd):
257+
cmd = bytearray(capacity)
258+
cmd[offset:] = struct.pack(">I", pins)
258259
if mode == self.OUTPUT:
259260
self.write(_GPIO_BASE, _GPIO_DIRSET_BULK, cmd)
260261
elif mode == self.INPUT:
@@ -273,26 +274,11 @@ def pin_mode_bulk(self, pins, mode):
273274
else:
274275
raise ValueError("Invalid pin mode")
275276

276-
def pin_mode_bulk_b(self, pins, mode):
277-
cmd = bytearray(8)
278-
cmd[4:] = struct.pack(">I", pins)
279-
if mode == self.OUTPUT:
280-
self.write(_GPIO_BASE, _GPIO_DIRSET_BULK, cmd)
281-
elif mode == self.INPUT:
282-
self.write(_GPIO_BASE, _GPIO_DIRCLR_BULK, cmd)
283-
284-
elif mode == self.INPUT_PULLUP:
285-
self.write(_GPIO_BASE, _GPIO_DIRCLR_BULK, cmd)
286-
self.write(_GPIO_BASE, _GPIO_PULLENSET, cmd)
287-
self.write(_GPIO_BASE, _GPIO_BULK_SET, cmd)
288-
289-
elif mode == self.INPUT_PULLDOWN:
290-
self.write(_GPIO_BASE, _GPIO_DIRCLR_BULK, cmd)
291-
self.write(_GPIO_BASE, _GPIO_PULLENSET, cmd)
292-
self.write(_GPIO_BASE, _GPIO_BULK_CLR, cmd)
277+
def pin_mode_bulk(self, pins, mode):
278+
self._pin_mode_bulk_x(4, 0, pins, mode)
293279

294-
else:
295-
raise ValueError("Invalid pin mode")
280+
def pin_mode_bulk_b(self, pins, mode):
281+
self._pin_mode_bulk_x(8, 4, pins, mode)
296282

297283
def digital_write_bulk(self, pins, value):
298284
cmd = struct.pack(">I", pins)

0 commit comments

Comments
 (0)