diff --git a/lib/apds9960/apds9960/device.py b/lib/apds9960/apds9960/device.py index 202707c9..dd557874 100644 --- a/lib/apds9960/apds9960/device.py +++ b/lib/apds9960/apds9960/device.py @@ -1,7 +1,105 @@ from time import sleep_ms -from apds9960.const import * -from apds9960.exceptions import * +from apds9960.const import ( + APDS9960_BIT_AVALID, + APDS9960_BIT_GVALID, + APDS9960_BIT_PON, + APDS9960_BIT_PVALID, + APDS9960_DEFAULT_AGAIN, + APDS9960_DEFAULT_AIHT, + APDS9960_DEFAULT_AILT, + APDS9960_DEFAULT_ATIME, + APDS9960_DEFAULT_CONFIG1, + APDS9960_DEFAULT_CONFIG2, + APDS9960_DEFAULT_CONFIG3, + APDS9960_DEFAULT_GCONF1, + APDS9960_DEFAULT_GCONF3, + APDS9960_DEFAULT_GESTURE_PPULSE, + APDS9960_DEFAULT_GEXTH, + APDS9960_DEFAULT_GGAIN, + APDS9960_DEFAULT_GIEN, + APDS9960_DEFAULT_GLDRIVE, + APDS9960_DEFAULT_GOFFSET, + APDS9960_DEFAULT_GPENTH, + APDS9960_DEFAULT_GPULSE, + APDS9960_DEFAULT_GWTIME, + APDS9960_DEFAULT_LDRIVE, + APDS9960_DEFAULT_PERS, + APDS9960_DEFAULT_PGAIN, + APDS9960_DEFAULT_PIHT, + APDS9960_DEFAULT_PILT, + APDS9960_DEFAULT_POFFSET_DL, + APDS9960_DEFAULT_POFFSET_UR, + APDS9960_DEFAULT_PROX_PPULSE, + APDS9960_DEFAULT_WTIME, + APDS9960_DEV_ID, + APDS9960_DIR_DOWN, + APDS9960_DIR_FAR, + APDS9960_DIR_LEFT, + APDS9960_DIR_NEAR, + APDS9960_DIR_NONE, + APDS9960_DIR_RIGHT, + APDS9960_DIR_UP, + APDS9960_GESTURE_SENSITIVITY_1, + APDS9960_GESTURE_SENSITIVITY_2, + APDS9960_GESTURE_THRESHOLD_OUT, + APDS9960_I2C_ADDR, + APDS9960_LED_BOOST_300, + APDS9960_MODE_ALL, + APDS9960_MODE_AMBIENT_LIGHT, + APDS9960_MODE_GESTURE, + APDS9960_MODE_POWER, + APDS9960_MODE_PROXIMITY, + APDS9960_MODE_WAIT, + APDS9960_REG_AICLEAR, + APDS9960_REG_AIHTH, + APDS9960_REG_AIHTL, + APDS9960_REG_AILTH, + APDS9960_REG_AILTL, + APDS9960_REG_ATIME, + APDS9960_REG_BDATAH, + APDS9960_REG_BDATAL, + APDS9960_REG_CDATAH, + APDS9960_REG_CDATAL, + APDS9960_REG_CONFIG1, + APDS9960_REG_CONFIG2, + APDS9960_REG_CONFIG3, + APDS9960_REG_CONTROL, + APDS9960_REG_ENABLE, + APDS9960_REG_GCONF1, + APDS9960_REG_GCONF2, + APDS9960_REG_GCONF3, + APDS9960_REG_GCONF4, + APDS9960_REG_GDATAH, + APDS9960_REG_GDATAL, + APDS9960_REG_GEXTH, + APDS9960_REG_GFIFO_U, + APDS9960_REG_GFLVL, + APDS9960_REG_GOFFSET_D, + APDS9960_REG_GOFFSET_L, + APDS9960_REG_GOFFSET_R, + APDS9960_REG_GOFFSET_U, + APDS9960_REG_GPENTH, + APDS9960_REG_GPULSE, + APDS9960_REG_GSTATUS, + APDS9960_REG_ID, + APDS9960_REG_PDATA, + APDS9960_REG_PERS, + APDS9960_REG_PICLEAR, + APDS9960_REG_PIHT, + APDS9960_REG_PILT, + APDS9960_REG_POFFSET_DL, + APDS9960_REG_POFFSET_UR, + APDS9960_REG_PPULSE, + APDS9960_REG_RDATAH, + APDS9960_REG_RDATAL, + APDS9960_REG_STATUS, + APDS9960_REG_WTIME, + APDS9960_STATE_FAR, + APDS9960_STATE_NEAR, + APDS9960_TIME_FIFO_PAUSE, +) +from apds9960.exceptions import APDS9960InvalidDevId, APDS9960InvalidMode class APDS9960(object): diff --git a/lib/bq27441/bq27441/device.py b/lib/bq27441/bq27441/device.py index 2242704e..5ff4457c 100644 --- a/lib/bq27441/bq27441/device.py +++ b/lib/bq27441/bq27441/device.py @@ -3,8 +3,58 @@ from machine import Pin -from bq27441.const import * -from bq27441.exceptions import * +from bq27441.const import ( + BQ27441_COMMAND_AVAIL_CAPACITY, + BQ27441_COMMAND_AVG_CURRENT, + BQ27441_COMMAND_AVG_POWER, + BQ27441_COMMAND_FLAGS, + BQ27441_COMMAND_FULL_CAP_FIL, + BQ27441_COMMAND_FULL_CAP_UNFL, + BQ27441_COMMAND_FULL_CAPACITY, + BQ27441_COMMAND_INT_TEMP, + BQ27441_COMMAND_MAX_CURRENT, + BQ27441_COMMAND_NOM_CAPACITY, + BQ27441_COMMAND_REM_CAP_FIL, + BQ27441_COMMAND_REM_CAP_UNFL, + BQ27441_COMMAND_REM_CAPACITY, + BQ27441_COMMAND_SOC, + BQ27441_COMMAND_SOC_UNFL, + BQ27441_COMMAND_SOH, + BQ27441_COMMAND_STDBY_CURRENT, + BQ27441_COMMAND_TEMP, + BQ27441_COMMAND_VOLTAGE, + BQ27441_CONTROL_DEVICE_TYPE, + BQ27441_CONTROL_EXIT_CFGUPDATE, + BQ27441_CONTROL_PULSE_SOC_INT, + BQ27441_CONTROL_RESET, + BQ27441_CONTROL_SEALED, + BQ27441_CONTROL_SET_CFGUPDATE, + BQ27441_CONTROL_SHUTDOWN, + BQ27441_CONTROL_SHUTDOWN_ENABLE, + BQ27441_CONTROL_SOFT_RESET, + BQ27441_CONTROL_STATUS, + BQ27441_DEVICE_ID, + BQ27441_EXTENDED_BLOCKDATA, + BQ27441_EXTENDED_CAPACITY, + BQ27441_EXTENDED_CHECKSUM, + BQ27441_EXTENDED_CONTROL, + BQ27441_EXTENDED_DATABLOCK, + BQ27441_EXTENDED_DATACLASS, + BQ27441_EXTENDED_OPCONFIG, + BQ27441_FLAG_CFGUPMODE, + BQ27441_FLAG_SOC1, + BQ27441_FLAG_SOCF, + BQ27441_I2C_ADDRESS, + BQ27441_I2C_TIMEOUT, + BQ27441_ID_DISCHARGE, + BQ27441_ID_REGISTERS, + BQ27441_ID_STATE, + BQ27441_OPCONFIG_BATLOWEN, + BQ27441_OPCONFIG_GPIOPOL, + BQ27441_STATUS_SS, + BQ27441_UNSEAL_KEY, + LIPO_BATTERY_CAPACITY, +) # Parameters for the current() function, to specify which current to read diff --git a/lib/daplink_bridge/README.md b/lib/daplink_bridge/README.md new file mode 100644 index 00000000..66cd9fa5 --- /dev/null +++ b/lib/daplink_bridge/README.md @@ -0,0 +1,119 @@ +# DAPLink Bridge MicroPython Driver + +Low-level I2C bridge driver for the **STM32F103 DAPLink interface** on the STeaMi board. + +This driver handles all direct I2C communication with the bridge: device identification, status/error registers, busy polling, and persistent config zone access (1 KB internal flash). + +# I2C Address + +Default 7-bit I2C address: `0x3B` + +# Basic Usage + +```python +from machine import I2C +from daplink_bridge import DaplinkBridge + +i2c = I2C(1) +bridge = DaplinkBridge(i2c) + +print("WHO_AM_I:", hex(bridge.device_id())) +print("Busy:", bridge.busy()) +``` + +# API + +## Initialization + +```python +bridge = DaplinkBridge(i2c, address=0x3B) +``` + +Create a new DAPLink bridge instance. + +Parameters: + +* `i2c`: initialized MicroPython `I2C` bus +* `address`: I2C address of the bridge, default is `0x3B` + +## Device identification + +### `device_id()` + +```python +bridge.device_id() +``` + +Read the `WHO_AM_I` register. Expected value: `0x4C`. + +## Status + +### `busy()` + +```python +bridge.busy() +``` + +Returns `True` if the bridge is currently busy, otherwise `False`. + +## Config zone + +The config zone is a **1 KB persistent storage area** in the STM32F103 internal flash. It is separate from the external flash file storage and survives `clear_flash()` operations. + +### `clear_config()` + +```python +bridge.clear_config() +``` + +Erase the entire config zone. Raises `OSError` if the operation fails. + +### `write_config(data, offset=0)` + +```python +bridge.write_config("board_rev=3", offset=0) +bridge.write_config(b"\x01\x02\x03", offset=100) +``` + +Write data into the config zone at the given byte offset. + +Parameters: + +* `data`: `str` or `bytes` +* `offset`: byte offset in the range `0` to `1023` + +Notes: + +* existing data outside the written range is preserved +* raises `ValueError` if the write would go out of bounds +* raises `OSError` if the bridge reports a write error + +### `read_config()` + +```python +cfg = bridge.read_config() +``` + +Read back config zone content. + +Returns: + +* `bytes` up to the first `0xFF` +* `b""` if the config zone is empty + +# Architecture + +``` +steami_config ──┐ + ├──→ daplink_bridge ──→ I2C (STM32F103) +daplink_flash ──┘ +``` + +* [`daplink_flash`](../daplink_flash/README.md) — high-level flash file operations +* [`steami_config`](../steami_config/README.md) — persistent board configuration (JSON) + +# Notes + +* The bridge uses a `WHO_AM_I` value of `0x4C`. +* The config zone (1 KB) is separate from the external flash file area. +* All I2C operations go through private helpers (`_read_reg`, `_write_reg`, `_writeto`, `_readfrom`). diff --git a/lib/daplink_bridge/daplink_bridge/device.py b/lib/daplink_bridge/daplink_bridge/device.py index bb116488..2a845181 100644 --- a/lib/daplink_bridge/daplink_bridge/device.py +++ b/lib/daplink_bridge/daplink_bridge/device.py @@ -1,6 +1,18 @@ from time import sleep_ms -from daplink_bridge.const import * +from daplink_bridge.const import ( + CMD_CLEAR_CONFIG, + CMD_READ_CONFIG, + CMD_WHO_AM_I, + CMD_WRITE_CONFIG, + CONFIG_SIZE, + DAPLINK_BRIDGE_DEFAULT_ADDR, + MAX_WRITE_CHUNK, + REG_ERROR, + REG_STATUS, + SECTOR_SIZE, + STATUS_BUSY, +) class DaplinkBridge(object): diff --git a/lib/daplink_flash/daplink_flash/device.py b/lib/daplink_flash/daplink_flash/device.py index ed3f1362..c8965148 100644 --- a/lib/daplink_flash/daplink_flash/device.py +++ b/lib/daplink_flash/daplink_flash/device.py @@ -1,6 +1,17 @@ from time import sleep_ms -from daplink_flash.const import * +from daplink_flash.const import ( + CMD_CLEAR_FLASH, + CMD_GET_FILENAME, + CMD_READ_SECTOR, + CMD_SET_FILENAME, + CMD_WRITE_DATA, + EXT_LEN, + FILENAME_LEN, + MAX_SECTORS, + MAX_WRITE_CHUNK, + SECTOR_SIZE, +) class DaplinkFlash(object): diff --git a/lib/hts221/hts221/device.py b/lib/hts221/hts221/device.py index 687e17f7..e6396e62 100644 --- a/lib/hts221/hts221/device.py +++ b/lib/hts221/hts221/device.py @@ -1,8 +1,31 @@ from time import sleep_ms -from machine import I2C - -from hts221.const import * +from hts221.const import ( + HTS221_AV_CONF, + HTS221_CTRL1_BDU, + HTS221_CTRL1_ODR_MASK, + HTS221_CTRL1_PD, + HTS221_CTRL2_BOOT, + HTS221_CTRL2_ONE_SHOT, + HTS221_CTRL_REG1, + HTS221_CTRL_REG2, + HTS221_H0_T0_OUT_L, + HTS221_H1_T0_OUT_L, + HTS221_HUMIDITY_OUT_L, + HTS221_STATUS_H_DA, + HTS221_STATUS_REG, + HTS221_STATUS_T_DA, + HTS221_T0_OUT_L, + HTS221_T1_OUT_L, + HTS221_TEMP_OUT_L, + HTS221_WHO_AM_I, + HTS_I2C_ADDR, + HTS221_H0_rH_x2, + HTS221_H1_rH_x2, + HTS221_T0_degC_x8, + HTS221_T1_degC_x8, + HTS221_T1T0_msb, +) def int16(d): diff --git a/lib/ism330dl/ism330dl/device.py b/lib/ism330dl/ism330dl/device.py index b9ea7fdb..5f4b3f55 100644 --- a/lib/ism330dl/ism330dl/device.py +++ b/lib/ism330dl/ism330dl/device.py @@ -1,8 +1,41 @@ from math import pi from time import sleep_ms -from ism330dl.const import * -from ism330dl.exceptions import * +from ism330dl.const import ( + ACCEL_FS_2G, + ACCEL_FS_BITS, + ACCEL_ODR_104HZ, + ACCEL_ODR_POWER_DOWN, + ACCEL_ODR_VALUES, + ACCEL_SENSITIVITY_MG, + CTRL3_C_BDU, + CTRL3_C_IF_INC, + CTRL3_C_SW_RESET, + GYRO_FS_125DPS, + GYRO_FS_250DPS, + GYRO_FS_BITS, + GYRO_ODR_104HZ, + GYRO_ODR_POWER_DOWN, + GYRO_ODR_VALUES, + GYRO_SENSITIVITY_MDPS, + ISM330DL_I2C_DEFAULT_ADDR, + ISM330DL_WHO_AM_I_VALUE, + REG_CTRL1_XL, + REG_CTRL2_G, + REG_CTRL3_C, + REG_OUT_TEMP_L, + REG_OUTX_L_G, + REG_OUTX_L_XL, + REG_STATUS_REG, + REG_WHO_AM_I, + STANDARD_GRAVITY, + STATUS_GDA, + STATUS_TDA, + STATUS_XLDA, + TEMP_OFFSET, + TEMP_SENSITIVITY, +) +from ism330dl.exceptions import ISM330DLConfigError, ISM330DLIOError, ISM330DLNotFound class ISM330DL(object): diff --git a/lib/lis2mdl/examples/magnet_compass.py b/lib/lis2mdl/examples/magnet_compass.py index 9aee2b93..d52b435a 100644 --- a/lib/lis2mdl/examples/magnet_compass.py +++ b/lib/lis2mdl/examples/magnet_compass.py @@ -1,7 +1,6 @@ # Example of heading reading with direction label from time import sleep_ms -from lis2mdl.const import * from lis2mdl.device import LIS2MDL from machine import I2C diff --git a/lib/lis2mdl/examples/magnet_fieldForce.py b/lib/lis2mdl/examples/magnet_fieldForce.py index 809b7492..0c577e1f 100644 --- a/lib/lis2mdl/examples/magnet_fieldForce.py +++ b/lib/lis2mdl/examples/magnet_fieldForce.py @@ -1,7 +1,6 @@ # Example of heading reading with direction label from time import sleep_ms -from lis2mdl.const import * from lis2mdl.device import LIS2MDL from machine import I2C diff --git a/lib/lis2mdl/lis2mdl/device.py b/lib/lis2mdl/lis2mdl/device.py index 28225f05..335ca51a 100644 --- a/lib/lis2mdl/lis2mdl/device.py +++ b/lib/lis2mdl/lis2mdl/device.py @@ -4,9 +4,23 @@ import math from time import sleep_ms -from machine import I2C - -from lis2mdl.const import * +from lis2mdl.const import ( + LIS2MDL_CFG_REG_A, + LIS2MDL_CFG_REG_B, + LIS2MDL_CFG_REG_C, + LIS2MDL_I2C_ADDR, + LIS2MDL_INT_SOURCE_REG, + LIS2MDL_OFFSET_X_REG_L, + LIS2MDL_OFFSET_Y_REG_L, + LIS2MDL_OFFSET_Z_REG_L, + LIS2MDL_OUTX_L_REG, + LIS2MDL_STATUS_REG, + LIS2MDL_TEMP_OFFSET, + LIS2MDL_TEMP_OUT_H_REG, + LIS2MDL_TEMP_OUT_L_REG, + LIS2MDL_TEMP_SENSITIVITY, + LIS2MDL_WHO_AM_I, +) class LIS2MDL(object): diff --git a/lib/mcp23009e/README.md b/lib/mcp23009e/README.md index 824c14bc..88bfea40 100644 --- a/lib/mcp23009e/README.md +++ b/lib/mcp23009e/README.md @@ -21,7 +21,7 @@ The base I²C address is \`0x20\` (A0=A1=A2=LOW). On the STeaMi board, the addre ```python from machine import I2C, Pin from mcp23009e import MCP23009E -from mcp23009e.const import * +from mcp23009e.const import MCP23009_DIR_INPUT, MCP23009_I2C_ADDR, MCP23009_PULLUP # Initialize I2C and reset pin bus = I2C(1) @@ -49,7 +49,7 @@ The `MCP23009Pin` class provides a **machine.Pin-compatible** interface: ```python from machine import I2C, Pin from mcp23009e import MCP23009E, MCP23009Pin -from mcp23009e.const import * +from mcp23009e.const import MCP23009_I2C_ADDR # Initialize bus = I2C(1) @@ -72,7 +72,7 @@ led.toggle() # Toggle state ```python from machine import I2C, Pin from mcp23009e import MCP23009E, MCP23009Pin -from mcp23009e.const import * +from mcp23009e.const import MCP23009_I2C_ADDR # Initialize with interrupt pin bus = I2C(1) diff --git a/lib/mcp23009e/examples/binary_counter.py b/lib/mcp23009e/examples/binary_counter.py index e16dae9c..bde02b5d 100644 --- a/lib/mcp23009e/examples/binary_counter.py +++ b/lib/mcp23009e/examples/binary_counter.py @@ -14,7 +14,22 @@ from machine import I2C, Pin from mcp23009e import MCP23009E -from mcp23009e.const import * +from mcp23009e.const import ( + MCP23009_BTN_DOWN, + MCP23009_BTN_LEFT, + MCP23009_BTN_RIGHT, + MCP23009_BTN_UP, + MCP23009_DIR_INPUT, + MCP23009_DIR_OUTPUT, + MCP23009_GPIO1, + MCP23009_GPIO2, + MCP23009_GPIO3, + MCP23009_GPIO4, + MCP23009_I2C_ADDR, + MCP23009_LOGIC_HIGH, + MCP23009_LOGIC_LOW, + MCP23009_PULLUP, +) bus = I2C(1) reset = Pin("RST_EXPANDER", Pin.OUT) diff --git a/lib/mcp23009e/examples/buttons.py b/lib/mcp23009e/examples/buttons.py index c55256a6..52329a35 100644 --- a/lib/mcp23009e/examples/buttons.py +++ b/lib/mcp23009e/examples/buttons.py @@ -7,7 +7,16 @@ from machine import I2C, Pin from mcp23009e import MCP23009E -from mcp23009e.const import * +from mcp23009e.const import ( + MCP23009_BTN_DOWN, + MCP23009_BTN_LEFT, + MCP23009_BTN_RIGHT, + MCP23009_BTN_UP, + MCP23009_DIR_INPUT, + MCP23009_I2C_ADDR, + MCP23009_LOGIC_LOW, + MCP23009_PULLUP, +) # Configuration I2C bus = I2C(1) diff --git a/lib/mcp23009e/examples/combination_lock.py b/lib/mcp23009e/examples/combination_lock.py index 5e96cb02..f66da3b9 100644 --- a/lib/mcp23009e/examples/combination_lock.py +++ b/lib/mcp23009e/examples/combination_lock.py @@ -9,7 +9,17 @@ from machine import I2C, Pin from mcp23009e import MCP23009E -from mcp23009e.const import * +from mcp23009e.const import ( + MCP23009_BTN_DOWN, + MCP23009_BTN_LEFT, + MCP23009_BTN_RIGHT, + MCP23009_BTN_UP, + MCP23009_DIR_INPUT, + MCP23009_I2C_ADDR, + MCP23009_LOGIC_HIGH, + MCP23009_LOGIC_LOW, + MCP23009_PULLUP, +) bus = I2C(1) reset = Pin("RST_EXPANDER", Pin.OUT) diff --git a/lib/mcp23009e/examples/dpad_counter.py b/lib/mcp23009e/examples/dpad_counter.py index 194c5329..9c32cf84 100644 --- a/lib/mcp23009e/examples/dpad_counter.py +++ b/lib/mcp23009e/examples/dpad_counter.py @@ -11,7 +11,17 @@ from machine import I2C, Pin from mcp23009e import MCP23009E -from mcp23009e.const import * +from mcp23009e.const import ( + MCP23009_BTN_DOWN, + MCP23009_BTN_LEFT, + MCP23009_BTN_RIGHT, + MCP23009_BTN_UP, + MCP23009_DIR_INPUT, + MCP23009_I2C_ADDR, + MCP23009_LOGIC_HIGH, + MCP23009_LOGIC_LOW, + MCP23009_PULLUP, +) bus = I2C(1) reset = Pin("RST_EXPANDER", Pin.OUT) diff --git a/lib/mcp23009e/examples/dpad_piano.py b/lib/mcp23009e/examples/dpad_piano.py index 2adba19e..10b6c334 100644 --- a/lib/mcp23009e/examples/dpad_piano.py +++ b/lib/mcp23009e/examples/dpad_piano.py @@ -14,7 +14,16 @@ from machine import I2C, Pin from mcp23009e import MCP23009E -from mcp23009e.const import * +from mcp23009e.const import ( + MCP23009_BTN_DOWN, + MCP23009_BTN_LEFT, + MCP23009_BTN_RIGHT, + MCP23009_BTN_UP, + MCP23009_DIR_INPUT, + MCP23009_I2C_ADDR, + MCP23009_LOGIC_LOW, + MCP23009_PULLUP, +) from pyb import Timer # Board pins diff --git a/lib/mcp23009e/examples/menu_navigation.py b/lib/mcp23009e/examples/menu_navigation.py index 724de6a6..776651d2 100644 --- a/lib/mcp23009e/examples/menu_navigation.py +++ b/lib/mcp23009e/examples/menu_navigation.py @@ -13,7 +13,16 @@ import ssd1327 from machine import I2C, SPI, Pin from mcp23009e import MCP23009E -from mcp23009e.const import * +from mcp23009e.const import ( + MCP23009_BTN_DOWN, + MCP23009_BTN_LEFT, + MCP23009_BTN_RIGHT, + MCP23009_BTN_UP, + MCP23009_DIR_INPUT, + MCP23009_I2C_ADDR, + MCP23009_LOGIC_LOW, + MCP23009_PULLUP, +) # Setup MCP23009E on I2C bus i2c = I2C(1) diff --git a/lib/mcp23009e/examples/morse_code.py b/lib/mcp23009e/examples/morse_code.py index f4c6237a..9ecad394 100644 --- a/lib/mcp23009e/examples/morse_code.py +++ b/lib/mcp23009e/examples/morse_code.py @@ -12,7 +12,17 @@ from machine import I2C, Pin from mcp23009e import MCP23009E -from mcp23009e.const import * +from mcp23009e.const import ( + MCP23009_BTN_DOWN, + MCP23009_BTN_LEFT, + MCP23009_BTN_RIGHT, + MCP23009_BTN_UP, + MCP23009_DIR_INPUT, + MCP23009_I2C_ADDR, + MCP23009_LOGIC_HIGH, + MCP23009_LOGIC_LOW, + MCP23009_PULLUP, +) bus = I2C(1) reset = Pin("RST_EXPANDER", Pin.OUT) diff --git a/lib/mcp23009e/examples/reaction_timer.py b/lib/mcp23009e/examples/reaction_timer.py index bae9feeb..b181a7a1 100644 --- a/lib/mcp23009e/examples/reaction_timer.py +++ b/lib/mcp23009e/examples/reaction_timer.py @@ -11,7 +11,16 @@ import urandom from machine import I2C, Pin from mcp23009e import MCP23009E -from mcp23009e.const import * +from mcp23009e.const import ( + MCP23009_BTN_DOWN, + MCP23009_BTN_LEFT, + MCP23009_BTN_RIGHT, + MCP23009_BTN_UP, + MCP23009_DIR_INPUT, + MCP23009_I2C_ADDR, + MCP23009_LOGIC_LOW, + MCP23009_PULLUP, +) bus = I2C(1) reset = Pin("RST_EXPANDER", Pin.OUT) diff --git a/lib/mcp23009e/examples/simon.py b/lib/mcp23009e/examples/simon.py index d2c7bf08..e61d78d6 100644 --- a/lib/mcp23009e/examples/simon.py +++ b/lib/mcp23009e/examples/simon.py @@ -10,7 +10,16 @@ import urandom from machine import I2C, Pin from mcp23009e import MCP23009E -from mcp23009e.const import * +from mcp23009e.const import ( + MCP23009_BTN_DOWN, + MCP23009_BTN_LEFT, + MCP23009_BTN_RIGHT, + MCP23009_BTN_UP, + MCP23009_DIR_INPUT, + MCP23009_I2C_ADDR, + MCP23009_LOGIC_LOW, + MCP23009_PULLUP, +) bus = I2C(1) reset = Pin("RST_EXPANDER", Pin.OUT) diff --git a/lib/mcp23009e/examples/sleep_on_button.py b/lib/mcp23009e/examples/sleep_on_button.py index 71d6514d..1881e7d3 100644 --- a/lib/mcp23009e/examples/sleep_on_button.py +++ b/lib/mcp23009e/examples/sleep_on_button.py @@ -13,7 +13,16 @@ from machine import I2C, Pin, lightsleep from mcp23009e import MCP23009E -from mcp23009e.const import * +from mcp23009e.const import ( + MCP23009_BTN_DOWN, + MCP23009_BTN_LEFT, + MCP23009_BTN_RIGHT, + MCP23009_BTN_UP, + MCP23009_DIR_INPUT, + MCP23009_I2C_ADDR, + MCP23009_LOGIC_HIGH, + MCP23009_PULLUP, +) bus = I2C(1) reset = Pin("RST_EXPANDER", Pin.OUT) diff --git a/lib/mcp23009e/mcp23009e/device.py b/lib/mcp23009e/mcp23009e/device.py index df7bd05c..068bf844 100644 --- a/lib/mcp23009e/mcp23009e/device.py +++ b/lib/mcp23009e/mcp23009e/device.py @@ -1,8 +1,29 @@ from time import sleep_ms -from machine import I2C, Pin - -from mcp23009e.const import * +from machine import Pin + +from mcp23009e.const import ( + MCP23009_DEFVAL, + MCP23009_DIR_INPUT, + MCP23009_GPINTEN, + MCP23009_GPIO, + MCP23009_GPPU, + MCP23009_INTCAP, + MCP23009_INTCON, + MCP23009_INTCON_PREVIOUS_STATE, + MCP23009_INTEN_DISABLE, + MCP23009_INTEN_ENABLE, + MCP23009_INTF, + MCP23009_IOCON, + MCP23009_IODIR, + MCP23009_IPOL, + MCP23009_LOGIC_HIGH, + MCP23009_LOGIC_LOW, + MCP23009_NO_PULLUP, + MCP23009_OLAT, + MCP23009_POL_SAME, + MCP23009Config, +) def _set_bit(reg, bit, value): diff --git a/lib/mcp23009e/mcp23009e/pin.py b/lib/mcp23009e/mcp23009e/pin.py index 42ad7b80..4fb9bdbe 100644 --- a/lib/mcp23009e/mcp23009e/pin.py +++ b/lib/mcp23009e/mcp23009e/pin.py @@ -3,9 +3,15 @@ pour les GPIO du MCP23009E """ -from machine import Pin as MachinePin -from mcp23009e.const import * +from mcp23009e.const import ( + MCP23009_DIR_INPUT, + MCP23009_DIR_OUTPUT, + MCP23009_LOGIC_HIGH, + MCP23009_LOGIC_LOW, + MCP23009_NO_PULLUP, + MCP23009_PULLUP, +) class MCP23009Pin: diff --git a/lib/ssd1327/ssd1327/__init__.py b/lib/ssd1327/ssd1327/__init__.py index abca2fe6..e48ceb49 100644 --- a/lib/ssd1327/ssd1327/__init__.py +++ b/lib/ssd1327/ssd1327/__init__.py @@ -1,4 +1,4 @@ -from ssd1327.const import * +from ssd1327.const import SET_DISP_OFFSET, SET_SEG_REMAP from ssd1327.device import ( SSD1327, SSD1327_I2C, diff --git a/lib/ssd1327/ssd1327/device.py b/lib/ssd1327/ssd1327/device.py index 8a60a80e..adae168c 100644 --- a/lib/ssd1327/ssd1327/device.py +++ b/lib/ssd1327/ssd1327/device.py @@ -2,7 +2,29 @@ import framebuf -from ssd1327.const import * +from ssd1327.const import ( + REG_CMD, + REG_DATA, + SET_COL_ADDR, + SET_COMMAND_LOCK, + SET_CONTRAST, + SET_DISP, + SET_DISP_CLK_DIV, + SET_DISP_MODE, + SET_DISP_OFFSET, + SET_DISP_START_LINE, + SET_FN_SELECT_A, + SET_FN_SELECT_B, + SET_GRAYSCALE_LINEAR, + SET_MUX_RATIO, + SET_PHASE_LEN, + SET_PRECHARGE, + SET_ROW_ADDR, + SET_SCROLL_DEACTIVATE, + SET_SECOND_PRECHARGE, + SET_SEG_REMAP, + SET_VCOM_DESEL, +) class SSD1327(object): diff --git a/lib/vl53l1x/vl53l1x/const.py b/lib/vl53l1x/vl53l1x/const.py index 10b0ea40..e69de29b 100644 --- a/lib/vl53l1x/vl53l1x/const.py +++ b/lib/vl53l1x/vl53l1x/const.py @@ -1 +0,0 @@ -from micropython import const diff --git a/lib/wsen-hids/wsen_hids/device.py b/lib/wsen-hids/wsen_hids/device.py index da60e872..725beb8f 100644 --- a/lib/wsen-hids/wsen_hids/device.py +++ b/lib/wsen-hids/wsen_hids/device.py @@ -1,6 +1,47 @@ from time import sleep_ms, ticks_diff, ticks_ms -from .const import * +from .const import ( + AUTO_INCREMENT, + AVG_2, + AVG_4, + AVG_8, + AVG_16, + AVG_32, + AVG_64, + AVG_128, + AVG_256, + AVG_H_DEFAULT, + AVG_T_DEFAULT, + CTRL_1_BDU, + CTRL_1_ODR_MASK, + CTRL_1_PD, + CTRL_2_BOOT, + CTRL_2_HEATER, + CTRL_2_ONE_SHOT, + ODR_1_HZ, + ODR_7_HZ, + ODR_12_5_HZ, + ODR_ONE_SHOT, + REG_AV_CONF, + REG_CTRL_1, + REG_CTRL_2, + REG_DEVICE_ID, + REG_H0_RH_X2, + REG_H0_T0_OUT_L, + REG_H1_RH_X2, + REG_H1_T0_OUT_L, + REG_H_OUT_L, + REG_STATUS, + REG_T0_DEGC_X8, + REG_T0_OUT_L, + REG_T1_DEGC_X8, + REG_T1_OUT_L, + REG_T1_T0_MSB, + STATUS_H_DA, + STATUS_T_DA, + WSEN_HIDS_DEVICE_ID, + WSEN_HIDS_I2C_ADDRESS, +) from .exceptions import ( WSENHIDSCommunicationError, WSENHIDSDeviceIDError, diff --git a/lib/wsen-pads/wsen_pads/device.py b/lib/wsen-pads/wsen_pads/device.py index c1d2f0f9..ab77798a 100644 --- a/lib/wsen-pads/wsen_pads/device.py +++ b/lib/wsen-pads/wsen_pads/device.py @@ -1,7 +1,45 @@ from time import sleep_ms, ticks_diff, ticks_ms -from wsen_pads.const import * -from wsen_pads.exceptions import * +from wsen_pads.const import ( + BOOT_DELAY_MS, + CTRL1_BDU, + CTRL1_EN_LPFP, + CTRL1_LPFP_CFG, + CTRL1_ODR_MASK, + CTRL1_ODR_SHIFT, + CTRL2_BOOT, + CTRL2_IF_ADD_INC, + CTRL2_LOW_NOISE_EN, + CTRL2_ONE_SHOT, + CTRL2_SWRESET, + INT_SOURCE_BOOT_ON, + ODR_1_HZ, + ODR_10_HZ, + ODR_25_HZ, + ODR_50_HZ, + ODR_75_HZ, + ODR_100_HZ, + ODR_200_HZ, + ODR_POWER_DOWN, + ONE_SHOT_LOW_NOISE_DELAY_MS, + ONE_SHOT_LOW_POWER_DELAY_MS, + PRESSURE_HPA_PER_DIGIT, + PRESSURE_KPA_PER_DIGIT, + PRESSURE_PA_PER_DIGIT, + REG_CTRL_1, + REG_CTRL_2, + REG_DATA_P_XL, + REG_DATA_T_L, + REG_DEVICE_ID, + REG_INT_SOURCE, + REG_STATUS, + STATUS_P_DA, + STATUS_T_DA, + TEMPERATURE_C_PER_DIGIT, + WSEN_PADS_DEVICE_ID, + WSEN_PADS_I2C_DEFAULT_ADDR, +) +from wsen_pads.exceptions import WSENPADSDeviceNotFound, WSENPADSInvalidDevice, WSENPADSTimeout class WSEN_PADS(object): diff --git a/pyproject.toml b/pyproject.toml index 96a1663a..a15f7b42 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -72,9 +72,6 @@ select = [ ignore = [ "E501", # line length, recommended to disable "E741", # 'l' is currently widely used - "F401", # unused import (wildcard re-exports) - "F403", # wildcard import - "F405", # name from wildcard import "ISC001", # conflicts with formatter "ISC003", # micropython does not support implicit concatenation of f-strings "PIE810", # micropython does not support passing tuples to .startswith or .endswith