public SDKErrorCode unregister(List<String> modules) {
    // unSubscribe until all modules are unSubscribed
    for (String module : modules) {
      ucNotifyCallback.unregisterCallback(module);
    }

    // call south interface
    if (!ucNotifyCallback.hasRegisteredModule()) {
      notifyCollector.unsubscribeNotify(u19DeviceId, "_");
    }

    SDKErrorCode result = new SDKErrorCode();
    try {
      result = new Notify().registerNotification4U19(false);
    } catch (SDKException e) {
      LOGGER.debug("unregister error!");
    }
    return result;
  }
  public SDKErrorCode register(Map<String, String> map) {
    notifyCollector.subscribeNotify(u19DeviceId, "_", ucNotifyCallback);

    for (Map.Entry<String, String> entry : map.entrySet()) {
      if ("CTC".equalsIgnoreCase(entry.getKey())) {
        ICallback callback = new RestNotifyCTCCallback(entry.getValue());
        ucNotifyCallback.registerCallback("ctc", callback);
      } else {
        LOGGER.warn(
            "UCRestCallbackRegisterService register ability error - "
                + entry.getKey()
                + " is not supported");
      }
    }
    SDKErrorCode result = new SDKErrorCode();
    try {
      result = new Notify().registerNotification4U19(true);
    } catch (SDKException e) {
      LOGGER.debug("register eror!");
    }
    return result;
  }