1 /* 2 * Copyright (C) 2013 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.internal.telephony.imsphone; 18 19 import android.content.Context; 20 import android.net.KeepalivePacketData; 21 import android.net.LinkProperties; 22 import android.os.Handler; 23 import android.os.Message; 24 import android.telephony.ImsiEncryptionInfo; 25 import android.telephony.NetworkScanRequest; 26 import android.telephony.SignalThresholdInfo; 27 import android.telephony.data.DataProfile; 28 import android.telephony.emergency.EmergencyNumber; 29 30 import com.android.internal.telephony.BaseCommands; 31 import com.android.internal.telephony.CommandsInterface; 32 import com.android.internal.telephony.RadioCapability; 33 import com.android.internal.telephony.UUSInfo; 34 import com.android.internal.telephony.uicc.IccCardApplicationStatus.PersoSubState; 35 import com.android.internal.telephony.cdma.CdmaSmsBroadcastConfigInfo; 36 import com.android.internal.telephony.gsm.SmsBroadcastConfigInfo; 37 38 /** 39 * Volte doesn't need CommandsInterface. The class does nothing but made to work 40 * with Phone's constructor. 41 */ 42 class ImsPhoneCommandInterface extends BaseCommands implements CommandsInterface { ImsPhoneCommandInterface(Context context)43 ImsPhoneCommandInterface(Context context) { 44 super(context); 45 } 46 setOnNITZTime(Handler h, int what, Object obj)47 @Override public void setOnNITZTime(Handler h, int what, Object obj) { 48 } 49 50 @Override getIccCardStatus(Message result)51 public void getIccCardStatus(Message result) { 52 } 53 54 @Override getIccSlotsStatus(Message result)55 public void getIccSlotsStatus(Message result) { 56 } 57 58 @Override setLogicalToPhysicalSlotMapping(int[] physicalSlots, Message result)59 public void setLogicalToPhysicalSlotMapping(int[] physicalSlots, Message result) { 60 } 61 62 @Override supplyIccPin(String pin, Message result)63 public void supplyIccPin(String pin, Message result) { 64 } 65 66 @Override supplyIccPuk(String puk, String newPin, Message result)67 public void supplyIccPuk(String puk, String newPin, Message result) { 68 } 69 70 @Override supplyIccPin2(String pin, Message result)71 public void supplyIccPin2(String pin, Message result) { 72 } 73 74 @Override supplyIccPuk2(String puk, String newPin2, Message result)75 public void supplyIccPuk2(String puk, String newPin2, Message result) { 76 } 77 78 @Override changeIccPin(String oldPin, String newPin, Message result)79 public void changeIccPin(String oldPin, String newPin, Message result) { 80 } 81 82 @Override changeIccPin2(String oldPin2, String newPin2, Message result)83 public void changeIccPin2(String oldPin2, String newPin2, Message result) { 84 } 85 86 @Override changeBarringPassword(String facility, String oldPwd, String newPwd, Message result)87 public void changeBarringPassword(String facility, String oldPwd, 88 String newPwd, Message result) { 89 } 90 91 @Override supplyNetworkDepersonalization(String netpin, Message result)92 public void supplyNetworkDepersonalization(String netpin, Message result) { 93 } 94 95 @Override supplySimDepersonalization(PersoSubState persoType, String controlKey, Message result)96 public void supplySimDepersonalization(PersoSubState persoType, 97 String controlKey, Message result) { 98 } 99 100 @Override getCurrentCalls(Message result)101 public void getCurrentCalls(Message result) { 102 } 103 104 @Override getPDPContextList(Message result)105 @Deprecated public void getPDPContextList(Message result) { 106 } 107 108 @Override getDataCallList(Message result)109 public void getDataCallList(Message result) { 110 } 111 112 @Override dial(String address, boolean isEmergencyCall, EmergencyNumber emergencyNumberInfo, boolean hasKnownUserIntentEmergency, int clirMode, Message result)113 public void dial(String address, boolean isEmergencyCall, EmergencyNumber emergencyNumberInfo, 114 boolean hasKnownUserIntentEmergency, int clirMode, Message result) { 115 } 116 117 @Override dial(String address, boolean isEmergencyCall, EmergencyNumber emergencyNumberInfo, boolean hasKnownUserIntentEmergency, int clirMode, UUSInfo uusInfo, Message result)118 public void dial(String address, boolean isEmergencyCall, EmergencyNumber emergencyNumberInfo, 119 boolean hasKnownUserIntentEmergency, int clirMode, UUSInfo uusInfo, 120 Message result) { 121 } 122 123 @Override getIMSI(Message result)124 public void getIMSI(Message result) { 125 } 126 127 @Override getIMSIForApp(String aid, Message result)128 public void getIMSIForApp(String aid, Message result) { 129 } 130 131 @Override getIMEI(Message result)132 public void getIMEI(Message result) { 133 } 134 135 @Override getIMEISV(Message result)136 public void getIMEISV(Message result) { 137 } 138 139 @Override hangupConnection(int gsmIndex, Message result)140 public void hangupConnection (int gsmIndex, Message result) { 141 } 142 143 @Override hangupWaitingOrBackground(Message result)144 public void hangupWaitingOrBackground (Message result) { 145 } 146 147 @Override hangupForegroundResumeBackground(Message result)148 public void hangupForegroundResumeBackground (Message result) { 149 } 150 151 @Override switchWaitingOrHoldingAndActive(Message result)152 public void switchWaitingOrHoldingAndActive (Message result) { 153 } 154 155 @Override conference(Message result)156 public void conference (Message result) { 157 } 158 159 @Override setPreferredVoicePrivacy(boolean enable, Message result)160 public void setPreferredVoicePrivacy(boolean enable, Message result) { 161 } 162 163 @Override getPreferredVoicePrivacy(Message result)164 public void getPreferredVoicePrivacy(Message result) { 165 } 166 167 @Override separateConnection(int gsmIndex, Message result)168 public void separateConnection (int gsmIndex, Message result) { 169 } 170 171 @Override acceptCall(Message result)172 public void acceptCall (Message result) { 173 } 174 175 @Override rejectCall(Message result)176 public void rejectCall (Message result) { 177 } 178 179 @Override explicitCallTransfer(Message result)180 public void explicitCallTransfer (Message result) { 181 } 182 183 @Override getLastCallFailCause(Message result)184 public void getLastCallFailCause (Message result) { 185 } 186 187 @Deprecated 188 @Override getLastPdpFailCause(Message result)189 public void getLastPdpFailCause (Message result) { 190 } 191 192 @Override getLastDataCallFailCause(Message result)193 public void getLastDataCallFailCause (Message result) { 194 } 195 196 @Override setMute(boolean enableMute, Message response)197 public void setMute (boolean enableMute, Message response) { 198 } 199 200 @Override getMute(Message response)201 public void getMute (Message response) { 202 } 203 204 @Override getSignalStrength(Message result)205 public void getSignalStrength (Message result) { 206 } 207 208 @Override getVoiceRegistrationState(Message result)209 public void getVoiceRegistrationState (Message result) { 210 } 211 212 @Override getDataRegistrationState(Message result)213 public void getDataRegistrationState (Message result) { 214 } 215 216 @Override getOperator(Message result)217 public void getOperator(Message result) { 218 } 219 220 @Override sendDtmf(char c, Message result)221 public void sendDtmf(char c, Message result) { 222 } 223 224 @Override startDtmf(char c, Message result)225 public void startDtmf(char c, Message result) { 226 } 227 228 @Override stopDtmf(Message result)229 public void stopDtmf(Message result) { 230 } 231 232 @Override sendBurstDtmf(String dtmfString, int on, int off, Message result)233 public void sendBurstDtmf(String dtmfString, int on, int off, 234 Message result) { 235 } 236 237 @Override sendSMS(String smscPDU, String pdu, Message result)238 public void sendSMS (String smscPDU, String pdu, Message result) { 239 } 240 241 @Override sendSMSExpectMore(String smscPDU, String pdu, Message result)242 public void sendSMSExpectMore (String smscPDU, String pdu, Message result) { 243 } 244 245 @Override sendCdmaSms(byte[] pdu, Message result)246 public void sendCdmaSms(byte[] pdu, Message result) { 247 } 248 249 @Override sendCdmaSMSExpectMore(byte[] pdu, Message result)250 public void sendCdmaSMSExpectMore(byte[] pdu, Message result) { 251 } 252 253 @Override sendImsGsmSms(String smscPDU, String pdu, int retry, int messageRef, Message response)254 public void sendImsGsmSms (String smscPDU, String pdu, 255 int retry, int messageRef, Message response) { 256 } 257 258 @Override sendImsCdmaSms(byte[] pdu, int retry, int messageRef, Message response)259 public void sendImsCdmaSms(byte[] pdu, int retry, int messageRef, 260 Message response) { 261 } 262 263 @Override getImsRegistrationState(Message result)264 public void getImsRegistrationState (Message result) { 265 } 266 267 @Override deleteSmsOnSim(int index, Message response)268 public void deleteSmsOnSim(int index, Message response) { 269 } 270 271 @Override deleteSmsOnRuim(int index, Message response)272 public void deleteSmsOnRuim(int index, Message response) { 273 } 274 275 @Override writeSmsToSim(int status, String smsc, String pdu, Message response)276 public void writeSmsToSim(int status, String smsc, String pdu, Message response) { 277 } 278 279 @Override writeSmsToRuim(int status, byte[] pdu, Message response)280 public void writeSmsToRuim(int status, byte[] pdu, Message response) { 281 } 282 283 @Override setupDataCall(int accessNetworkType, DataProfile dataProfile, boolean isRoaming, boolean allowRoaming, int reason, LinkProperties linkProperties, Message result)284 public void setupDataCall(int accessNetworkType, DataProfile dataProfile, boolean isRoaming, 285 boolean allowRoaming, int reason, LinkProperties linkProperties, 286 Message result) { 287 } 288 289 @Override deactivateDataCall(int cid, int reason, Message result)290 public void deactivateDataCall(int cid, int reason, Message result) { 291 } 292 293 @Override setRadioPower(boolean on, Message result)294 public void setRadioPower(boolean on, Message result) { 295 } 296 297 @Override setSuppServiceNotifications(boolean enable, Message result)298 public void setSuppServiceNotifications(boolean enable, Message result) { 299 } 300 301 @Override acknowledgeLastIncomingGsmSms(boolean success, int cause, Message result)302 public void acknowledgeLastIncomingGsmSms(boolean success, int cause, 303 Message result) { 304 } 305 306 @Override acknowledgeLastIncomingCdmaSms(boolean success, int cause, Message result)307 public void acknowledgeLastIncomingCdmaSms(boolean success, int cause, 308 Message result) { 309 } 310 311 @Override acknowledgeIncomingGsmSmsWithPdu(boolean success, String ackPdu, Message result)312 public void acknowledgeIncomingGsmSmsWithPdu(boolean success, String ackPdu, 313 Message result) { 314 } 315 316 @Override iccIO(int command, int fileid, String path, int p1, int p2, int p3, String data, String pin2, Message result)317 public void iccIO (int command, int fileid, String path, int p1, int p2, 318 int p3, String data, String pin2, Message result) { 319 } 320 @Override iccIOForApp(int command, int fileid, String path, int p1, int p2, int p3, String data, String pin2, String aid, Message result)321 public void iccIOForApp (int command, int fileid, String path, int p1, int p2, 322 int p3, String data, String pin2, String aid, Message result) { 323 } 324 325 @Override getCLIR(Message result)326 public void getCLIR(Message result) { 327 } 328 329 @Override setCLIR(int clirMode, Message result)330 public void setCLIR(int clirMode, Message result) { 331 } 332 333 @Override queryCallWaiting(int serviceClass, Message response)334 public void queryCallWaiting(int serviceClass, Message response) { 335 } 336 337 @Override setCallWaiting(boolean enable, int serviceClass, Message response)338 public void setCallWaiting(boolean enable, int serviceClass, 339 Message response) { 340 } 341 342 @Override setNetworkSelectionModeAutomatic(Message response)343 public void setNetworkSelectionModeAutomatic(Message response) { 344 } 345 346 @Override setNetworkSelectionModeManual(String operatorNumeric, int ran, Message response)347 public void setNetworkSelectionModeManual(String operatorNumeric, int ran, Message response) { 348 } 349 350 @Override getNetworkSelectionMode(Message response)351 public void getNetworkSelectionMode(Message response) { 352 } 353 354 @Override getAvailableNetworks(Message response)355 public void getAvailableNetworks(Message response) { 356 } 357 358 @Override startNetworkScan(NetworkScanRequest nsr, Message response)359 public void startNetworkScan(NetworkScanRequest nsr, Message response) { 360 } 361 362 @Override stopNetworkScan(Message response)363 public void stopNetworkScan(Message response) { 364 } 365 366 @Override setCallForward(int action, int cfReason, int serviceClass, String number, int timeSeconds, Message response)367 public void setCallForward(int action, int cfReason, int serviceClass, 368 String number, int timeSeconds, Message response) { 369 } 370 371 @Override queryCallForwardStatus(int cfReason, int serviceClass, String number, Message response)372 public void queryCallForwardStatus(int cfReason, int serviceClass, 373 String number, Message response) { 374 } 375 376 @Override queryCLIP(Message response)377 public void queryCLIP(Message response) { 378 } 379 380 @Override getBasebandVersion(Message response)381 public void getBasebandVersion (Message response) { 382 } 383 384 @Override queryFacilityLock(String facility, String password, int serviceClass, Message response)385 public void queryFacilityLock(String facility, String password, 386 int serviceClass, Message response) { 387 } 388 389 @Override queryFacilityLockForApp(String facility, String password, int serviceClass, String appId, Message response)390 public void queryFacilityLockForApp(String facility, String password, 391 int serviceClass, String appId, Message response) { 392 } 393 394 @Override setFacilityLock(String facility, boolean lockState, String password, int serviceClass, Message response)395 public void setFacilityLock(String facility, boolean lockState, 396 String password, int serviceClass, Message response) { 397 } 398 399 @Override setFacilityLockForApp(String facility, boolean lockState, String password, int serviceClass, String appId, Message response)400 public void setFacilityLockForApp(String facility, boolean lockState, 401 String password, int serviceClass, String appId, Message response) { 402 } 403 404 @Override sendUSSD(String ussdString, Message response)405 public void sendUSSD (String ussdString, Message response) { 406 } 407 408 @Override cancelPendingUssd(Message response)409 public void cancelPendingUssd (Message response) { 410 } 411 412 @Override resetRadio(Message result)413 public void resetRadio(Message result) { 414 } 415 416 @Override invokeOemRilRequestRaw(byte[] data, Message response)417 public void invokeOemRilRequestRaw(byte[] data, Message response) { 418 } 419 420 @Override invokeOemRilRequestStrings(String[] strings, Message response)421 public void invokeOemRilRequestStrings(String[] strings, Message response) { 422 } 423 424 @Override setBandMode(int bandMode, Message response)425 public void setBandMode (int bandMode, Message response) { 426 } 427 428 @Override queryAvailableBandMode(Message response)429 public void queryAvailableBandMode (Message response) { 430 } 431 432 @Override sendTerminalResponse(String contents, Message response)433 public void sendTerminalResponse(String contents, Message response) { 434 } 435 436 @Override sendEnvelope(String contents, Message response)437 public void sendEnvelope(String contents, Message response) { 438 } 439 440 @Override sendEnvelopeWithStatus(String contents, Message response)441 public void sendEnvelopeWithStatus(String contents, Message response) { 442 } 443 444 @Override handleCallSetupRequestFromSim( boolean accept, Message response)445 public void handleCallSetupRequestFromSim( 446 boolean accept, Message response) { 447 } 448 449 @Override setPreferredNetworkType(int networkType , Message response)450 public void setPreferredNetworkType(int networkType , Message response) { 451 } 452 453 @Override getPreferredNetworkType(Message response)454 public void getPreferredNetworkType(Message response) { 455 } 456 457 @Override setLocationUpdates(boolean enable, Message response)458 public void setLocationUpdates(boolean enable, Message response) { 459 } 460 461 @Override getSmscAddress(Message result)462 public void getSmscAddress(Message result) { 463 } 464 465 @Override setSmscAddress(String address, Message result)466 public void setSmscAddress(String address, Message result) { 467 } 468 469 @Override reportSmsMemoryStatus(boolean available, Message result)470 public void reportSmsMemoryStatus(boolean available, Message result) { 471 } 472 473 @Override reportStkServiceIsRunning(Message result)474 public void reportStkServiceIsRunning(Message result) { 475 } 476 477 @Override getCdmaSubscriptionSource(Message response)478 public void getCdmaSubscriptionSource(Message response) { 479 } 480 481 @Override getGsmBroadcastConfig(Message response)482 public void getGsmBroadcastConfig(Message response) { 483 } 484 485 @Override setGsmBroadcastConfig(SmsBroadcastConfigInfo[] config, Message response)486 public void setGsmBroadcastConfig(SmsBroadcastConfigInfo[] config, Message response) { 487 } 488 489 @Override setGsmBroadcastActivation(boolean activate, Message response)490 public void setGsmBroadcastActivation(boolean activate, Message response) { 491 } 492 493 // ***** Methods for CDMA support 494 @Override getDeviceIdentity(Message response)495 public void getDeviceIdentity(Message response) { 496 } 497 498 @Override getCDMASubscription(Message response)499 public void getCDMASubscription(Message response) { 500 } 501 502 @Override setPhoneType(int phoneType)503 public void setPhoneType(int phoneType) { //Set by CDMAPhone and GSMPhone constructor 504 } 505 506 @Override queryCdmaRoamingPreference(Message response)507 public void queryCdmaRoamingPreference(Message response) { 508 } 509 510 @Override setCdmaRoamingPreference(int cdmaRoamingType, Message response)511 public void setCdmaRoamingPreference(int cdmaRoamingType, Message response) { 512 } 513 514 @Override setCdmaSubscriptionSource(int cdmaSubscription , Message response)515 public void setCdmaSubscriptionSource(int cdmaSubscription , Message response) { 516 } 517 518 @Override queryTTYMode(Message response)519 public void queryTTYMode(Message response) { 520 } 521 522 @Override setTTYMode(int ttyMode, Message response)523 public void setTTYMode(int ttyMode, Message response) { 524 } 525 526 @Override sendCDMAFeatureCode(String FeatureCode, Message response)527 public void sendCDMAFeatureCode(String FeatureCode, Message response) { 528 } 529 530 @Override getCdmaBroadcastConfig(Message response)531 public void getCdmaBroadcastConfig(Message response) { 532 } 533 534 @Override setCdmaBroadcastConfig(CdmaSmsBroadcastConfigInfo[] configs, Message response)535 public void setCdmaBroadcastConfig(CdmaSmsBroadcastConfigInfo[] configs, Message response) { 536 } 537 538 @Override setCdmaBroadcastActivation(boolean activate, Message response)539 public void setCdmaBroadcastActivation(boolean activate, Message response) { 540 } 541 542 @Override exitEmergencyCallbackMode(Message response)543 public void exitEmergencyCallbackMode(Message response) { 544 } 545 546 @Override supplyIccPinForApp(String pin, String aid, Message response)547 public void supplyIccPinForApp(String pin, String aid, Message response) { 548 } 549 550 @Override supplyIccPukForApp(String puk, String newPin, String aid, Message response)551 public void supplyIccPukForApp(String puk, String newPin, String aid, Message response) { 552 } 553 554 @Override supplyIccPin2ForApp(String pin2, String aid, Message response)555 public void supplyIccPin2ForApp(String pin2, String aid, Message response) { 556 } 557 558 @Override supplyIccPuk2ForApp(String puk2, String newPin2, String aid, Message response)559 public void supplyIccPuk2ForApp(String puk2, String newPin2, String aid, Message response) { 560 } 561 562 @Override changeIccPinForApp(String oldPin, String newPin, String aidPtr, Message response)563 public void changeIccPinForApp(String oldPin, String newPin, String aidPtr, Message response) { 564 } 565 566 @Override changeIccPin2ForApp(String oldPin2, String newPin2, String aidPtr, Message response)567 public void changeIccPin2ForApp(String oldPin2, String newPin2, String aidPtr, 568 Message response) { 569 } 570 571 @Override requestIccSimAuthentication(int authContext, String data, String aid, Message response)572 public void requestIccSimAuthentication(int authContext, String data, String aid, Message response) { 573 } 574 575 @Override getVoiceRadioTechnology(Message result)576 public void getVoiceRadioTechnology(Message result) { 577 } 578 579 @Override setInitialAttachApn(DataProfile dataProfile, boolean isRoaming, Message result)580 public void setInitialAttachApn(DataProfile dataProfile, boolean isRoaming, Message result) { 581 } 582 583 @Override setDataProfile(DataProfile[] dps, boolean isRoaming, Message result)584 public void setDataProfile(DataProfile[] dps, boolean isRoaming, Message result) { 585 } 586 587 @Override iccOpenLogicalChannel(String AID, int p2, Message response)588 public void iccOpenLogicalChannel(String AID, int p2, Message response) {} 589 590 @Override iccCloseLogicalChannel(int channel, Message response)591 public void iccCloseLogicalChannel(int channel, Message response) {} 592 593 @Override iccTransmitApduLogicalChannel(int channel, int cla, int instruction, int p1, int p2, int p3, String data, Message response)594 public void iccTransmitApduLogicalChannel(int channel, int cla, int instruction, 595 int p1, int p2, int p3, String data, 596 Message response) {} 597 @Override iccTransmitApduBasicChannel(int cla, int instruction, int p1, int p2, int p3, String data, Message response)598 public void iccTransmitApduBasicChannel(int cla, int instruction, int p1, int p2, 599 int p3, String data, Message response) {} 600 601 @Override nvWriteCdmaPrl(byte[] preferredRoamingList, Message response)602 public void nvWriteCdmaPrl(byte[] preferredRoamingList, Message response) {} 603 604 @Override nvResetConfig(int resetType, Message response)605 public void nvResetConfig(int resetType, Message response) {} 606 607 @Override getHardwareConfig(Message result)608 public void getHardwareConfig(Message result) {} 609 610 @Override requestShutdown(Message result)611 public void requestShutdown(Message result) { 612 } 613 614 @Override setRadioCapability(RadioCapability rc, Message response)615 public void setRadioCapability(RadioCapability rc, Message response) { 616 } 617 618 @Override getRadioCapability(Message response)619 public void getRadioCapability(Message response) { 620 } 621 622 @Override startLceService(int reportIntervalMs, boolean pullMode, Message result)623 public void startLceService(int reportIntervalMs, boolean pullMode, Message result) { 624 } 625 626 @Override stopLceService(Message result)627 public void stopLceService(Message result) { 628 } 629 630 @Override pullLceData(Message result)631 public void pullLceData(Message result) { 632 } 633 634 @Override setCarrierInfoForImsiEncryption(ImsiEncryptionInfo imsiEncryptionInfo, Message result)635 public void setCarrierInfoForImsiEncryption(ImsiEncryptionInfo imsiEncryptionInfo, 636 Message result) { 637 } 638 639 @Override sendDeviceState(int stateType, boolean state, Message result)640 public void sendDeviceState(int stateType, boolean state, Message result) { 641 } 642 643 @Override setUnsolResponseFilter(int filter, Message result)644 public void setUnsolResponseFilter(int filter, Message result){ 645 } 646 647 @Override setSignalStrengthReportingCriteria( SignalThresholdInfo signalThresholdInfo, int ran, Message result)648 public void setSignalStrengthReportingCriteria( 649 SignalThresholdInfo signalThresholdInfo, int ran, Message result) { 650 } 651 652 @Override setLinkCapacityReportingCriteria(int hysteresisMs, int hysteresisDlKbps, int hysteresisUlKbps, int[] thresholdsDlKbps, int[] thresholdsUlKbps, int ran, Message result)653 public void setLinkCapacityReportingCriteria(int hysteresisMs, int hysteresisDlKbps, 654 int hysteresisUlKbps, int[] thresholdsDlKbps, int[] thresholdsUlKbps, int ran, 655 Message result) { 656 } 657 658 @Override startNattKeepalive( int contextId, KeepalivePacketData packetData, int intervalMillis, Message result)659 public void startNattKeepalive( 660 int contextId, KeepalivePacketData packetData, int intervalMillis, Message result) { 661 } 662 663 @Override stopNattKeepalive(int sessionHandle, Message result)664 public void stopNattKeepalive(int sessionHandle, Message result) { 665 } 666 } 667