@Override
  public void dial(String address, int clirMode, UUSInfo uusInfo, Message result) {
    RILRequest rr;
    if (PhoneNumberUtils.isEmergencyNumber(address)) {
      Log.v(LOG_TAG, "Emergency dial: " + address);
      rr = RILRequest.obtain(RIL_REQUEST_DIAL_EMERGENCY, result);
      rr.mp.writeString(address + "/");
    } else {
      rr = RILRequest.obtain(RIL_REQUEST_DIAL, result);
      rr.mp.writeString(address);
    }

    rr.mp.writeInt(clirMode);
    rr.mp.writeInt(0); // UUS information is absent

    if (uusInfo == null) {
      rr.mp.writeInt(0); // UUS information is absent
    } else {
      rr.mp.writeInt(1); // UUS information is present
      rr.mp.writeInt(uusInfo.getType());
      rr.mp.writeInt(uusInfo.getDcs());
      rr.mp.writeByteArray(uusInfo.getUserData());
    }

    if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest));

    send(rr);
  }
  @Override
  public void dial(String address, int clirMode, UUSInfo uusInfo, Message result) {
    if (!dialCode) {
      super.dial(address, clirMode, uusInfo, result);
      return;
    }
    RILRequest rr = RILRequest.obtain(RIL_REQUEST_DIAL, result);

    rr.mParcel.writeString(address);
    rr.mParcel.writeInt(clirMode);
    rr.mParcel.writeInt(0);
    rr.mParcel.writeInt(1);
    rr.mParcel.writeString("");

    if (uusInfo == null) {
      rr.mParcel.writeInt(0); // UUS information is absent
    } else {
      rr.mParcel.writeInt(1); // UUS information is present
      rr.mParcel.writeInt(uusInfo.getType());
      rr.mParcel.writeInt(uusInfo.getDcs());
      rr.mParcel.writeByteArray(uusInfo.getUserData());
    }

    if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest));

    send(rr);
  }