code: def _update_armed_ready_status(self, message=None):
          
  
          arm_status = None
          stay_status = None
          ready_status = None
  
          send_ready = False
          send_arm = False
  
          if isinstance(message, Message):
              arm_status = message.armed_away
              stay_status = message.armed_home
              ready_status = message.ready
  
          if arm_status is None or stay_status is None or ready_status is None:
              return
  
          self._armed_stay, old_stay = stay_status, self._armed_stay
          self._armed_status, old_arm = arm_status, self._armed_status
          self._ready_status, old_ready_status = ready_status, self._ready_status
  
          if old_arm is not None:
              if arm_status != old_arm or stay_status != old_stay:
                  send_arm = True
  
          if old_ready_status is not None:
              if ready_status != old_ready_status:
                  send_ready = True
  
          if send_ready:
              self.on_ready_changed(status=self._ready_status)
  
          if send_arm:
              if self._armed_status or self._armed_stay:
                  self.on_arm(stay=stay_status)
              else:
                  self.on_disarm()
docs: Uses the provided message to update the armed state
          and ready state at once as they can change in the same
          message and we want both events to have the same states.
          :param message: message to use to update
          :type message: :py:class:`~alarmdecoder.messages.Message`