'Get the latest details from the device.'

def update(self):

    status = self.command('system-power    query')
    if (not status):
        return
    if (status[1] == 'on'):
        self._pwstate = STATE_ON
    else:
        self._pwstate = STATE_OFF
        return
    volume_raw = self.command('volume    query')
    mute_raw = self.command('audio-muting    query')
    current_source_raw = self.command('input-selector    query')
    if (not (volume_raw and mute_raw and current_source_raw)):
        return
    if isinstance(current_source_raw[1], str):
        current_source_tuples = (current_source_raw[0], (current_source_raw[1],))
    else:
        current_source_tuples = current_source_raw
    for source in current_source_tuples[1]:
        if (source in self._source_mapping):
            self._current_source = self._source_mapping[source]
            break
        else:
            self._current_source = '_'.join([i for i in current_source_tuples[1]])
    self._muted = bool((mute_raw[1] == 'on'))
    self._volume = (volume_raw[1] / 80.0)
