code: def run(self):
          
  
          t_last_click = -1
  
          while True:
              d = self.device.read(13)
              if d is not None and self._enabled:
  
                  if d[0] == 1:  ## readings from 6-DoF sensor
                      self.y = convert(d[1], d[2])
                      self.x = convert(d[3], d[4])
                      self.z = convert(d[5], d[6]) * -1.0
  
                      self.roll = convert(d[7], d[8])
                      self.pitch = convert(d[9], d[10])
                      self.yaw = convert(d[11], d[12])
  
                      self._control = [
                          self.x,
                          self.y,
                          self.z,
                          self.roll,
                          self.pitch,
                          self.yaw,
                      ]
  
                  elif d[0] == 3:  ## readings from the side buttons
  
                      # press left button
                      if d[1] == 1:
                          t_click = time.time()
                          elapsed_time = t_click - t_last_click
                          t_last_click = t_click
                          self.single_click_and_hold = True
  
                      # release left button
                      if d[1] == 0:
                          self.single_click_and_hold = False
  
                      # right button is for reset
                      if d[1] == 2:
                          self._reset_state = 1
                          self._enabled = False
                          self._reset_internal_state()
docs: Listener method that keeps pulling new messages.