docs: def _set_parameter(self, name, value, tp, timeout=1.0,
                         max_retries=2):
          """ Sets the specified drive parameter.
  
          Sets a parameter on the drive. Only supports ``bool``,
          ``int``, and ``float`` parameters.
  
          Parameters
          ----------
          name : str
              Name of the parameter to set. It is always the command to
              set it when followed by the value.
          value : bool, int, or float
              Value to set the parameter to.
          tp : type {bool, int, float}
              The type of the parameter.
          timeout : number, optional
              Optional timeout in seconds to use when reading the
              response. A negative value or ``None`` indicates that the
              an infinite timeout should be used.
          max_retries : int, optional
              Maximum number of retries to do per command in the case of
              errors.
  
          Returns
          -------
          success : bool
              Whether the last attempt to set the parameter was successful
              (``True``) or not (``False`` meaning it had an error).
  
          See Also
          --------
          _get_parameter : Get a parameter.
  
          """
          # Return False if tp isn't one of the valid types.
          if tp not in (bool, int, float):
              return False
  
          # Convert value to the string that the drive will expect. value
          # must first be converted to the proper type before getting
          # converted to str in the usual fasion. As bools need to be a
          # '1' or a '0', it must be converted to int before going through
          # str.
          if tp == bool:
              value_str = str(int(bool(value)))
          elif tp == int:
              value_str = str(int(value))
          elif tp == float:
              value_str = str(float(value))
  
          # Immediately set the named parameter of the drive. The command
          # is just the parameter name followed by the value string.
          response = self.driver.send_command(name+value_str, \
              timeout=timeout, immediate=True, max_retries=max_retries)
  
          # Return whether the setting was successful or not.
          return not self.driver.command_error(response)