Performs a basic gyroscope bias calculation. 

        Takes a list of (x, y, z) samples and averages over each axis to calculate
        the bias values, and stores them in the calibration data structure for the 
        currently connected SK8

def calculate_gyro_calibration(self, gyro_samples):
        """Performs a basic gyroscope bias calculation. 

        Takes a list of (x, y, z) samples and averages over each axis to calculate
        the bias values, and stores them in the calibration data structure for the 
        currently connected SK8"""

        totals = [0, 0, 0]
        for gs in gyro_samples:
            totals[0] += gs[0]
            totals[1] += gs[1]
            totals[2] += gs[2]

        for i in range(3):
            totals[i] = int(float(totals[i]) / len(gyro_samples))

        print('Saving gyro offsets for {}'.format(self.current_imuid))
        self.calibration_data[self.current_imuid][self.GYROX_OFFSET] = str(totals[0])
        self.calibration_data[self.current_imuid][self.GYROY_OFFSET] = str(totals[1])
        self.calibration_data[self.current_imuid][self.GYROZ_OFFSET] = str(totals[2])
        self.calibration_data[self.current_imuid][self.GYRO_TIMESTAMP] = datetime.now().isoformat()
        self.write_calibration_data()
        self.update_data_display(self.calibration_data[self.current_imuid])
        self.calibration_state = self.CAL_NONE