#!/usr/bin/env python3
import smbus2
import time

# I2C settings
I2C_BUS = 1  # Change if needed (check with i2cdetect -l)
DEVICE_ADDR = 0x28  # Change if your DS1841 is at a different address

# Register addresses (Check DS1841 datasheet)
WIPER_REG = 0x00   # Wiper register (R/W)
STATUS_REG = 0x02  # Status register (R)
TEMP_REG = 0x05    # Temperature sensor register (R)

# Initialize I2C bus
bus = smbus2.SMBus(I2C_BUS)

def read_register(register):
    """Read a byte from the given register."""
    return bus.read_byte_data(DEVICE_ADDR, register)

def write_register(register, value):
    """Write a byte to the given register."""
    bus.write_byte_data(DEVICE_ADDR, register, value)

def get_wiper_position():
    """Reads the current wiper position."""
    return read_register(WIPER_REG)

def set_wiper_position(value):
    """Sets the wiper position (0-255)."""
    if 0 <= value <= 255:
        write_register(WIPER_REG, value)
        print(f"Wiper set to {value}")
    else:
        print("Error: Wiper value out of range (0-255)")

def get_temperature():
    """Reads the onboard temperature sensor (if available)."""
    temp_raw = read_register(TEMP_REG)
    return temp_raw  # Might need conversion if using signed value

# Example Usage
if __name__ == "__main__":
    try:
        print("Current Wiper Position:", get_wiper_position())
        set_wiper_position(100)
        print("Updated Wiper Position:", get_wiper_position())

        # Optional: Read temperature if available
        temp = get_temperature()
        print(f"Temperature Sensor Value: {temp}")

    except Exception as e:
        print(f"Error: {e}")
    finally:
        bus.close()
