linted, i mean blacked, or..whatever

This commit is contained in:
caternuson 2020-04-18 10:00:11 -07:00
parent ead4d7b6f2
commit db60c0ffb5
2 changed files with 42 additions and 26 deletions

View file

@ -92,15 +92,27 @@ _AS7262_RED_CALIBRATED = const(0x28)
_AS726X_NUM_CHANNELS = const(6)
_COLOR_REGS = (_AS7262_VIOLET, _AS7262_BLUE, _AS7262_GREEN,
_AS7262_YELLOW, _AS7262_ORANGE,_AS7262_RED)
_COLOR_REGS_CALIBRATED = (_AS7262_VIOLET_CALIBRATED, _AS7262_BLUE_CALIBRATED,
_AS7262_GREEN_CALIBRATED, _AS7262_YELLOW_CALIBRATED,
_AS7262_ORANGE_CALIBRATED, _AS7262_RED_CALIBRATED)
_COLOR_REGS = (
_AS7262_VIOLET,
_AS7262_BLUE,
_AS7262_GREEN,
_AS7262_YELLOW,
_AS7262_ORANGE,
_AS7262_RED,
)
_COLOR_REGS_CALIBRATED = (
_AS7262_VIOLET_CALIBRATED,
_AS7262_BLUE_CALIBRATED,
_AS7262_GREEN_CALIBRATED,
_AS7262_YELLOW_CALIBRATED,
_AS7262_ORANGE_CALIBRATED,
_AS7262_RED_CALIBRATED,
)
# pylint: disable=too-many-instance-attributes
# pylint: disable=too-many-public-methods
class AS726x:
"""AS726x spectral sensor base class.
@ -382,6 +394,7 @@ class AS726x:
def _virtual_write(self, addr, value):
raise NotImplementedError("Must be implemented.")
class AS726x_I2C(AS726x):
"""AS726x spectral sensor via I2C.
@ -447,6 +460,7 @@ class AS726x_I2C(AS726x):
# Send the data to complete the operation.
self.__write_u8(_AS726X_SLAVE_WRITE_REG, value)
class AS726x_UART(AS726x):
"""AS726x spectral sensor via UART.
@ -468,12 +482,12 @@ class AS726x_UART(AS726x):
def _uart_xfer(self, cmd):
self._uart.reset_input_buffer()
cmd += '\n'
cmd += "\n"
self._uart.write(cmd.encode())
time.sleep(0.1)
if self._uart.in_waiting:
resp = self._uart.read(self._uart.in_waiting)
return resp.rstrip(b' OK\n')
return resp.rstrip(b" OK\n")
else:
return None
@ -482,46 +496,47 @@ class AS726x_UART(AS726x):
# just return what is expected
return 0x40
elif addr == _AS726X_DEVICE_TEMP:
return int(self._uart_xfer('ATTEMP'))
return int(self._uart_xfer("ATTEMP"))
elif addr == _AS726X_LED_CONTROL:
LED_IND = int(self._uart_xfer('ATLED0'))
LED_DRV = int(self._uart_xfer('ATLED1'))
LED_IND = int(self._uart_xfer("ATLED0"))
LED_DRV = int(self._uart_xfer("ATLED1"))
return LED_IND << 3 | LED_DRV
elif addr == _AS726X_CONTROL_SETUP:
GAIN = int(self._uart_xfer('ATGAIN'))
BANK = int(self._uart_xfer('ATTCSMD'))
GAIN = int(self._uart_xfer("ATGAIN"))
BANK = int(self._uart_xfer("ATTCSMD"))
return GAIN << 4 | BANK << 2 | 1 << 1
elif addr in _COLOR_REGS:
resp = self._uart_xfer('ATDATA')
resp = resp.decode().split(',')
resp = self._uart_xfer("ATDATA")
resp = resp.decode().split(",")
return int(resp[_COLOR_REGS.index(addr)])
elif addr in _COLOR_REGS_CALIBRATED:
resp = self._uart_xfer('ATCDATA')
resp = resp.decode().split(',')
resp = self._uart_xfer("ATCDATA")
resp = resp.decode().split(",")
return float(resp[_COLOR_REGS_CALIBRATED.index(addr)])
def _virtual_write(self, addr, value):
if addr == _AS726X_CONTROL_SETUP:
# check for reset
if (value >> 7) & 0x01:
self._uart.write(b'ATRST\n')
self._uart.write(b"ATRST\n")
return
# otherwise proceed
GAIN = (value >> 4) & 0x03
BANK = (value >> 2) & 0x03
self._uart_xfer('ATGAIN={}'.format(GAIN))
self._uart_xfer('ATTCSMD={}'.format(BANK))
self._uart_xfer("ATGAIN={}".format(GAIN))
self._uart_xfer("ATTCSMD={}".format(BANK))
elif addr == _AS726X_LED_CONTROL:
ICL_DRV = (value >> 4) & 0x07
LED_DRV = 100 if value & 0x08 else 0
ICL_IND = (value >> 1) & 0x07
LED_IND = 100 if value & 0x01 else 0
self._uart_xfer('ATLED0={}'.format(LED_IND))
self._uart_xfer('ATLED1={}'.format(LED_DRV))
self._uart_xfer('ATLEDC={}'.format(ICL_DRV << 4 | ICL_IND))
self._uart_xfer("ATLED0={}".format(LED_IND))
self._uart_xfer("ATLED1={}".format(LED_DRV))
self._uart_xfer("ATLEDC={}".format(ICL_DRV << 4 | ICL_IND))
elif addr == _AS726X_INT_T:
value = int(value / 2.8)
self._uart_xfer('ATINTTIME={}'.format(value))
self._uart_xfer("ATINTTIME={}".format(value))
# pylint: enable=too-many-instance-attributes
# pylint: enable=too-many-public-methods

View file

@ -5,8 +5,9 @@ import busio
# for I2C use:
from adafruit_as726x import AS726x_I2C
# for UART use:
#from adafruit_as726x import AS726x_UART
# from adafruit_as726x import AS726x_UART
# maximum value for sensor reading
max_val = 16000
@ -24,8 +25,8 @@ i2c = busio.I2C(board.SCL, board.SDA)
sensor = AS726x_I2C(i2c)
# for UART use:
#uart = busio.UART(board.TX, board.RX)
#sensor = AS726x_UART(uart)
# uart = busio.UART(board.TX, board.RX)
# sensor = AS726x_UART(uart)
sensor.conversion_mode = sensor.MODE_2