UsimDataDownloadCommands.java.broken revision ac009536df32d886e1bab79f07e61200ea6bdcf9
1/* 2 * Copyright (C) 2011 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 17package com.android.internal.telephony.gsm; 18 19import android.content.Context; 20import android.os.AsyncResult; 21import android.os.Message; 22import android.os.SystemClock; 23import android.telephony.Rlog; 24 25import com.android.internal.telephony.BaseCommands; 26import com.android.internal.telephony.UUSInfo; 27import com.android.internal.telephony.uicc.IccIoResult; 28import com.android.internal.telephony.cdma.CdmaSmsBroadcastConfigInfo; 29 30import junit.framework.Assert; 31 32/** 33 * Dummy BaseCommands for UsimDataDownloadTest. Only implements UICC envelope and 34 * SMS acknowledgement commands. 35 */ 36class UsimDataDownloadCommands extends BaseCommands { 37 private static final String TAG = "UsimDataDownloadCommands"; 38 39 private boolean mExpectingAcknowledgeGsmSms; // true if expecting ack GSM SMS 40 private boolean mExpectingAcknowledgeGsmSmsSuccess; // true if expecting ack SMS success 41 private int mExpectingAcknowledgeGsmSmsFailureCause; // expecting ack SMS failure cause 42 private String mExpectingAcknowledgeGsmSmsPdu; // expecting ack SMS PDU 43 44 private boolean mExpectingSendEnvelope; // true to expect a send envelope command 45 private String mExpectingSendEnvelopeContents; // expected string for send envelope 46 private int mExpectingSendEnvelopeResponseSw1; // SW1/SW2 response status 47 private int mExpectingSendEnvelopeResponseSw2; // SW1/SW2 response status 48 private String mExpectingSendEnvelopeResponse; // Response string for Send Envelope 49 50 UsimDataDownloadCommands(Context context) { 51 super(context); 52 } 53 54 /** 55 * Expect a call to acknowledgeLastIncomingGsmSms with success flag and failure cause. 56 * @param success true if expecting success; false if expecting failure 57 * @param cause the failure cause, if success is false 58 */ 59 synchronized void expectAcknowledgeGsmSms(boolean success, int cause) { 60 Assert.assertFalse("expectAcknowledgeGsmSms called twice", mExpectingAcknowledgeGsmSms); 61 mExpectingAcknowledgeGsmSms = true; 62 mExpectingAcknowledgeGsmSmsSuccess = success; 63 mExpectingAcknowledgeGsmSmsFailureCause = cause; 64 } 65 66 /** 67 * Expect a call to acknowledgeLastIncomingGsmSmsWithPdu with success flag and PDU. 68 * @param success true if expecting success; false if expecting failure 69 * @param ackPdu the acknowledgement PDU to expect 70 */ 71 synchronized void expectAcknowledgeGsmSmsWithPdu(boolean success, String ackPdu) { 72 Assert.assertFalse("expectAcknowledgeGsmSms called twice", mExpectingAcknowledgeGsmSms); 73 mExpectingAcknowledgeGsmSms = true; 74 mExpectingAcknowledgeGsmSmsSuccess = success; 75 mExpectingAcknowledgeGsmSmsPdu = ackPdu; 76 } 77 78 /** 79 * Expect a call to sendEnvelopeWithStatus(). 80 * @param contents expected envelope contents to send 81 * @param sw1 simulated SW1 status to return 82 * @param sw2 simulated SW2 status to return 83 * @param response simulated envelope response to return 84 */ 85 synchronized void expectSendEnvelope(String contents, int sw1, int sw2, String response) { 86 Assert.assertFalse("expectSendEnvelope called twice", mExpectingSendEnvelope); 87 mExpectingSendEnvelope = true; 88 mExpectingSendEnvelopeContents = contents; 89 mExpectingSendEnvelopeResponseSw1 = sw1; 90 mExpectingSendEnvelopeResponseSw2 = sw2; 91 mExpectingSendEnvelopeResponse = response; 92 } 93 94 synchronized void assertExpectedMethodsCalled() { 95 long stopTime = SystemClock.elapsedRealtime() + 5000; 96 while ((mExpectingAcknowledgeGsmSms || mExpectingSendEnvelope) 97 && SystemClock.elapsedRealtime() < stopTime) { 98 try { 99 wait(); 100 } catch (InterruptedException ignored) {} 101 } 102 Assert.assertFalse("expecting SMS acknowledge call", mExpectingAcknowledgeGsmSms); 103 Assert.assertFalse("expecting send envelope call", mExpectingSendEnvelope); 104 } 105 106 @Override 107 public synchronized void acknowledgeLastIncomingGsmSms(boolean success, int cause, 108 Message response) { 109 Rlog.d(TAG, "acknowledgeLastIncomingGsmSms: success=" + success + ", cause=" + cause); 110 Assert.assertTrue("unexpected call to acknowledge SMS", mExpectingAcknowledgeGsmSms); 111 Assert.assertEquals(mExpectingAcknowledgeGsmSmsSuccess, success); 112 Assert.assertEquals(mExpectingAcknowledgeGsmSmsFailureCause, cause); 113 mExpectingAcknowledgeGsmSms = false; 114 if (response != null) { 115 AsyncResult.forMessage(response); 116 response.sendToTarget(); 117 } 118 notifyAll(); // wake up assertExpectedMethodsCalled() 119 } 120 121 @Override 122 public synchronized void acknowledgeIncomingGsmSmsWithPdu(boolean success, String ackPdu, 123 Message response) { 124 Rlog.d(TAG, "acknowledgeLastIncomingGsmSmsWithPdu: success=" + success 125 + ", ackPDU= " + ackPdu); 126 Assert.assertTrue("unexpected call to acknowledge SMS", mExpectingAcknowledgeGsmSms); 127 Assert.assertEquals(mExpectingAcknowledgeGsmSmsSuccess, success); 128 Assert.assertEquals(mExpectingAcknowledgeGsmSmsPdu, ackPdu); 129 mExpectingAcknowledgeGsmSms = false; 130 if (response != null) { 131 AsyncResult.forMessage(response); 132 response.sendToTarget(); 133 } 134 notifyAll(); // wake up assertExpectedMethodsCalled() 135 } 136 137 @Override 138 public synchronized void sendEnvelopeWithStatus(String contents, Message response) { 139 // Add spaces between hex bytes for readability 140 StringBuilder builder = new StringBuilder(); 141 for (int i = 0; i < contents.length(); i += 2) { 142 builder.append(contents.charAt(i)).append(contents.charAt(i+1)).append(' '); 143 } 144 Rlog.d(TAG, "sendEnvelopeWithStatus: " + builder.toString()); 145 146 Assert.assertTrue("unexpected call to send envelope", mExpectingSendEnvelope); 147 Assert.assertEquals(mExpectingSendEnvelopeContents, contents); 148 mExpectingSendEnvelope = false; 149 150 IccIoResult result = new IccIoResult(mExpectingSendEnvelopeResponseSw1, 151 mExpectingSendEnvelopeResponseSw2, mExpectingSendEnvelopeResponse); 152 153 if (response != null) { 154 AsyncResult.forMessage(response, result, null); 155 response.sendToTarget(); 156 } 157 notifyAll(); // wake up assertExpectedMethodsCalled() 158 } 159 160 @Override 161 public void setSuppServiceNotifications(boolean enable, Message result) { 162 } 163 164 @Override 165 public void supplyIccPin(String pin, Message result) { 166 } 167 168 @Override 169 public void supplyIccPinForApp(String pin, String aid, Message result) { 170 } 171 172 @Override 173 public void supplyIccPuk(String puk, String newPin, Message result) { 174 } 175 176 @Override 177 public void supplyIccPukForApp(String puk, String newPin, String aid, Message result) { 178 } 179 180 @Override 181 public void supplyIccPin2(String pin2, Message result) { 182 } 183 184 @Override 185 public void supplyIccPin2ForApp(String pin2, String aid, Message result) { 186 } 187 188 @Override 189 public void supplyIccPuk2(String puk2, String newPin2, Message result) { 190 } 191 192 @Override 193 public void supplyIccPuk2ForApp(String puk2, String newPin2, String aid, Message result) { 194 } 195 196 @Override 197 public void changeIccPin(String oldPin, String newPin, Message result) { 198 } 199 200 @Override 201 public void changeIccPinForApp(String oldPin, String newPin, String aidPtr, Message result) { 202 } 203 204 @Override 205 public void changeIccPin2(String oldPin2, String newPin2, Message result) { 206 } 207 208 @Override 209 public void changeIccPin2ForApp(String oldPin2, String newPin2, String aidPtr, Message result) { 210 } 211 212 @Override 213 public void changeBarringPassword(String facility, String oldPwd, String newPwd, 214 Message result) { 215 } 216 217 @Override 218 public void supplyNetworkDepersonalization(String netpin, Message result) { 219 } 220 221 @Override 222 public void getCurrentCalls(Message result) { 223 } 224 225 @Override 226 public void getPDPContextList(Message result) { 227 } 228 229 @Override 230 public void getDataCallList(Message result) { 231 } 232 233 @Override 234 public void dial(String address, int clirMode, Message result) { 235 } 236 237 @Override 238 public void dial(String address, int clirMode, UUSInfo uusInfo, Message result) { 239 } 240 241 @Override 242 public void getIMSI(Message result) { 243 } 244 245 @Override 246 public void getIMEI(Message result) { 247 } 248 249 @Override 250 public void getIMEISV(Message result) { 251 } 252 253 @Override 254 public void hangupConnection(int gsmIndex, Message result) { 255 } 256 257 @Override 258 public void hangupWaitingOrBackground(Message result) { 259 } 260 261 @Override 262 public void hangupForegroundResumeBackground(Message result) { 263 } 264 265 @Override 266 public void switchWaitingOrHoldingAndActive(Message result) { 267 } 268 269 @Override 270 public void conference(Message result) { 271 } 272 273 @Override 274 public void setPreferredVoicePrivacy(boolean enable, Message result) { 275 } 276 277 @Override 278 public void getPreferredVoicePrivacy(Message result) { 279 } 280 281 @Override 282 public void separateConnection(int gsmIndex, Message result) { 283 } 284 285 @Override 286 public void acceptCall(Message result) { 287 } 288 289 @Override 290 public void rejectCall(Message result) { 291 } 292 293 @Override 294 public void explicitCallTransfer(Message result) { 295 } 296 297 @Override 298 public void getLastCallFailCause(Message result) { 299 } 300 301 @Override 302 public void getLastPdpFailCause(Message result) { 303 } 304 305 @Override 306 public void getLastDataCallFailCause(Message result) { 307 } 308 309 @Override 310 public void setMute(boolean enableMute, Message response) { 311 } 312 313 @Override 314 public void getMute(Message response) { 315 } 316 317 @Override 318 public void getSignalStrength(Message response) { 319 } 320 321 @Override 322 public void getVoiceRegistrationState(Message response) { 323 } 324 325 @Override 326 public void getDataRegistrationState(Message response) { 327 } 328 329 @Override 330 public void getOperator(Message response) { 331 } 332 333 @Override 334 public void sendDtmf(char c, Message result) { 335 } 336 337 @Override 338 public void startDtmf(char c, Message result) { 339 } 340 341 @Override 342 public void stopDtmf(Message result) { 343 } 344 345 @Override 346 public void sendBurstDtmf(String dtmfString, int on, int off, Message result) { 347 } 348 349 @Override 350 public void sendSMS(String smscPDU, String pdu, Message response) { 351 } 352 353 @Override 354 public void sendSMSExpectMore(String smscPDU, String pdu, Message response) { 355 } 356 357 @Override 358 public void sendCdmaSms(byte[] pdu, Message response) { 359 } 360 361 @Override 362 public void sendImsGsmSms (String smscPDU, String pdu, 363 int retry, int messageRef, Message response) { 364 } 365 366 @Override 367 public void sendImsCdmaSms(byte[] pdu, int retry, int messageRef, 368 Message response) { 369 } 370 371 @Override 372 public void deleteSmsOnSim(int index, Message response) { 373 } 374 375 @Override 376 public void deleteSmsOnRuim(int index, Message response) { 377 } 378 379 @Override 380 public void writeSmsToSim(int status, String smsc, String pdu, Message response) { 381 } 382 383 @Override 384 public void writeSmsToRuim(int status, String pdu, Message response) { 385 } 386 387 @Override 388 public void setRadioPower(boolean on, Message response) { 389 } 390 391 @Override 392 public void acknowledgeLastIncomingCdmaSms(boolean success, int cause, Message response) { 393 } 394 395 @Override 396 public void iccIO(int command, int fileid, String path, int p1, int p2, int p3, String data, 397 String pin2, Message response) { 398 } 399 400 @Override 401 public void queryCLIP(Message response) { 402 } 403 404 @Override 405 public void getCLIR(Message response) { 406 } 407 408 @Override 409 public void setCLIR(int clirMode, Message response) { 410 } 411 412 @Override 413 public void queryCallWaiting(int serviceClass, Message response) { 414 } 415 416 @Override 417 public void setCallWaiting(boolean enable, int serviceClass, Message response) { 418 } 419 420 @Override 421 public void setCallForward(int action, int cfReason, int serviceClass, String number, 422 int timeSeconds, Message response) { 423 } 424 425 @Override 426 public void queryCallForwardStatus(int cfReason, int serviceClass, String number, 427 Message response) { 428 } 429 430 @Override 431 public void setNetworkSelectionModeAutomatic(Message response) { 432 } 433 434 @Override 435 public void setNetworkSelectionModeManual(String operatorNumeric, Message response) { 436 } 437 438 @Override 439 public void getNetworkSelectionMode(Message response) { 440 } 441 442 @Override 443 public void getAvailableNetworks(Message response) { 444 } 445 446 @Override 447 public void getBasebandVersion(Message response) { 448 } 449 450 @Override 451 public void queryFacilityLock(String facility, String password, int serviceClass, 452 Message response) { 453 } 454 455 @Override 456 public void queryFacilityLockForApp(String facility, String password, int serviceClass, 457 String appId, Message response) { 458 } 459 460 @Override 461 public void setFacilityLock(String facility, boolean lockState, String password, 462 int serviceClass, Message response) { 463 } 464 465 @Override 466 public void setFacilityLockForApp(String facility, boolean lockState, String password, 467 int serviceClass, String appId, Message response) { 468 } 469 470 @Override 471 public void sendUSSD(String ussdString, Message response) { 472 } 473 474 @Override 475 public void cancelPendingUssd(Message response) { 476 } 477 478 @Override 479 public void resetRadio(Message result) { 480 } 481 482 @Override 483 public void setBandMode(int bandMode, Message response) { 484 } 485 486 @Override 487 public void queryAvailableBandMode(Message response) { 488 } 489 490 @Override 491 public void setPreferredNetworkType(int networkType, Message response) { 492 } 493 494 @Override 495 public void getPreferredNetworkType(Message response) { 496 } 497 498 @Override 499 public void getNeighboringCids(Message response) { 500 } 501 502 @Override 503 public void setLocationUpdates(boolean enable, Message response) { 504 } 505 506 @Override 507 public void getSmscAddress(Message result) { 508 } 509 510 @Override 511 public void setSmscAddress(String address, Message result) { 512 } 513 514 @Override 515 public void reportSmsMemoryStatus(boolean available, Message result) { 516 } 517 518 @Override 519 public void reportStkServiceIsRunning(Message result) { 520 } 521 522 @Override 523 public void invokeOemRilRequestRaw(byte[] data, Message response) { 524 } 525 526 @Override 527 public void invokeOemRilRequestStrings(String[] strings, Message response) { 528 } 529 530 @Override 531 public void sendTerminalResponse(String contents, Message response) { 532 } 533 534 @Override 535 public void sendEnvelope(String contents, Message response) { 536 } 537 538 @Override 539 public void handleCallSetupRequestFromSim(boolean accept, Message response) { 540 } 541 542 @Override 543 public void setGsmBroadcastActivation(boolean activate, Message result) { 544 } 545 546 @Override 547 public void setGsmBroadcastConfig(SmsBroadcastConfigInfo[] config, Message response) { 548 } 549 550 @Override 551 public void getGsmBroadcastConfig(Message response) { 552 } 553 554 @Override 555 public void getDeviceIdentity(Message response) { 556 } 557 558 @Override 559 public void getCDMASubscription(Message response) { 560 } 561 562 @Override 563 public void getImsRegistrationState (Message result) { 564 } 565 566 @Override 567 public void sendCDMAFeatureCode(String FeatureCode, Message response) { 568 } 569 570 @Override 571 public void setPhoneType(int phoneType) { 572 } 573 574 @Override 575 public void queryCdmaRoamingPreference(Message response) { 576 } 577 578 @Override 579 public void setCdmaRoamingPreference(int cdmaRoamingType, Message response) { 580 } 581 582 @Override 583 public void setCdmaSubscriptionSource(int cdmaSubscriptionType, Message response) { 584 } 585 586 @Override 587 public void getCdmaSubscriptionSource(Message response) { 588 } 589 590 @Override 591 public void setTTYMode(int ttyMode, Message response) { 592 } 593 594 @Override 595 public void queryTTYMode(Message response) { 596 } 597 598 @Override 599 public void setupDataCall(String radioTechnology, String profile, String apn, String user, 600 String password, String authType, String protocol, Message result) { 601 } 602 603 @Override 604 public void deactivateDataCall(int cid, int reason, Message result) { 605 } 606 607 @Override 608 public void setCdmaBroadcastActivation(boolean activate, Message result) { 609 } 610 611 @Override 612 public void setCdmaBroadcastConfig(CdmaSmsBroadcastConfigInfo[] configs, Message response) { 613 } 614 615 @Override 616 public void getCdmaBroadcastConfig(Message result) { 617 } 618 619 @Override 620 public void exitEmergencyCallbackMode(Message response) { 621 } 622 623 @Override 624 public void getIccCardStatus(Message result) { 625 } 626 627 @Override 628 public void requestIsimAuthentication(String nonce, Message response) { 629 } 630 631 @Override 632 public void requestIccSimAuthentication(String data, Message response) { 633 } 634 635 @Override 636 public void getVoiceRadioTechnology(Message response) { 637 } 638 639 @Override 640 public void getCellInfoList(Message result) { 641 } 642 643 @Override 644 public void setCellInfoListRate(int rateInMillis, Message response) { 645 } 646 647 @Override 648 public void setInitialAttachApn(String apn, String protocol, int authType, String username, 649 String password, Message result) { 650 } 651 652 @Override 653 public void setDataProfile(DataProfile[] dps, Message result) { 654 } 655 656 @Override 657 public void getIMSIForApp(String aid, Message result) { 658 } 659 660 @Override 661 public void iccIOForApp(int command, int fileid, String path, int p1, int p2, int p3, 662 String data, String pin2, String aid, Message response) { 663 } 664 665 @Override 666 public void iccOpenLogicalChannel(String AID, Message response) { 667 } 668 669 @Override 670 public void iccCloseLogicalChannel(int channel, Message response) { 671 } 672 673 @Override 674 public void iccTransmitApduLogicalChannel(int channel, int cla, int instruction, 675 int p1, int p2, int p3, String data, Message response) { 676 } 677 678 @Override 679 public void iccTransmitApduBasicChannel(int cla, int instruction, int p1, int p2, 680 int p3, String data, Message response) { 681 } 682 683 @Override 684 public void nvReadItem(int itemID, Message response) { 685 } 686 687 @Override 688 public void nvWriteItem(int itemID, String itemValue, Message response) { 689 } 690 691 @Override 692 public void nvWriteCdmaPrl(byte[] preferredRoamingList, Message response) { 693 } 694 695 @Override 696 public void nvResetConfig(int resetType, Message response) { 697 } 698} 699