docs: def add_signal_receiver(self, callback_fn, signal, user_arg):
          """
          Add a signal receiver callback with user argument
  
          See also :py:meth:`remove_signal_receiver`,
          :py:exc:`.BTSignalNameNotRecognisedException`
  
          :param func callback_fn: User-defined callback function to call when
              signal triggers
          :param str signal: Signal name e.g.,
              :py:attr:`.BTInterface.SIGNAL_PROPERTY_CHANGED`
          :param user_arg: User-defined callback argument to be passed with
              callback function
          :return:
          :raises BTSignalNameNotRecognisedException: if the signal name is
              not registered
          """
          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,
                                            path=self._path)
          else:
              raise BTSignalNameNotRecognisedException