code: def semver_from_firmware(self, firmware):
          '''Extract a tuple of (major,minor,patch) from a firmware instance'''
          version = firmware.get("mav-firmware-version-major",None)
          if version is None:
              return (None,None,None)
          return (firmware["mav-firmware-version-major"],
                  firmware["mav-firmware-version-minor"],
                  firmware["mav-firmware-version-patch"]f semver_from_firmware(self, firmware):
          '''Extract a tuple of (major,minor,patch) from a firmware instance'''
          version = firmware.get("mav-firmware-version-major",None)
          if version is None:
              return (None,None,None)
          return (firmware["mav-firmware-version-major"],
                  firmware["mav-firmware-version-minor"],
                  firmware["mav-firmware-version-patch"])
docs: Extract a tuple of (major,minor,patch) from a firmware instance