Uses the provided message to update the fire alarm state.

        :param message: message to use to update
        :type message: :py:class:`~alarmdecoder.messages.Message`
        :param status: fire status, overrides message bits
        :type status: bool

        :returns: boolean indicating the new status

def _update_fire_status(self, message=None, status=None):
        """
        Uses the provided message to update the fire alarm state.

        :param message: message to use to update
        :type message: :py:class:`~alarmdecoder.messages.Message`
        :param status: fire status, overrides message bits
        :type status: bool

        :returns: boolean indicating the new status
        """
        fire_status = status
        last_status = self._fire_status
        if isinstance(message, Message):
            # Quirk in Ademco panels. The fire bit drops on "SYSTEM LO BAT" messages.
            # FIXME: does not support non english panels.
            if self.mode == ADEMCO and message.text.startswith("SYSTEM"):
                fire_status = last_status
            else:
                fire_status = message.fire_alarm

        if fire_status is None:
            return

        if fire_status != self._fire_status:
            self._fire_status, old_status = fire_status, self._fire_status

            if old_status is not None:
                self.on_fire(status=self._fire_status)

        return self._fire_status