2323**Notes:**
2424"""
2525
26- __version__ = "0.0.0-auto.0"
27- __repo__ = "https://github.com/adafruit/Adafruit_CircuitPython_AMG88xx"
26+ __version__ : str = "0.0.0-auto.0"
27+ __repo__ : str = "https://github.com/adafruit/Adafruit_CircuitPython_AMG88xx"
2828
2929from adafruit_bus_device .i2c_device import I2CDevice
3030from adafruit_register import i2c_bit , i2c_bits
31+ from adafruit_register .i2c_bits import (
32+ RWBits ,
33+ ) # pylint: disable=unused-import,line-too-long
34+ from adafruit_register .i2c_bit import (
35+ RWBit ,
36+ ) # pylint: disable=unused-import,line-too-long
3137from micropython import const
3238
39+ try :
40+ from typing import List
41+
42+ # These are only needed for typing
43+ import busio # pylint: disable=unused-import
44+ except ImportError :
45+ pass
3346
3447# Registers are defined below in the class. These are possible register values.
3548
3649# Operating Modes
37- _NORMAL_MODE = const (0x00 )
38- _SLEEP_MODE = const (0x10 )
39- _STAND_BY_60 = const (0x20 )
40- _STAND_BY_10 = const (0x21 )
50+ _NORMAL_MODE : int = const (0x00 )
51+ _SLEEP_MODE : int = const (0x10 )
52+ _STAND_BY_60 : int = const (0x20 )
53+ _STAND_BY_10 : int = const (0x21 )
4154
4255# sw resets
43- _FLAG_RESET = const (0x30 )
44- _INITIAL_RESET = const (0x3F )
56+ _FLAG_RESET : int = const (0x30 )
57+ _INITIAL_RESET : int = const (0x3F )
4558
4659# frame rates
47- _FPS_10 = const (0x00 )
48- _FPS_1 = const (0x01 )
60+ _FPS_10 : int = const (0x00 )
61+ _FPS_1 : int = const (0x01 )
4962
5063# int enables
51- _INT_DISABLED = const (0x00 )
52- _INT_ENABLED = const (0x01 )
64+ _INT_DISABLED : int = const (0x00 )
65+ _INT_ENABLED : int = const (0x01 )
5366
5467# int modes
55- _DIFFERENCE = const (0x00 )
56- _ABSOLUTE_VALUE = const (0x01 )
68+ _DIFFERENCE : int = const (0x00 )
69+ _ABSOLUTE_VALUE : int = const (0x01 )
5770
58- _INT_OFFSET = const (0x010 )
59- _PIXEL_OFFSET = const (0x80 )
71+ _INT_OFFSET : int = const (0x010 )
72+ _PIXEL_OFFSET : int = const (0x80 )
6073
61- _PIXEL_ARRAY_WIDTH = const (8 )
62- _PIXEL_ARRAY_HEIGHT = const (8 )
63- _PIXEL_TEMP_CONVERSION = 0.25
64- _THERMISTOR_CONVERSION = 0.0625
74+ _PIXEL_ARRAY_WIDTH : int = const (8 )
75+ _PIXEL_ARRAY_HEIGHT : int = const (8 )
76+ _PIXEL_TEMP_CONVERSION : int = 0.25
77+ _THERMISTOR_CONVERSION : int = 0.0625
6578
6679
67- def _signed_12bit_to_float (val ) :
80+ def _signed_12bit_to_float (val : int ) -> float :
6881 # take first 11 bits as absolute val
6982 abs_val = val & 0x7FF
7083 if val & 0x800 :
7184 return 0 - float (abs_val )
7285 return float (abs_val )
7386
7487
75- def _twos_comp_to_float (val ) :
88+ def _twos_comp_to_float (val : int ) -> float :
7689 val &= 0xFFF
7790 if val & 0x800 :
7891 val -= 0x1000
@@ -83,34 +96,34 @@ class AMG88XX:
8396 """Driver for the AMG88xx GRID-Eye IR 8x8 thermal camera."""
8497
8598 # Set up the registers
86- _pctl = i2c_bits .RWBits (8 , 0x00 , 0 )
87- _rst = i2c_bits .RWBits (8 , 0x01 , 0 )
88- _fps = i2c_bit .RWBit (0x02 , 0 )
89- _inten = i2c_bit .RWBit (0x03 , 0 )
90- _intmod = i2c_bit .RWBit (0x03 , 1 )
99+ _pctl : RWBits = i2c_bits .RWBits (8 , 0x00 , 0 )
100+ _rst : RWBits = i2c_bits .RWBits (8 , 0x01 , 0 )
101+ _fps : RWBit = i2c_bit .RWBit (0x02 , 0 )
102+ _inten : RWBit = i2c_bit .RWBit (0x03 , 0 )
103+ _intmod : RWBit = i2c_bit .RWBit (0x03 , 1 )
91104
92- _intf = i2c_bit .RWBit (0x04 , 1 )
93- _ovf_irs = i2c_bit .RWBit (0x04 , 2 )
94- _ovf_ths = i2c_bit .RWBit (0x04 , 3 )
105+ _intf : RWBit = i2c_bit .RWBit (0x04 , 1 )
106+ _ovf_irs : RWBit = i2c_bit .RWBit (0x04 , 2 )
107+ _ovf_ths : RWBit = i2c_bit .RWBit (0x04 , 3 )
95108
96- _intclr = i2c_bit .RWBit (0x05 , 1 )
97- _ovs_clr = i2c_bit .RWBit (0x05 , 2 )
98- _ovt_clr = i2c_bit .RWBit (0x05 , 3 )
109+ _intclr : RWBit = i2c_bit .RWBit (0x05 , 1 )
110+ _ovs_clr : RWBit = i2c_bit .RWBit (0x05 , 2 )
111+ _ovt_clr : RWBit = i2c_bit .RWBit (0x05 , 3 )
99112
100- _mamod = i2c_bit .RWBit (0x07 , 5 )
113+ _mamod : RWBit = i2c_bit .RWBit (0x07 , 5 )
101114
102- _inthl = i2c_bits .RWBits (8 , 0x08 , 0 )
103- _inthh = i2c_bits .RWBits (4 , 0x09 , 0 )
104- _intll = i2c_bits .RWBits (8 , 0x0A , 0 )
105- _intlh = i2c_bits .RWBits (4 , 0x0B , 0 )
106- _ihysl = i2c_bits .RWBits (8 , 0x0C , 0 )
107- _ihysh = i2c_bits .RWBits (4 , 0x0D , 0 )
115+ _inthl : RWBits = i2c_bits .RWBits (8 , 0x08 , 0 )
116+ _inthh : RWBits = i2c_bits .RWBits (4 , 0x09 , 0 )
117+ _intll : RWBits = i2c_bits .RWBits (8 , 0x0A , 0 )
118+ _intlh : RWBits = i2c_bits .RWBits (4 , 0x0B , 0 )
119+ _ihysl : RWBits = i2c_bits .RWBits (8 , 0x0C , 0 )
120+ _ihysh : RWBits = i2c_bits .RWBits (4 , 0x0D , 0 )
108121
109- _tthl = i2c_bits .RWBits (8 , 0x0E , 0 )
122+ _tthl : RWBits = i2c_bits .RWBits (8 , 0x0E , 0 )
110123
111- _tthh = i2c_bits .RWBits (4 , 0x0F , 0 )
124+ _tthh : RWBits = i2c_bits .RWBits (4 , 0x0F , 0 )
112125
113- def __init__ (self , i2c , addr = 0x69 ):
126+ def __init__ (self , i2c : busio . I2C , addr : int = 0x69 ) -> None :
114127 self .i2c_device = I2CDevice (i2c , addr )
115128
116129 # enter normal mode
@@ -126,13 +139,13 @@ def __init__(self, i2c, addr=0x69):
126139 self ._fps = _FPS_10
127140
128141 @property
129- def temperature (self ):
142+ def temperature (self ) -> float :
130143 """Temperature of the sensor in Celsius"""
131144 raw = (self ._tthh << 8 ) | self ._tthl
132145 return _signed_12bit_to_float (raw ) * _THERMISTOR_CONVERSION
133146
134147 @property
135- def pixels (self ):
148+ def pixels (self ) -> List [ List [ float ]] :
136149 """Temperature of each pixel across the sensor in Celsius.
137150
138151 Temperatures are stored in a two dimensional list where the first index is the row and
0 commit comments