code: def add_signal_receiver(self, callback_fn, signal, user_arg):
          
          if (signal in self._signal_names):
              s = Signal(signal, callback_fn, user_arg)
              self._signals[signal] = s
              self._bus.add_signal_receiver(s.signal_handler,
                                            signal,
                                            dbus_interface=self._dbus_addr)
          else:
              raise ConnSignalNameNotRecognisedException
docs: Add a signal receiver callback with user argument
  
          See also :py:meth:`remove_signal_receiver`,
          :py:exc:`.ConnSignalNameNotRecognisedException`
  
          :param func callback_fn:
              User-defined callback function to call when signal triggers
          :param str signal:
              Signal name e.g., :py:attr:`.ConnInterface.SIGNAL_PROPERTY_CHANGED`
          :param user_arg:
              User-defined callback argument to be passed with callback function
          :return:
          :raises ConnSignalNameNotRecognisedException:
              if the signal name is not registered