from iowp import IowFactory, I2C
from iowp.i2c_devices import I2CLCD


def main():
    factory = IowFactory.get_instance()
    if len(factory.get_devices()) == 0:
        print("No IO-Warrior devices found.")
        return

    iow_dev = factory.get_iow_device(0)

    i2c = I2C(I2C.I2C_SPEED_100KHZ)
    iow_dev.add_special_mode_function_impl(i2c)
 
 
    lcd = I2CLCD(device_address=0x07, rows=2, cols=16)
    i2c.add_i2c_device(lcd)

    print(iow_dev)

    try:
        print("Clearing LCD...")
        lcd.clearLCD()

        print("Writing lines...")
        lcd.setCursor(0, 0)
        lcd.writeString("Hello iowp")
        lcd.setCursor(1, 0)
        lcd.writeString("LCD 2x16 Ready")
         
        print("Testing special characters (smiley)...")
        smiley = [
            0b00000,
            0b01010,
            0b01010,
            0b00000,
            0b10001,
            0b01110,
            0b00000,
            0b00000
        ]
        lcd.createChar(0, smiley)
        lcd.setCursor(0, 15)
        lcd.writeString(chr(0))
     
       
    except Exception as e:
        print(f"An error occurred: {e}")

if __name__ == "__main__":
    main()
