Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -473,6 +473,7 @@ lib/<component>/
- **Attributes**: `self.i2c` for the I2C bus, `self.address` for the device address (not `self.bus`, `self.addr`).
- **I2C helpers**: use private snake_case methods `_read_reg()`, `_write_reg()` for register access.
- **Device identification**: `device_id()` — returns the device/WHO_AM_I register value. All I2C drivers with an ID register must implement this method.
- **Reset methods**: `reset()` for hardware reset (pin toggle), `soft_reset()` for software reset (register write), `reboot()` for memory reboot (reload trimming).
Comment thread
nedseb marked this conversation as resolved.

### Linting

Expand Down
6 changes: 5 additions & 1 deletion lib/bq27441/bq27441/device.py
Original file line number Diff line number Diff line change
Expand Up @@ -454,7 +454,11 @@ def write_op_config(self, value):
# OpConfig register location: BQ27441_ID_REGISTERS id, offset 0
return self.write_extended_data(BQ27441_ID_REGISTERS, 0, op_config_data, 2)

# Issue a soft - reset to the BQ27441 - G1A
# Full reset of the BQ27441-G1A
def reset(self):
return self.execute_control_word(BQ27441_CONTROL_RESET)

# Soft reset (resimulation) of the BQ27441-G1A
def soft_reset(self):
return self.execute_control_word(BQ27441_CONTROL_SOFT_RESET)

Expand Down
7 changes: 7 additions & 0 deletions lib/hts221/hts221/device.py
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,13 @@ def trigger_one_shot(self):
self._write_reg(HTS221_CTRL_REG2, ctrl2 | HTS221_CTRL2_ONE_SHOT)
sleep_ms(15)

def reboot(self):
ctrl2 = self._read_reg(HTS221_CTRL_REG2)
self._write_reg(HTS221_CTRL_REG2, ctrl2 | HTS221_CTRL2_BOOT)
sleep_ms(15)
self._read_temperature_calibration()
self._read_humidity_calibration()

def _ensure_data(self):
if self._is_power_down() or self._is_one_shot_mode():
self.trigger_one_shot()
Expand Down
6 changes: 3 additions & 3 deletions lib/ism330dl/ism330dl/device.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ def __init__(self, i2c, address=ISM330DL_I2C_DEFAULT_ADDR):
self._temp_offset = 0.0

self.check_device()
self.reset()
self.soft_reset()
self.configure_accel(ACCEL_ODR_104HZ, ACCEL_FS_2G)
self.configure_gyro(GYRO_ODR_104HZ, GYRO_FS_250DPS)

Expand Down Expand Up @@ -85,10 +85,10 @@ def check_device(self):
raise ISM330DLNotFound("ISM330DL not detected")

# --------------------------------------------------
# Reset
# Soft reset
# --------------------------------------------------

def reset(self):
def soft_reset(self):
self._write_u8(REG_CTRL3_C, CTRL3_C_SW_RESET)
sleep_ms(50)
self._write_u8(REG_CTRL3_C, CTRL3_C_BDU | CTRL3_C_IF_INC)
Expand Down
6 changes: 3 additions & 3 deletions lib/wsen-hids/examples/full_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -118,10 +118,10 @@ def test_default_registers(sensor):
return False


def test_reboot_memory(sensor):
def test_reboot(sensor):
print_header("4) Reboot memory")
try:
sensor.reboot_memory()
sensor.reboot()
sleep(0.05)
dump_registers(sensor)

Expand Down Expand Up @@ -466,7 +466,7 @@ def main():

results.append(test_device_id(sensor))
results.append(test_default_registers(sensor))
results.append(test_reboot_memory(sensor))
results.append(test_reboot(sensor))
results.append(test_one_shot(sensor))
results.append(test_one_shot_loop(sensor, count=5, delay_s=1))
results.append(test_continuous_mode(sensor, ODR_1_HZ, "1 Hz", wait_ms=1500))
Expand Down
2 changes: 1 addition & 1 deletion lib/wsen-hids/wsen_hids/device.py
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,7 @@ def enable_heater(self, enabled=True):
value = CTRL_2_HEATER if enabled else 0
self._update_reg(REG_CTRL_2, CTRL_2_HEATER, value)

def reboot_memory(self):
def reboot(self):
self._update_reg(REG_CTRL_2, CTRL_2_BOOT, CTRL_2_BOOT)
sleep_ms(self.DEFAULT_BOOT_TIME_MS)
self._read_calibration()
Expand Down
11 changes: 11 additions & 0 deletions tests/scenarios/bq27441.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,17 @@ tests:
expect: 185
mode: [mock]

- name: "Reset sends CONTROL_RESET command"
action: script
script: |
i2c.clear_write_log()
dev.reset()
log = i2c.get_write_log()
wrote_reset = any(reg == 0x00 and data[0] == 0x41 for reg, data in log)
result = wrote_reset
expect_true: true
mode: [mock]

- name: "Read state of health"
action: call
method: state_of_health
Expand Down
23 changes: 23 additions & 0 deletions tests/scenarios/hts221.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,29 @@ tests:
expect_not_none: true
mode: [mock]

- name: "Reboot re-reads calibration registers"
action: script
script: |
i2c.clear_write_log()
dev.reboot()
# After reboot, calibration registers (0x3C-0x3F) should be re-read
# Verify T0_OUT and T1_OUT are still valid by checking temperature works
t = dev.temperature()
result = isinstance(t, float) and t != 0.0
expect_true: true
mode: [mock]

- name: "Reboot writes BOOT bit"
action: script
script: |
i2c.clear_write_log()
dev.reboot()
log = i2c.get_write_log()
wrote_boot = any(reg == 0x21 and (data[0] & 0x80) for reg, data in log)
result = wrote_boot
expect_true: true
mode: [mock]

- name: "Temperature with offset"
action: script
script: |
Expand Down
6 changes: 3 additions & 3 deletions tests/scenarios/ism330dl.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -283,13 +283,13 @@ tests:
expect_true: true
mode: [mock]

# ----- Reset -----
# ----- Soft reset -----

- name: "Reset sets BDU and IF_INC in CTRL3_C"
- name: "Soft reset sets BDU and IF_INC in CTRL3_C"
action: script
script: |
i2c.clear_write_log()
dev.reset()
dev.soft_reset()
log = i2c.get_write_log()
ctrl3_writes = [data[0] for reg, data in log if reg == 0x12]
bdu_if_inc = (1 << 6) | (1 << 2)
Expand Down
Loading