10825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/* 20825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Copyright (C) 2010 The Android Open Source Project 30825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 40825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Licensed under the Apache License, Version 2.0 (the "License"); 50825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * you may not use this file except in compliance with the License. 60825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * You may obtain a copy of the License at 70825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 80825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * http://www.apache.org/licenses/LICENSE-2.0 90825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Unless required by applicable law or agreed to in writing, software 110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * distributed under the License is distributed on an "AS IS" BASIS, 120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * See the License for the specific language governing permissions and 140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * limitations under the License. 150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 170825495a331bb44df395a0cdb79fab85e68db5d5Wink Savillepackage com.android.internal.telephony.mockril; 180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 190825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.util.Log; 200825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.test.InstrumentationTestCase; 210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 220825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.io.IOException; 230825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport java.nio.ByteBuffer; 240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 250825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.communication.MsgHeader; 260825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.communication.Msg; 270825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.RilChannel; 280825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.ril_proto.RilCtrlCmds; 290825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.ril_proto.RilCmds; 300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 310825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.frameworks.telephonytests.TelephonyMockRilTestRunner; 320825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.google.protobuf.micro.InvalidProtocolBufferMicroException; 330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville// Test suite for test ril 350825495a331bb44df395a0cdb79fab85e68db5d5Wink Savillepublic class MockRilTest extends InstrumentationTestCase { 360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private static final String TAG = "MockRilTest"; 370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RilChannel mMockRilChannel; 390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville TelephonyMockRilTestRunner mRunner; 400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville protected void setUp() throws Exception { 430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville super.setUp(); 440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRunner = (TelephonyMockRilTestRunner)getInstrumentation(); 450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mMockRilChannel = mRunner.mMockRilChannel; 460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville @Override 490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville protected void tearDown() throws Exception { 500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville super.tearDown(); 510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville static void log(String s) { 540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Log.v(TAG, s); 550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Test Case 1: Test protobuf serialization and deserialization 590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * @throws InvalidProtocolBufferMicroException 600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void testProtobufSerDes() throws InvalidProtocolBufferMicroException { 620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville log("testProtobufSerdes E"); 630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RilCtrlCmds.CtrlRspRadioState rs = new RilCtrlCmds.CtrlRspRadioState(); 650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue(String.format("expected rs.state == 0 was %d", rs.getState()), 660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rs.getState() == 0); 670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rs.setState(1); 680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue(String.format("expected rs.state == 1 was %d", rs.getState()), 690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rs.getState() == 1); 700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville byte[] rs_ser = rs.toByteArray(); 720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RilCtrlCmds.CtrlRspRadioState rsNew = RilCtrlCmds.CtrlRspRadioState.parseFrom(rs_ser); 730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue(String.format("expected rsNew.state == 1 was %d", rs.getState()), 740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville rs.getState() == 1); 750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville log("testProtobufSerdes X"); 770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Test case 2: Test echo command works using writeMsg & readMsg 810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void testEchoMsg() throws IOException { 830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville log("testEchoMsg E"); 840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville MsgHeader mh = new MsgHeader(); 860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mh.setCmd(0); 870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mh.setToken(1); 880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mh.setStatus(2); 890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ByteBuffer data = ByteBuffer.allocate(3); 900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville data.put((byte)3); 910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville data.put((byte)4); 920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville data.put((byte)5); 930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Msg.send(mMockRilChannel, mh, data); 940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Msg respMsg = Msg.recv(mMockRilChannel); 960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue(String.format("expected mhd.header.cmd == 0 was %d",respMsg.getCmd()), 970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville respMsg.getCmd() == 0); 980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue(String.format("expected mhd.header.token == 1 was %d",respMsg.getToken()), 990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville respMsg.getToken() == 1); 1000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue(String.format("expected mhd.header.status == 2 was %d", respMsg.getStatus()), 1010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville respMsg.getStatus() == 2); 1020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue(String.format("expected mhd.data[0] == 3 was %d", respMsg.getData(0)), 1030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville respMsg.getData(0) == 3); 1040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue(String.format("expected mhd.data[1] == 4 was %d", respMsg.getData(1)), 1050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville respMsg.getData(1) == 4); 1060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue(String.format("expected mhd.data[2] == 5 was %d", respMsg.getData(2)), 1070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville respMsg.getData(2) == 5); 1080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville log("testEchoMsg X"); 1100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 1130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Test case 3: Test get as 1140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void testGetAs() { 1160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville log("testGetAs E"); 1170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Use a message header as the protobuf data content 1190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville MsgHeader mh = new MsgHeader(); 1200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mh.setCmd(12345); 1210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mh.setToken(9876); 1220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mh.setStatus(7654); 1230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mh.setLengthData(4321); 1240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville byte[] data = mh.toByteArray(); 1250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville MsgHeader mhResult = Msg.getAs(MsgHeader.class, data); 1260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue(String.format("expected cmd == 12345 was %d", mhResult.getCmd()), 1280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mhResult.getCmd() == 12345); 1290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue(String.format("expected token == 9876 was %d", mhResult.getToken()), 1300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mhResult.getToken() == 9876); 1310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue(String.format("expected status == 7654 was %d", mhResult.getStatus()), 1320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mhResult.getStatus() == 7654); 1330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue(String.format("expected lengthData == 4321 was %d", mhResult.getLengthData()), 1340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mhResult.getLengthData() == 4321); 1350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Msg msg = Msg.obtain(); 1370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville msg.setData(ByteBuffer.wrap(data)); 1380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mhResult = msg.getDataAs(MsgHeader.class); 1400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue(String.format("expected cmd == 12345 was %d", mhResult.getCmd()), 1420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mhResult.getCmd() == 12345); 1430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue(String.format("expected token == 9876 was %d", mhResult.getToken()), 1440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mhResult.getToken() == 9876); 1450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue(String.format("expected status == 7654 was %d", mhResult.getStatus()), 1460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mhResult.getStatus() == 7654); 1470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue(String.format("expected lengthData == 4321 was %d", mhResult.getLengthData()), 1480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mhResult.getLengthData() == 4321); 1490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville log("testGetAs X"); 1510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 1540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Test case 3: test get radio state 1550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void testGetRadioState() throws IOException { 1570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville log("testGetRadioState E"); 1580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Msg.send(mMockRilChannel, 1, 9876, 0, null); 1600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Msg resp = Msg.recv(mMockRilChannel); 1620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville //resp.printHeader("testGetRadioState"); 1630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue(String.format("expected cmd == 1 was %d", resp.getCmd()), 1650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resp.getCmd() == 1); 1660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue(String.format("expected token == 9876 was %d", resp.getToken()), 1670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resp.getToken() == 9876); 1680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue(String.format("expected status == 0 was %d", resp.getStatus()), 1690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resp.getStatus() == 0); 1700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RilCtrlCmds.CtrlRspRadioState rsp = resp.getDataAs(RilCtrlCmds.CtrlRspRadioState.class); 1720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int state = rsp.getState(); 1740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville log("testGetRadioState state=" + state); 1750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue(String.format("expected RadioState >= 0 && RadioState <= 9 was %d", state), 1760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ((state >= 0) && (state <= 9))); 1770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville log("testGetRadioState X"); 1790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 1820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Test case 5: test set radio state 1830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 1840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void testSetRadioState() throws IOException { 1850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville log("testSetRadioState E"); 1860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RilCtrlCmds.CtrlReqRadioState cmdrs = new RilCtrlCmds.CtrlReqRadioState(); 1880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertEquals(0, cmdrs.getState()); 1890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville cmdrs.setState(RilCmds.RADIOSTATE_SIM_NOT_READY); 1910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertEquals(2, cmdrs.getState()); 1920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Msg.send(mMockRilChannel, RilCtrlCmds.CTRL_CMD_SET_RADIO_STATE, 0, 0, cmdrs); 1940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Msg resp = Msg.recv(mMockRilChannel); 1960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville log("get response status :" + resp.getStatus()); 1970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville log("get response for command: " + resp.getCmd()); 1980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville log("get command token: " + resp.getToken()); 1990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RilCtrlCmds.CtrlRspRadioState rsp = resp.getDataAs(RilCtrlCmds.CtrlRspRadioState.class); 2010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville int state = rsp.getState(); 2030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville log("get response for testSetRadioState: " + state); 2040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue(RilCmds.RADIOSTATE_SIM_NOT_READY == state); 2050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 2080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Test case 6: test start incoming call and hangup it. 2090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void testStartIncomingCallAndHangup() throws IOException { 2110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville log("testStartIncomingCallAndHangup"); 2120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RilCtrlCmds.CtrlReqSetMTCall cmd = new RilCtrlCmds.CtrlReqSetMTCall(); 2130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String incomingCall = "6502889108"; 2140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // set the MT call 2150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville cmd.setPhoneNumber(incomingCall); 2160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Msg.send(mMockRilChannel, RilCtrlCmds.CTRL_CMD_SET_MT_CALL, 0, 0, cmd); 2170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // get response 2180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Msg resp = Msg.recv(mMockRilChannel); 2190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville log("Get response status: " + resp.getStatus()); 2200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue("The ril is not in a proper state to set MT calls.", 2210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resp.getStatus() == RilCtrlCmds.CTRL_STATUS_OK); 2220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // allow the incoming call alerting for some time 2240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 2250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Thread.sleep(5000); 2260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (InterruptedException e) {} 2270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // we are playing a trick to assume the current is 1 2290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RilCtrlCmds.CtrlHangupConnRemote hangupCmd = new RilCtrlCmds.CtrlHangupConnRemote(); 2300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville hangupCmd.setConnectionId(1); 2310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville hangupCmd.setCallFailCause(16); // normal hangup 2320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Msg.send(mMockRilChannel, RilCtrlCmds.CTRL_CMD_HANGUP_CONN_REMOTE, 0, 0, hangupCmd); 2330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // get response 2350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resp = Msg.recv(mMockRilChannel); 2360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville log("Get response for hangup connection: " + resp.getStatus()); 2370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue("CTRL_CMD_HANGUP_CONN_REMOTE failed", 2380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resp.getStatus() == RilCtrlCmds.CTRL_STATUS_OK); 2390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 2420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Test case 7: test set call transition flag 2430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 2440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void testSetCallTransitionFlag() throws IOException { 2450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville log("testSetCallTransitionFlag"); 2460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // Set flag to true: 2470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RilCtrlCmds.CtrlSetCallTransitionFlag cmd = new RilCtrlCmds.CtrlSetCallTransitionFlag(); 2480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville cmd.setFlag(true); 2490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Msg.send(mMockRilChannel, RilCtrlCmds.CTRL_CMD_SET_CALL_TRANSITION_FLAG, 0, 0, cmd); 2500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Msg resp = Msg.recv(mMockRilChannel); 2520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville log("Get response status: " + resp.getStatus()); 2530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue("Set call transition flag failed", 2540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resp.getStatus() == RilCtrlCmds.CTRL_STATUS_OK); 2550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // add a dialing call 2570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RilCtrlCmds.CtrlReqAddDialingCall cmdDialCall = new RilCtrlCmds.CtrlReqAddDialingCall(); 2580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String phoneNumber = "5102345678"; 2590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville cmdDialCall.setPhoneNumber(phoneNumber); 2600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Msg.send(mMockRilChannel, RilCtrlCmds.CTRL_CMD_ADD_DIALING_CALL, 0, 0, cmdDialCall); 2610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resp = Msg.recv(mMockRilChannel); 2620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville log("Get response status for adding a dialing call: " + resp.getStatus()); 2630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue("add dialing call failed", 2640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resp.getStatus() == RilCtrlCmds.CTRL_STATUS_OK); 2650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 2660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Thread.sleep(5000); 2670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (InterruptedException e) {} 2680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // send command to force call state change 2700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Msg.send(mMockRilChannel, RilCtrlCmds.CTRL_CMD_SET_CALL_ALERT, 0, 0, null); 2710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resp = Msg.recv(mMockRilChannel); 2720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville log("Get response status: " + resp.getStatus()); 2730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue("Set call alert failed", 2740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resp.getStatus() == RilCtrlCmds.CTRL_STATUS_OK); 2750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 2770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Thread.sleep(2000); 2780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (InterruptedException e) {} 2790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // send command to force call state change 2810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Msg.send(mMockRilChannel, RilCtrlCmds.CTRL_CMD_SET_CALL_ACTIVE, 0, 0, null); 2820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resp = Msg.recv(mMockRilChannel); 2830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville log("Get response status: " + resp.getStatus()); 2840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue("Set call active failed", 2850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resp.getStatus() == RilCtrlCmds.CTRL_STATUS_OK); 2860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // hangup the active all remotely 2880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville RilCtrlCmds.CtrlHangupConnRemote hangupCmd = new RilCtrlCmds.CtrlHangupConnRemote(); 2890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville hangupCmd.setConnectionId(1); 2900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville hangupCmd.setCallFailCause(16); // normal hangup 2910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Msg.send(mMockRilChannel, RilCtrlCmds.CTRL_CMD_HANGUP_CONN_REMOTE, 0, 0, hangupCmd); 2920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resp = Msg.recv(mMockRilChannel); 2930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville log("Get response for hangup connection: " + resp.getStatus()); 2940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue("CTRL_CMD_HANGUP_CONN_REMOTE failed", 2950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resp.getStatus() == RilCtrlCmds.CTRL_STATUS_OK); 2960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // set the flag to false 2980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville cmd.setFlag(false); 2990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Msg.send(mMockRilChannel, RilCtrlCmds.CTRL_CMD_SET_CALL_TRANSITION_FLAG, 0, 0, cmd); 3000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resp = Msg.recv(mMockRilChannel); 3010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville assertTrue("Set call transition flag failed", 3020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville resp.getStatus() == RilCtrlCmds.CTRL_STATUS_OK); 3030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville} 305