def ultrasonics_thread(self):
        '''
        Repeatedly insert ultrasonics data into the database.
        '''
        ultrasonic = Ultrasonic()
        ultrasonic_read_id = 0
        valid = False

        while True:
            try:
                # TODO: Validity should not come from here, move validity checks
                # to validity module.
                ultra_data = ultrasonic.senseUltrasonic()
                validity = ultra_data['valid']

                if any(validity):
                    any_valid_data = True
                else:
                    any_valid_data = False

                # TODO: Something doesn't feel right here!
                if not valid:
                    valid = True
                up.update_ultrasonics_sensor_validity(self.poly, any_valid_data)

                up.update_ultrasonics_validity(self.poly, validity)

                # We need to put the data in, even if it is all 0's.
                # This gives a fail safe if a script was only relying on sensor data
                # and not using data validity
                ins.insert_ultrasonics_reading(
                    self.poly,
                    ultrasonic_read_id,
                    ultra_data
                )
                ultrasonic_read_id += 1
                time.sleep(0.2)
            except Exception as e:              # set to invalid
                if valid:
                    valid = False
                    up.update_ultrasonics_sensor_validity(self.poly, False)
                traceback.print_exc()
                print e
import sys
from tiberius.control.sensors import Ultrasonic
from tiberius.control.sensors import Compass
import time

if __name__ == "__main__":
    while(True):
        u = Ultrasonic()
        c = Compass()
        vals = u.senseUltrasonic()
        heading = c.headingNormalized()
        print str(vals)
        print str(heading)
        time.sleep(1)