def lookup(self, addr, debug=False):
        if(debug):
            logging.debug("CFG:\tChecking for driver for device at i2c %s" % addr)
        
        # TODO replace with reading from config? probably use ConfigParser?
        # note: i2c addresses can conflict
        # could scan registers etc to confirm count etc?
        import raspberrypi
        
        if addr == 0x68:
            return "RTC", "Driver not loaded - DS1307"
        
        elif addr == 0x20:
            try:
                from sensor.GPS_I2C import GPS_NavigatronSensor
                self.gps_sensor = GPS_NavigatronSensor(i2c_bus=raspberrypi.i2c_bus(), debug=debug)
            except Exception as ex:
                logging.warning("CFG:\tError setting up GPS over i2c - %s" % ex)
            return "GPS", self.gps_sensor
        
        elif addr == 0x48:
            try:
                from sensor.temperature_TMP102 import TemperatureSensor
                self.temperature_sensor = TemperatureSensor(i2c_bus=raspberrypi.i2c_bus(), debug=debug)
            except Exception as ex:
                logging.warning("CFG:\tError setting up TEMPERATURE over i2c - %s" % ex)
            return "TEMPERATURE", self.temperature_sensor
                    
        elif addr == 0x60:
            try:
                from sensor.compass_CMPS10 import Cmps10_Sensor
                self.compass_sensor = Cmps10_Sensor(i2c_bus=raspberrypi.i2c_bus(), debug=debug)
            except Exception as ex:
                logging.warning("CFG:\tError setting up COMPASS over i2c - %s" % ex)
            return "COMPASS", self.compass_sensor
        
        elif addr == 0x40: #or addr == 0x70:
            # DriveController (using Adafruit PWM board) (not sure what 0x70 address is for...)
            try:
                from vehicle.drive_controller import AdafruitDriveController
                # TODO pwm addresses from config?
                self.drive_controller = AdafruitDriveController(i2c_addr=addr, i2c_bus=raspberrypi.i2c_bus(), debug=debug)
            except Exception as ex:
                logging.info("CFG:\tError setting up DRIVECONTROLLER over i2c - %s" % ex)
                self.drive_controller = DummyDriveController()
            return "DRIVECONTROLLER", self.drive_controller
        
        elif addr == 0x32:
            # DriveController (using RaspyJuice)
            try:
                from vehicle.drive_controller import PyJuiceDriveController
                # TODO pwm addresses from config?
                self.drive_controller = PyJuiceDriveController(i2c_addr=addr, i2c_bus=raspberrypi.i2c_bus(), debug=debug)
            except Exception as ex:
                logging.info("CFG:\tError setting up DRIVECONTROLLER over i2c - %s" % ex)
                self.drive_controller = DummyDriveController()
            return "DRIVECONTROLLER", self.drive_controller
    
        elif addr == 0x1E:
            return "COMPASS", "Driver not loaded - HMC5883L"
                
        elif addr == 0x53 or addr == 0x1D:
            # 0x53 when ALT connected to HIGH
            # 0x1D when ALT connected to LOW
            return "ACCELEROMETER", "Driver not loaded - ADXL345"
                
        elif addr == 0x69:
            # 0x68 when AD0 connected to LOW - conflicts with DS1307!
            # 0x69 when AD0 connected to HIGH
            return "GYRO", "Driver not loaded - ITG3200"
                
        else:
            return "unknown", None
lookup available device drivers by hex address,
dataset/ETHPy150Open FishPi/FishPi-POCV---Command---Control/fishpi/localconfig_old.py/FishPiConfig.lookup