Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d4e3bf4d authored by Xia Wang's avatar Xia Wang Committed by Android Git Automerger
Browse files

am c8511af0: Merge "Add mock ril control commands and tests" into gingerbread

Merge commit 'c8511af0' into gingerbread-plus-aosp

* commit 'c8511af0':
  Add mock ril control commands and tests
parents e69f1f1a c8511af0
Loading
Loading
Loading
Loading
+68 −6
Original line number Diff line number Diff line
@@ -134,17 +134,15 @@ public class MockRilController {
        return curstate == state;
    }



    /**
     * Set an MT call
     * Start an incoming call for the given phone number
     *
     * @param phoneNumber for the number shown
     * @param phoneNumber is the number to show as incoming call
     * @return true if the incoming call is started successfully, false if it fails.
     */
    public boolean setMTCall(String phoneNumber) {
    public boolean startIncomingCall(String phoneNumber) {
        RilCtrlCmds.CtrlReqSetMTCall req = new RilCtrlCmds.CtrlReqSetMTCall();

        // Check whether it is a valid number
        req.setPhoneNumber(phoneNumber);
        if (!sendCtrlCommand(RilCtrlCmds.CTRL_CMD_SET_MT_CALL, 0, 0, req)) {
            Log.v(TAG, "send CMD_SET_MT_CALL request failed");
@@ -153,4 +151,68 @@ public class MockRilController {
        return true;
    }

    /**
     * Hang up a connection remotelly for the given call fail cause
     *
     * @param connectionID is the connection to be hung up
     * @param failCause is the call fail cause defined in ril.h
     * @return true if the hangup is successful, false if it fails
     */
    public boolean hangupRemote(int connectionId, int failCause) {
        RilCtrlCmds.CtrlHangupConnRemote req = new RilCtrlCmds.CtrlHangupConnRemote();
        req.setConnectionId(connectionId);
        req.setCallFailCause(failCause);

        if (!sendCtrlCommand(RilCtrlCmds.CTRL_CMD_HANGUP_CONN_REMOTE, 0, 0, req)) {
            Log.v(TAG, "send CTRL_CMD_HANGUP_CONN_REMOTE request failed");
            return false;
        }
        return true;
    }

    /**
     * Set call transition flag to the Mock Ril
     *
     * @param flag is a boolean value for the call transiton flag
     *             true: call transition: dialing->alert, alert->active is controlled
     *             false: call transition is automatically handled by Mock Ril
     * @return true if the request is successful, false if it failed to set the flag
     */
    public boolean setCallTransitionFlag(boolean flag) {
        RilCtrlCmds.CtrlSetCallTransitionFlag req = new RilCtrlCmds.CtrlSetCallTransitionFlag();

        req.setFlag(flag);

        if (!sendCtrlCommand(RilCtrlCmds.CTRL_CMD_SET_CALL_TRANSITION_FLAG, 0, 0, req)) {
            Log.v(TAG, "send CTRL_CMD_SET_CALL_TRANSITION_FLAG request failed");
            return false;
        }
        return true;
    }

    /**
     * Set the dialing call to alert if the call transition flag is true
     *
     * @return true if the call transition is successful, false if it fails
     */
    public boolean setDialCallToAlert() {
        if (!sendCtrlCommand(RilCtrlCmds.CTRL_CMD_SET_CALL_ALERT, 0, 0, null)) {
            Log.v(TAG, "send CTRL_CMD_SET_CALL_ALERT request failed");
            return false;
        }
        return true;
   }

   /**
    * Set the alert call to active if the call transition flag is true
    *
    * @return true if the call transition is successful, false if it fails
    */
   public boolean setAlertCallToActive() {
        if (!sendCtrlCommand(RilCtrlCmds.CTRL_CMD_SET_CALL_ACTIVE, 0, 0, null)) {
            Log.v(TAG, "send CTRL_CMD_SET_CALL_ACTIVE request failed");
            return false;
        }
        return true;
   }
}
+110 −3
Original line number Diff line number Diff line
@@ -55,7 +55,7 @@ public class MockRilTest extends InstrumentationTestCase {
    }

    /**
     * Test protobuf serialization and deserialization
     * Test Case 1: Test protobuf serialization and deserialization
     * @throws InvalidProtocolBufferMicroException
     */
    public void testProtobufSerDes() throws InvalidProtocolBufferMicroException {
@@ -77,7 +77,7 @@ public class MockRilTest extends InstrumentationTestCase {
    }

    /**
     * Test echo command works using writeMsg & readMsg
     * Test case 2: Test echo command works using writeMsg & readMsg
     */
    public void testEchoMsg() throws IOException {
        log("testEchoMsg E");
@@ -110,7 +110,7 @@ public class MockRilTest extends InstrumentationTestCase {
    }

    /**
     * Test get as
     * Test case 3: Test get as
     */
    public void testGetAs() {
        log("testGetAs E");
@@ -150,6 +150,9 @@ public class MockRilTest extends InstrumentationTestCase {
        log("testGetAs X");
    }

    /**
     * Test case 3: test get radio state
     */
    public void testGetRadioState() throws IOException {
        log("testGetRadioState E");

@@ -175,6 +178,9 @@ public class MockRilTest extends InstrumentationTestCase {
        log("testGetRadioState X");
    }

    /**
     * Test case 5: test set radio state
     */
    public void testSetRadioState() throws IOException {
        log("testSetRadioState E");

@@ -187,6 +193,9 @@ public class MockRilTest extends InstrumentationTestCase {
        Msg.send(mMockRilChannel, RilCtrlCmds.CTRL_CMD_SET_RADIO_STATE, 0, 0, cmdrs);

        Msg resp = Msg.recv(mMockRilChannel);
        log("get response status :" + resp.getStatus());
        log("get response for command: " + resp.getCmd());
        log("get command token: " + resp.getToken());

        RilCtrlCmds.CtrlRspRadioState rsp = resp.getDataAs(RilCtrlCmds.CtrlRspRadioState.class);

@@ -194,4 +203,102 @@ public class MockRilTest extends InstrumentationTestCase {
        log("get response for testSetRadioState: " + state);
        assertTrue(RilCmds.RADIOSTATE_SIM_NOT_READY == state);
    }

    /**
     * Test case 6: test start incoming call and hangup it.
     */
    public void testStartIncomingCallAndHangup() throws IOException {
        log("testStartIncomingCallAndHangup");
        RilCtrlCmds.CtrlReqSetMTCall cmd = new RilCtrlCmds.CtrlReqSetMTCall();
        String incomingCall = "6502889108";
        // set the MT call
        cmd.setPhoneNumber(incomingCall);
        Msg.send(mMockRilChannel, RilCtrlCmds.CTRL_CMD_SET_MT_CALL, 0, 0, cmd);
        // get response
        Msg resp = Msg.recv(mMockRilChannel);
        log("Get response status: " + resp.getStatus());
        assertTrue("The ril is not in a proper state to set MT calls.",
                   resp.getStatus() == RilCtrlCmds.CTRL_STATUS_OK);

        // allow the incoming call alerting for some time
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {}

        // we are playing a trick to assume the current is 1
        RilCtrlCmds.CtrlHangupConnRemote hangupCmd = new RilCtrlCmds.CtrlHangupConnRemote();
        hangupCmd.setConnectionId(1);
        hangupCmd.setCallFailCause(16);   // normal hangup
        Msg.send(mMockRilChannel, RilCtrlCmds.CTRL_CMD_HANGUP_CONN_REMOTE, 0, 0, hangupCmd);

        // get response
        resp = Msg.recv(mMockRilChannel);
        log("Get response for hangup connection: " + resp.getStatus());
        assertTrue("CTRL_CMD_HANGUP_CONN_REMOTE failed",
                   resp.getStatus() == RilCtrlCmds.CTRL_STATUS_OK);
    }

    /**
     * Test case 7: test set call transition flag
     */
    public void testSetCallTransitionFlag() throws IOException {
        log("testSetCallTransitionFlag");
        // Set flag to true:
        RilCtrlCmds.CtrlSetCallTransitionFlag cmd = new RilCtrlCmds.CtrlSetCallTransitionFlag();
        cmd.setFlag(true);
        Msg.send(mMockRilChannel, RilCtrlCmds.CTRL_CMD_SET_CALL_TRANSITION_FLAG, 0, 0, cmd);

        Msg resp = Msg.recv(mMockRilChannel);
        log("Get response status: " + resp.getStatus());
        assertTrue("Set call transition flag failed",
                   resp.getStatus() == RilCtrlCmds.CTRL_STATUS_OK);

        // add a dialing call
        RilCtrlCmds.CtrlReqAddDialingCall cmdDialCall = new RilCtrlCmds.CtrlReqAddDialingCall();
        String phoneNumber = "5102345678";
        cmdDialCall.setPhoneNumber(phoneNumber);
        Msg.send(mMockRilChannel, RilCtrlCmds.CTRL_CMD_ADD_DIALING_CALL, 0, 0, cmdDialCall);
        resp = Msg.recv(mMockRilChannel);
        log("Get response status for adding a dialing call: " + resp.getStatus());
        assertTrue("add dialing call failed",
                   resp.getStatus() == RilCtrlCmds.CTRL_STATUS_OK);
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {}

        // send command to force call state change
        Msg.send(mMockRilChannel, RilCtrlCmds.CTRL_CMD_SET_CALL_ALERT, 0, 0, null);
        resp = Msg.recv(mMockRilChannel);
        log("Get response status: " + resp.getStatus());
        assertTrue("Set call alert failed",
                   resp.getStatus() == RilCtrlCmds.CTRL_STATUS_OK);

        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {}

        // send command to force call state change
        Msg.send(mMockRilChannel, RilCtrlCmds.CTRL_CMD_SET_CALL_ACTIVE, 0, 0, null);
        resp = Msg.recv(mMockRilChannel);
        log("Get response status: " + resp.getStatus());
        assertTrue("Set call active failed",
                   resp.getStatus() == RilCtrlCmds.CTRL_STATUS_OK);

        // hangup the active all remotely
        RilCtrlCmds.CtrlHangupConnRemote hangupCmd = new RilCtrlCmds.CtrlHangupConnRemote();
        hangupCmd.setConnectionId(1);
        hangupCmd.setCallFailCause(16);   // normal hangup
        Msg.send(mMockRilChannel, RilCtrlCmds.CTRL_CMD_HANGUP_CONN_REMOTE, 0, 0, hangupCmd);
        resp = Msg.recv(mMockRilChannel);
        log("Get response for hangup connection: " + resp.getStatus());
        assertTrue("CTRL_CMD_HANGUP_CONN_REMOTE failed",
                   resp.getStatus() == RilCtrlCmds.CTRL_STATUS_OK);

        // set the flag to false
        cmd.setFlag(false);
        Msg.send(mMockRilChannel, RilCtrlCmds.CTRL_CMD_SET_CALL_TRANSITION_FLAG, 0, 0, cmd);
        resp = Msg.recv(mMockRilChannel);
        assertTrue("Set call transition flag failed",
                   resp.getStatus() == RilCtrlCmds.CTRL_STATUS_OK);
    }
}