1afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang/* 2afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang * Copyright (C) 2010 The Android Open Source Project 3afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang * 4afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang * Licensed under the Apache License, Version 2.0 (the "License"); 5afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang * you may not use this file except in compliance with the License. 6afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang * You may obtain a copy of the License at 7afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang * 8afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang * http://www.apache.org/licenses/LICENSE-2.0 9afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang * 10afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang * Unless required by applicable law or agreed to in writing, software 11afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang * distributed under the License is distributed on an "AS IS" BASIS, 12afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang * See the License for the specific language governing permissions and 14afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang * limitations under the License. 15afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang */ 16afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang 17afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wangpackage com.android.internal.telephony.mockril; 18afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang 19afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wangimport android.util.Log; 20afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wangimport android.test.InstrumentationTestCase; 21afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang 22afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wangimport java.io.IOException; 23afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wangimport java.nio.ByteBuffer; 24afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang 25afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wangimport com.android.internal.communication.MsgHeader; 26afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wangimport com.android.internal.communication.Msg; 27afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wangimport com.android.internal.telephony.RilChannel; 28afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wangimport com.android.internal.telephony.ril_proto.RilCtrlCmds; 29afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wangimport com.android.internal.telephony.ril_proto.RilCmds; 30afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang 31afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wangimport com.android.frameworks.telephonytests.TelephonyMockRilTestRunner; 32afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wangimport com.google.protobuf.micro.InvalidProtocolBufferMicroException; 33afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang 34afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang// Test suite for test ril 35afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wangpublic class MockRilTest extends InstrumentationTestCase { 36afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang private static final String TAG = "MockRilTest"; 37afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang 38afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang RilChannel mMockRilChannel; 39afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang TelephonyMockRilTestRunner mRunner; 40afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang 41afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang @Override 42afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang protected void setUp() throws Exception { 43afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang super.setUp(); 44afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang mRunner = (TelephonyMockRilTestRunner)getInstrumentation(); 45afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang mMockRilChannel = mRunner.mMockRilChannel; 46afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang } 47afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang 48afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang @Override 49afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang protected void tearDown() throws Exception { 50afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang super.tearDown(); 51afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang } 52afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang 53afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang static void log(String s) { 54afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang Log.v(TAG, s); 55afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang } 56afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang 57afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang /** 58ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang * Test Case 1: Test protobuf serialization and deserialization 59afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang * @throws InvalidProtocolBufferMicroException 60afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang */ 61afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang public void testProtobufSerDes() throws InvalidProtocolBufferMicroException { 62afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang log("testProtobufSerdes E"); 63afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang 64afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang RilCtrlCmds.CtrlRspRadioState rs = new RilCtrlCmds.CtrlRspRadioState(); 65afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang assertTrue(String.format("expected rs.state == 0 was %d", rs.getState()), 66afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang rs.getState() == 0); 67afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang rs.setState(1); 68afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang assertTrue(String.format("expected rs.state == 1 was %d", rs.getState()), 69afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang rs.getState() == 1); 70afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang 71afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang byte[] rs_ser = rs.toByteArray(); 72afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang RilCtrlCmds.CtrlRspRadioState rsNew = RilCtrlCmds.CtrlRspRadioState.parseFrom(rs_ser); 73afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang assertTrue(String.format("expected rsNew.state == 1 was %d", rs.getState()), 74afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang rs.getState() == 1); 75afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang 76afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang log("testProtobufSerdes X"); 77afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang } 78afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang 79afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang /** 80ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang * Test case 2: Test echo command works using writeMsg & readMsg 81afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang */ 82afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang public void testEchoMsg() throws IOException { 83afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang log("testEchoMsg E"); 84afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang 85afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang MsgHeader mh = new MsgHeader(); 86afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang mh.setCmd(0); 87afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang mh.setToken(1); 88afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang mh.setStatus(2); 89afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang ByteBuffer data = ByteBuffer.allocate(3); 90afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang data.put((byte)3); 91afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang data.put((byte)4); 92afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang data.put((byte)5); 93afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang Msg.send(mMockRilChannel, mh, data); 94afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang 95afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang Msg respMsg = Msg.recv(mMockRilChannel); 96afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang assertTrue(String.format("expected mhd.header.cmd == 0 was %d",respMsg.getCmd()), 97afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang respMsg.getCmd() == 0); 98afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang assertTrue(String.format("expected mhd.header.token == 1 was %d",respMsg.getToken()), 99afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang respMsg.getToken() == 1); 100afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang assertTrue(String.format("expected mhd.header.status == 2 was %d", respMsg.getStatus()), 101afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang respMsg.getStatus() == 2); 102afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang assertTrue(String.format("expected mhd.data[0] == 3 was %d", respMsg.getData(0)), 103afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang respMsg.getData(0) == 3); 104afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang assertTrue(String.format("expected mhd.data[1] == 4 was %d", respMsg.getData(1)), 105afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang respMsg.getData(1) == 4); 106afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang assertTrue(String.format("expected mhd.data[2] == 5 was %d", respMsg.getData(2)), 107afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang respMsg.getData(2) == 5); 108afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang 109afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang log("testEchoMsg X"); 110afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang } 111afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang 112afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang /** 113ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang * Test case 3: Test get as 114afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang */ 115afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang public void testGetAs() { 116afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang log("testGetAs E"); 117afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang 118afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang // Use a message header as the protobuf data content 119afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang MsgHeader mh = new MsgHeader(); 120afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang mh.setCmd(12345); 121afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang mh.setToken(9876); 122afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang mh.setStatus(7654); 123afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang mh.setLengthData(4321); 124afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang byte[] data = mh.toByteArray(); 125afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang MsgHeader mhResult = Msg.getAs(MsgHeader.class, data); 126afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang 127afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang assertTrue(String.format("expected cmd == 12345 was %d", mhResult.getCmd()), 128afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang mhResult.getCmd() == 12345); 129afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang assertTrue(String.format("expected token == 9876 was %d", mhResult.getToken()), 130afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang mhResult.getToken() == 9876); 131afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang assertTrue(String.format("expected status == 7654 was %d", mhResult.getStatus()), 132afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang mhResult.getStatus() == 7654); 133afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang assertTrue(String.format("expected lengthData == 4321 was %d", mhResult.getLengthData()), 134afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang mhResult.getLengthData() == 4321); 135afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang 136afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang Msg msg = Msg.obtain(); 137afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang msg.setData(ByteBuffer.wrap(data)); 138afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang 139afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang mhResult = msg.getDataAs(MsgHeader.class); 140afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang 141afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang assertTrue(String.format("expected cmd == 12345 was %d", mhResult.getCmd()), 142afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang mhResult.getCmd() == 12345); 143afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang assertTrue(String.format("expected token == 9876 was %d", mhResult.getToken()), 144afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang mhResult.getToken() == 9876); 145afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang assertTrue(String.format("expected status == 7654 was %d", mhResult.getStatus()), 146afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang mhResult.getStatus() == 7654); 147afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang assertTrue(String.format("expected lengthData == 4321 was %d", mhResult.getLengthData()), 148afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang mhResult.getLengthData() == 4321); 149afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang 150afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang log("testGetAs X"); 151afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang } 152afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang 153ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang /** 154ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang * Test case 3: test get radio state 155ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang */ 156afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang public void testGetRadioState() throws IOException { 157afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang log("testGetRadioState E"); 158afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang 159afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang Msg.send(mMockRilChannel, 1, 9876, 0, null); 160afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang 161afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang Msg resp = Msg.recv(mMockRilChannel); 162afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang //resp.printHeader("testGetRadioState"); 163afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang 164afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang assertTrue(String.format("expected cmd == 1 was %d", resp.getCmd()), 165afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang resp.getCmd() == 1); 166afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang assertTrue(String.format("expected token == 9876 was %d", resp.getToken()), 167afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang resp.getToken() == 9876); 168afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang assertTrue(String.format("expected status == 0 was %d", resp.getStatus()), 169afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang resp.getStatus() == 0); 170afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang 171afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang RilCtrlCmds.CtrlRspRadioState rsp = resp.getDataAs(RilCtrlCmds.CtrlRspRadioState.class); 172afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang 173afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang int state = rsp.getState(); 174afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang log("testGetRadioState state=" + state); 175afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang assertTrue(String.format("expected RadioState >= 0 && RadioState <= 9 was %d", state), 176afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang ((state >= 0) && (state <= 9))); 177afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang 178afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang log("testGetRadioState X"); 179afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang } 180afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang 181ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang /** 182ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang * Test case 5: test set radio state 183ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang */ 184afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang public void testSetRadioState() throws IOException { 185afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang log("testSetRadioState E"); 186afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang 187afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang RilCtrlCmds.CtrlReqRadioState cmdrs = new RilCtrlCmds.CtrlReqRadioState(); 188afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang assertEquals(0, cmdrs.getState()); 189afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang 190afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang cmdrs.setState(RilCmds.RADIOSTATE_SIM_NOT_READY); 191afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang assertEquals(2, cmdrs.getState()); 192afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang 193afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang Msg.send(mMockRilChannel, RilCtrlCmds.CTRL_CMD_SET_RADIO_STATE, 0, 0, cmdrs); 194afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang 195afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang Msg resp = Msg.recv(mMockRilChannel); 196ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang log("get response status :" + resp.getStatus()); 197ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang log("get response for command: " + resp.getCmd()); 198ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang log("get command token: " + resp.getToken()); 199afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang 200afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang RilCtrlCmds.CtrlRspRadioState rsp = resp.getDataAs(RilCtrlCmds.CtrlRspRadioState.class); 201afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang 202afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang int state = rsp.getState(); 203afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang log("get response for testSetRadioState: " + state); 204afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang assertTrue(RilCmds.RADIOSTATE_SIM_NOT_READY == state); 205afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang } 206ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang 207ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang /** 208ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang * Test case 6: test start incoming call and hangup it. 209ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang */ 210ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang public void testStartIncomingCallAndHangup() throws IOException { 211ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang log("testStartIncomingCallAndHangup"); 212ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang RilCtrlCmds.CtrlReqSetMTCall cmd = new RilCtrlCmds.CtrlReqSetMTCall(); 213ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang String incomingCall = "6502889108"; 214ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang // set the MT call 215ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang cmd.setPhoneNumber(incomingCall); 216ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang Msg.send(mMockRilChannel, RilCtrlCmds.CTRL_CMD_SET_MT_CALL, 0, 0, cmd); 217ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang // get response 218ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang Msg resp = Msg.recv(mMockRilChannel); 219ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang log("Get response status: " + resp.getStatus()); 220ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang assertTrue("The ril is not in a proper state to set MT calls.", 221ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang resp.getStatus() == RilCtrlCmds.CTRL_STATUS_OK); 222ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang 223ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang // allow the incoming call alerting for some time 224ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang try { 225ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang Thread.sleep(5000); 226ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang } catch (InterruptedException e) {} 227ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang 228ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang // we are playing a trick to assume the current is 1 229ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang RilCtrlCmds.CtrlHangupConnRemote hangupCmd = new RilCtrlCmds.CtrlHangupConnRemote(); 230ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang hangupCmd.setConnectionId(1); 231ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang hangupCmd.setCallFailCause(16); // normal hangup 232ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang Msg.send(mMockRilChannel, RilCtrlCmds.CTRL_CMD_HANGUP_CONN_REMOTE, 0, 0, hangupCmd); 233ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang 234ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang // get response 235ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang resp = Msg.recv(mMockRilChannel); 236ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang log("Get response for hangup connection: " + resp.getStatus()); 237ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang assertTrue("CTRL_CMD_HANGUP_CONN_REMOTE failed", 238ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang resp.getStatus() == RilCtrlCmds.CTRL_STATUS_OK); 239ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang } 240ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang 241ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang /** 242ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang * Test case 7: test set call transition flag 243ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang */ 244ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang public void testSetCallTransitionFlag() throws IOException { 245ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang log("testSetCallTransitionFlag"); 246ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang // Set flag to true: 247ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang RilCtrlCmds.CtrlSetCallTransitionFlag cmd = new RilCtrlCmds.CtrlSetCallTransitionFlag(); 248ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang cmd.setFlag(true); 249ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang Msg.send(mMockRilChannel, RilCtrlCmds.CTRL_CMD_SET_CALL_TRANSITION_FLAG, 0, 0, cmd); 250ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang 251ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang Msg resp = Msg.recv(mMockRilChannel); 252ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang log("Get response status: " + resp.getStatus()); 253ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang assertTrue("Set call transition flag failed", 254ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang resp.getStatus() == RilCtrlCmds.CTRL_STATUS_OK); 255ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang 256ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang // add a dialing call 257ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang RilCtrlCmds.CtrlReqAddDialingCall cmdDialCall = new RilCtrlCmds.CtrlReqAddDialingCall(); 258ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang String phoneNumber = "5102345678"; 259ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang cmdDialCall.setPhoneNumber(phoneNumber); 260ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang Msg.send(mMockRilChannel, RilCtrlCmds.CTRL_CMD_ADD_DIALING_CALL, 0, 0, cmdDialCall); 261ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang resp = Msg.recv(mMockRilChannel); 262ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang log("Get response status for adding a dialing call: " + resp.getStatus()); 263ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang assertTrue("add dialing call failed", 264ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang resp.getStatus() == RilCtrlCmds.CTRL_STATUS_OK); 265ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang try { 266ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang Thread.sleep(5000); 267ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang } catch (InterruptedException e) {} 268ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang 269ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang // send command to force call state change 270ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang Msg.send(mMockRilChannel, RilCtrlCmds.CTRL_CMD_SET_CALL_ALERT, 0, 0, null); 271ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang resp = Msg.recv(mMockRilChannel); 272ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang log("Get response status: " + resp.getStatus()); 273ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang assertTrue("Set call alert failed", 274ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang resp.getStatus() == RilCtrlCmds.CTRL_STATUS_OK); 275ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang 276ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang try { 277ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang Thread.sleep(2000); 278ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang } catch (InterruptedException e) {} 279ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang 280ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang // send command to force call state change 281ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang Msg.send(mMockRilChannel, RilCtrlCmds.CTRL_CMD_SET_CALL_ACTIVE, 0, 0, null); 282ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang resp = Msg.recv(mMockRilChannel); 283ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang log("Get response status: " + resp.getStatus()); 284ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang assertTrue("Set call active failed", 285ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang resp.getStatus() == RilCtrlCmds.CTRL_STATUS_OK); 286ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang 287ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang // hangup the active all remotely 288ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang RilCtrlCmds.CtrlHangupConnRemote hangupCmd = new RilCtrlCmds.CtrlHangupConnRemote(); 289ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang hangupCmd.setConnectionId(1); 290ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang hangupCmd.setCallFailCause(16); // normal hangup 291ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang Msg.send(mMockRilChannel, RilCtrlCmds.CTRL_CMD_HANGUP_CONN_REMOTE, 0, 0, hangupCmd); 292ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang resp = Msg.recv(mMockRilChannel); 293ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang log("Get response for hangup connection: " + resp.getStatus()); 294ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang assertTrue("CTRL_CMD_HANGUP_CONN_REMOTE failed", 295ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang resp.getStatus() == RilCtrlCmds.CTRL_STATUS_OK); 296ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang 297ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang // set the flag to false 298ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang cmd.setFlag(false); 299ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang Msg.send(mMockRilChannel, RilCtrlCmds.CTRL_CMD_SET_CALL_TRANSITION_FLAG, 0, 0, cmd); 300ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang resp = Msg.recv(mMockRilChannel); 301ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang assertTrue("Set call transition flag failed", 302ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang resp.getStatus() == RilCtrlCmds.CTRL_STATUS_OK); 303ffcb68719bca6816fc0f39135b41b4c7320042d5Xia Wang } 304afeeaf351a6d48ff218b31775de9b73c8848eba5Xia Wang} 305