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

Commit bd6eb47f authored by Daniel Bateman's avatar Daniel Bateman
Browse files

telephony: SamsungRIL cleanup

== RIL ==
* remove unused "found" boolean in processSolicited
* make requestToString/repsonseToString append the request
  ID on unknown requests.

== Samsung RIL ==
* add CM copyright header to file
* SAMSUNG_UNKNOWN_MAGIC_REQUEST_3 is actually UNSOL_AM
* add DIAL_EMERGENCY to a SamsungRIL::requestToString
* add DIAL_EMERGENCY response to processSolicited
* move emergency dialing into dialEmergencyCall()
* dialEmergencyCall() also ditches UUS info like on stock.
* cleanup and improve readibility of responseCallList()
* move isVideo before isVoicePrivacy, as it is in stock:
    ref "stock" code: http://pastebin.com/WePMyXDi
    ref "stock" order: isMpty then isMT then als then isVoice then isVideo
                       then isVoicePrivacy
    ref cm code: http://pastebin.com/UU105gNr
    ref cm order: isMpty then isMT then als then isVoice then
                  isVoicePrivacy then "videoMagic"
* general cleanup

Change-Id: Ic4ada0a3d6ac1bf580b3930a2599a91e822540ef
parent 6e2a42c6
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -2187,7 +2187,6 @@ public class RIL extends BaseCommands implements CommandsInterface {
    protected void
    processSolicited (Parcel p) {
        int serial, error;
        boolean found = false;

        serial = p.readInt();
        error = p.readInt();
@@ -3560,7 +3559,7 @@ public class RIL extends BaseCommands implements CommandsInterface {
            case RIL_REQUEST_ISIM_AUTHENTICATION: return "RIL_REQUEST_ISIM_AUTHENTICATION";
            case RIL_REQUEST_ACKNOWLEDGE_INCOMING_GSM_SMS_WITH_PDU: return "RIL_REQUEST_ACKNOWLEDGE_INCOMING_GSM_SMS_WITH_PDU";
            case RIL_REQUEST_STK_SEND_ENVELOPE_WITH_STATUS: return "RIL_REQUEST_STK_SEND_ENVELOPE_WITH_STATUS";
            default: return "<unknown request>";
            default: return "<unknown request: "+request+">";
        }
    }

@@ -3608,7 +3607,7 @@ public class RIL extends BaseCommands implements CommandsInterface {
            case RIL_UNSOl_CDMA_PRL_CHANGED: return "UNSOL_CDMA_PRL_CHANGED";
            case RIL_UNSOL_EXIT_EMERGENCY_CALLBACK_MODE: return "UNSOL_EXIT_EMERGENCY_CALLBACK_MODE";
            case RIL_UNSOL_RIL_CONNECTED: return "UNSOL_RIL_CONNECTED";
            default: return "<unknown reponse>";
            default: return "<unknown response: "+request+">";
        }
    }

+86 −53
Original line number Diff line number Diff line
/*
 * Copyright (C) 2006 The Android Open Source Project
 * Copyright (C) 2011, 2012 The CyanogenMod Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.internal.telephony;

import java.util.ArrayList;
@@ -50,20 +67,26 @@ public class SamsungRIL extends RIL implements CommandsInterface {
    static final int RIL_UNSOL_O2_HOME_ZONE_INFO = 11007;
    static final int RIL_UNSOL_DEVICE_READY_NOTI = 11008;
    static final int RIL_UNSOL_GPS_NOTI = 11009;
    static final int RIL_UNSOL_SAMSUNG_UNKNOWN_MAGIC_REQUEST_3 = 11010;
    static final int RIL_UNSOL_AM = 11010;
    static final int RIL_UNSOL_SAMSUNG_UNKNOWN_MAGIC_REQUEST = 11012;
    static final int RIL_UNSOL_SAMSUNG_UNKNOWN_MAGIC_REQUEST_2 = 11011;
    static final int RIL_UNSOL_HSDPA_STATE_CHANGED = 11016;
    static final int RIL_UNSOL_SAMSUNG_UNKNOWN_MAGIC_REQUEST = 11012;
    static final int RIL_REQUEST_DIAL_EMERGENCY = 10016;

    static String
    requestToString(int request) {
        switch (request) {
            case RIL_REQUEST_DIAL_EMERGENCY: return "DIAL_EMERGENCY";
            default: return RIL.requestToString(request);
        }
    }

    @Override
    public void
    setRadioPower(boolean on, Message result) {
        RILRequest rr = RILRequest.obtain(RIL_REQUEST_RADIO_POWER, result);

        //samsung crap for airplane mode
        if (on)
        {
        if (on) {
            rr.mp.writeInt(1);
            rr.mp.writeInt(1);
        } else {
@@ -71,6 +94,7 @@ public class SamsungRIL extends RIL implements CommandsInterface {
            rr.mp.writeInt(0);
            rr.mp.writeInt(0);
        }

        if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest));
        send(rr);
    }
@@ -79,7 +103,6 @@ public class SamsungRIL extends RIL implements CommandsInterface {
    protected void
    processSolicited (Parcel p) {
        int serial, error;
        boolean found = false;

        serial = p.readInt();
        error = p.readInt();
@@ -210,6 +233,7 @@ public class SamsungRIL extends RIL implements CommandsInterface {
            case RIL_REQUEST_EXIT_EMERGENCY_CALLBACK_MODE: ret = responseVoid(p); break;
            case RIL_REQUEST_REPORT_SMS_MEMORY_STATUS: ret = responseVoid(p); break;
            case RIL_REQUEST_REPORT_STK_SERVICE_IS_RUNNING: ret = responseVoid(p); break;
            case RIL_REQUEST_DIAL_EMERGENCY: ret = responseVoid(p); break;
            default:
                throw new RuntimeException("Unrecognized solicited response: " + rr.mRequest);
                //break;
@@ -267,15 +291,12 @@ public class SamsungRIL extends RIL implements CommandsInterface {
    dial(String address, int clirMode, UUSInfo uusInfo, Message result) {
        RILRequest rr;
        if (!mIsSamsungCdma && PhoneNumberUtils.isEmergencyNumber(address)) {
            Log.v(LOG_TAG, "Emergency dial: " + address);
            rr = RILRequest.obtain(RIL_REQUEST_DIAL_EMERGENCY, result);
            rr.mp.writeString(address + "/");
            dialEmergencyCall(address, clirMode, result);
            return;
        }
        else {

        rr = RILRequest.obtain(RIL_REQUEST_DIAL, result);
        rr.mp.writeString(address);
        }

        rr.mp.writeInt(clirMode);
        rr.mp.writeInt(0); // UUS information is absent

@@ -293,6 +314,22 @@ public class SamsungRIL extends RIL implements CommandsInterface {
        send(rr);
    }

    public void
    dialEmergencyCall(String address, int clirMode, Message result) {
        RILRequest rr;
        Log.v(LOG_TAG, "Emergency dial: " + address);

        rr = RILRequest.obtain(RIL_REQUEST_DIAL_EMERGENCY, result);
        rr.mp.writeString(address + "/");
        rr.mp.writeInt(clirMode);
        rr.mp.writeInt(0);
        rr.mp.writeInt(0);

        if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest));

        send(rr);
    }

    @Override
    protected void
    processUnsolicited (Parcel p) {
@@ -349,7 +386,7 @@ public class SamsungRIL extends RIL implements CommandsInterface {
        case RIL_UNSOL_GPS_NOTI: ret = responseVoid(p); break; // Ignored in TW RIL.
        case RIL_UNSOL_SAMSUNG_UNKNOWN_MAGIC_REQUEST: ret = responseVoid(p); break;
        case RIL_UNSOL_SAMSUNG_UNKNOWN_MAGIC_REQUEST_2: ret = responseVoid(p); break;
        case RIL_UNSOL_SAMSUNG_UNKNOWN_MAGIC_REQUEST_3: ret = responseVoid(p); break;
        case RIL_UNSOL_AM: ret = responseVoid(p); break;

        default:
            throw new RuntimeException("Unrecognized unsol response: " + response);
@@ -466,12 +503,14 @@ public class SamsungRIL extends RIL implements CommandsInterface {
            String nitz = (String)ret;
            if (RILJ_LOGD) riljLog(" RIL_UNSOL_NITZ_TIME_RECEIVED length = "
                    + nitz.split("[/:,+-]").length);

            // remove the tailing information that samsung added to the string
            //it will screw the NITZ parser
            if(nitz.split("[/:,+-]").length >= 9)
                nitz = nitz.substring(0,(nitz.lastIndexOf(",")));

            if (RILJ_LOGD) riljLog(" RIL_UNSOL_NITZ_TIME_RECEIVED striped nitz = "
                    + nitz);

            result[0] = nitz;
            result[1] = Long.valueOf(nitzReceiveTime);

@@ -688,7 +727,7 @@ public class SamsungRIL extends RIL implements CommandsInterface {
    protected Object
    responseCallList(Parcel p) {
        int num;
        int voiceSettings;
        boolean isVideo;
        ArrayList<DriverCall> response;
        DriverCall dc;
        int dataAvail = p.dataAvail();
@@ -699,11 +738,7 @@ public class SamsungRIL extends RIL implements CommandsInterface {
        Log.d(LOG_TAG, "Parcel pos = " + pos);
        Log.d(LOG_TAG, "Parcel dataAvail = " + dataAvail);

        //Samsung fucked up here

        num = p.readInt();

        Log.d(LOG_TAG, "num = " + num);
        response = new ArrayList<DriverCall>(num);

        for (int i = 0 ; i < num ; i++) {
@@ -713,35 +748,33 @@ public class SamsungRIL extends RIL implements CommandsInterface {
                dc = new DriverCall();

            dc.state                = DriverCall.stateFromCLCC(p.readInt());
            Log.d(LOG_TAG, "state = " + dc.state);
            dc.index                = p.readInt();
            Log.d(LOG_TAG, "index = " + dc.index);
            dc.TOA                  = p.readInt();
            Log.d(LOG_TAG, "state = " + dc.TOA);
            dc.isMpty               = (0 != p.readInt());
            Log.d(LOG_TAG, "isMpty = " + dc.isMpty);
            dc.isMT                 = (0 != p.readInt());
            Log.d(LOG_TAG, "isMT = " + dc.isMT);
            dc.als                  = p.readInt();
            Log.d(LOG_TAG, "als = " + dc.als);
            voiceSettings = p.readInt();
            dc.isVoice = (0 == voiceSettings) ? false : true;
            Log.d(LOG_TAG, "isVoice = " + dc.isVoice);
            dc.isVoice              = (0 != p.readInt());
            isVideo                 = (0 != p.readInt());
            dc.isVoicePrivacy       = (0 != p.readInt());
            //Some Samsung magic data for Videocalls
            voiceSettings = p.readInt();
            //printing it to cosole for later investigation
            Log.d(LOG_TAG, "Samsung magic = " + voiceSettings);
            dc.number               = p.readString();
            Log.d(LOG_TAG, "number = " + dc.number);
            int np                  = p.readInt();
            Log.d(LOG_TAG, "np = " + np);
            dc.numberPresentation   = DriverCall.presentationFromCLIP(np);
            dc.name                 = p.readString();
            Log.d(LOG_TAG, "name = " + dc.name);
            dc.namePresentation     = p.readInt();
            Log.d(LOG_TAG, "namePresentation = " + dc.namePresentation);
            int uusInfoPresent      = p.readInt();

            Log.d(LOG_TAG, "state = " + dc.state);
            Log.d(LOG_TAG, "index = " + dc.index);
            Log.d(LOG_TAG, "state = " + dc.TOA);
            Log.d(LOG_TAG, "isMpty = " + dc.isMpty);
            Log.d(LOG_TAG, "isMT = " + dc.isMT);
            Log.d(LOG_TAG, "als = " + dc.als);
            Log.d(LOG_TAG, "isVoice = " + dc.isVoice);
            Log.d(LOG_TAG, "isVideo = " + isVideo);
            Log.d(LOG_TAG, "number = " + dc.number);
            Log.d(LOG_TAG, "numberPresentation = " + np);
            Log.d(LOG_TAG, "name = " + dc.name);
            Log.d(LOG_TAG, "namePresentation = " + dc.namePresentation);
            Log.d(LOG_TAG, "uusInfoPresent = " + uusInfoPresent);

            if (uusInfoPresent == 1) {