@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);
  }
  @Override
  public void getCdmaSubscriptionSource(Message response) {
    RILRequest rr =
        RILRequest.obtain(RILConstants.RIL_REQUEST_CDMA_GET_SUBSCRIPTION_SOURCE, response);

    if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest));
    Log.d(LOG_TAG, "RIL_REQUEST_CDMA_GET_SUBSCRIPTION_SOURCE blocked!!!");
    // send(rr);
  }
  @Override
  public void getVoiceRadioTechnology(Message result) {
    RILRequest rr = RILRequest.obtain(RIL_REQUEST_VOICE_RADIO_TECH, result);

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

    // RIL versions below 7 do not support this request
    if (mRilVersion >= 7) send(rr);
    else Log.d(LOG_TAG, "RIL_REQUEST_VOICE_RADIO_TECH blocked!!!");
  }
  // Sends the real RIL request to the modem.
  private void sendPreferedNetworktype(int networkType, Message response) {
    RILRequest rr =
        RILRequest.obtain(RILConstants.RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE, response);

    rr.mp.writeInt(1);
    rr.mp.writeInt(networkType);

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

    send(rr);
  }
  public void dialEmergencyCall(String address, int clirMode, Message result) {
    RILRequest rr;
    Log.v(LOG_TAG, "Emergency dial: " + address);

    rr = RILRequest.obtain(RIL_REQUEST_DIAL_EMERGENCY, result);
    rr.mp.writeString(address + "/");
    rr.mp.writeInt(clirMode);
    rr.mp.writeInt(0);
    rr.mp.writeInt(0);

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

    send(rr);
  }
  @Override
  public void setRadioPower(boolean on, Message result) {
    RILRequest rr = RILRequest.obtain(RIL_REQUEST_RADIO_POWER, result);

    // samsung crap for airplane mode
    if (on) {
      rr.mp.writeInt(1);
      rr.mp.writeInt(1);
    } else {
      rr.mp.writeInt(2);
      rr.mp.writeInt(0);
      rr.mp.writeInt(0);
    }
    if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest));
    send(rr);
  }