<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def check_firmware_present(self, firmware_type, version):
 """Check if this VirtualBox installation has a firmware of the given type available, either system-wide or per-user. Optionally, this may return a hint where this firmware can be downloaded from. in firmware_type of type :class:`FirmwareType` Type of firmware to check. in version of type str Expected version number, usually empty string (presently ignored). out url of type str Suggested URL to download this firmware from. out file_p of type str Filename of firmware, only valid if result == TRUE. return result of type bool If firmware of this type and version is available. """

        if not isinstance(firmware_type, FirmwareType):
            raise TypeError("firmware_type can only be an instance of type FirmwareType")
        if not isinstance(version, basestring):
            raise TypeError("version can only be an instance of type basestring")
        (result, url, file_p) = self._call("checkFirmwarePresent",
                     in_p=[firmware_type, version])
        return (result, url, file_p)