Get the latest status information from device.

        Method queries device via HTTP and updates instance attributes.
        Returns "True" on success and "False" on fail.
        This method is for AVR-X  devices built in 2016 and later.

def _update_avr_2016(self):
        """
        Get the latest status information from device.

        Method queries device via HTTP and updates instance attributes.
        Returns "True" on success and "False" on fail.
        This method is for AVR-X  devices built in 2016 and later.
        """
        # Collect tags for AppCommand.xml call
        tags = ["GetAllZonePowerStatus", "GetAllZoneSource",
                "GetAllZoneVolume", "GetAllZoneMuteStatus",
                "GetSurroundModeStatus"]
        # Execute call
        root = self.exec_appcommand_post(tags)
        # Check result
        if root is None:
            _LOGGER.error("Update failed.")
            return False

        # Extract relevant information
        zone = self._get_own_zone()

        try:
            self._power = root[0].find(zone).text
        except (AttributeError, IndexError):
            _LOGGER.error("No PowerStatus found for zone %s", self.zone)

        try:
            self._mute = root[3].find(zone).text
        except (AttributeError, IndexError):
            _LOGGER.error("No MuteStatus found for zone %s", self.zone)

        try:
            self._volume = root.find(
                "./cmd/{zone}/volume".format(zone=zone)).text
        except AttributeError:
            _LOGGER.error("No VolumeStatus found for zone %s", self.zone)

        try:
            inputfunc = root.find(
                "./cmd/{zone}/source".format(zone=zone)).text
        except AttributeError:
            _LOGGER.error("No Source found for zone %s", self.zone)
        else:
            try:
                self._input_func = self._input_func_list_rev[inputfunc]
            except KeyError:
                _LOGGER.info("No mapping for source %s found", inputfunc)
                self._input_func = inputfunc
                # Get/update sources list if current source is not known yet
                if self._update_input_func_list():
                    _LOGGER.info("List of input functions refreshed.")
                    # If input function is still not known, create new entry.
                    if (inputfunc not in self._input_func_list and
                            inputfunc is not None):
                        self._input_func_list_rev[inputfunc] = inputfunc
                        self._input_func_list[inputfunc] = inputfunc
                else:
                    _LOGGER.error((
                        "Input function list for Denon receiver at host %s "
                        "could not be updated."), self._host)
        try:
            self._sound_mode_raw = root[4][0].text.rstrip()
        except (AttributeError, IndexError):
            _LOGGER.error("No SoundMode found for the main zone %s", self.zone)

        # Now playing information is not implemented for 2016+ models, because
        # a HEOS API query needed. So only sync the power state for now.
        if self._power == POWER_ON:
            self._state = STATE_ON
        else:
            self._state = STATE_OFF

        return True