docs: def get_hostfirmware(self,callb=None):
          """Convenience method to request the device firmware info from the device
  
          This method will check whether the value has already been retrieved from the device,
          if so, it will simply return it. If no, it will request the information from the device
          and request that callb be executed when a response is received. The default callback
          will simply cache the value.
  
          :param callb: Callable to be used when the response is received. If not set,
                        self.resp_set_label will be used.
          :type callb: callable
          :returns: The cached value
          :rtype: str
          """
          if self.host_firmware_version is None:
              mypartial=partial(self.resp_set_hostfirmware)
              if callb:
                  mycallb=lambda x,y:(mypartial(y),callb(x,y))
              else:
                  mycallb=lambda x,y:mypartial(y)
              response = self.req_with_resp(GetHostFirmware, StateHostFirmware,mycallb )
          return (self.host_firmware_version,self.host_firmware_build_timestamp)