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

Commit 9e003cef authored by Giulio Cervera's avatar Giulio Cervera
Browse files

telefony: SonyQualcommRIL: misc update

* Check call status before validating data call state
* Add RIL_UNSOL_DATA_NETWORK_STATE_CHANGED string to RIL

Change-Id: I4a840f8f5f714f3a89426f0c538b6c54112d9a0e
parent ed888035
Loading
Loading
Loading
Loading
+48 −1
Original line number Diff line number Diff line
@@ -19,14 +19,15 @@ package com.android.internal.telephony;
import static com.android.internal.telephony.RILConstants.*;

import android.content.Context;
import android.content.res.Resources;
import android.os.AsyncResult;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.Looper;
import android.os.Message;
import android.os.Parcel;
import android.telephony.SmsMessage;
import android.os.SystemProperties;
import android.telephony.SmsMessage;
import android.text.TextUtils;
import android.util.Log;

@@ -297,6 +298,49 @@ public class SonyQualcommRIL extends RIL implements CommandsInterface {
        return response;
    }

    @Override
    protected DataCallState getDataCallState(Parcel p, int version) {
        DataCallState dataCall = new DataCallState();

        dataCall.version = version;
        if (version < 5) {
            dataCall.cid = p.readInt();
            dataCall.active = p.readInt();
            dataCall.type = p.readString();
            p.readString(); // APN - not used
            String addresses = p.readString();
            if (!TextUtils.isEmpty(addresses)) {
                dataCall.addresses = addresses.split(" ");
            }
            // DataCallState needs an ifname. Since we don't have one use the name from the ThrottleService resource (default=rmnet0).
            dataCall.ifname = Resources.getSystem().getString(com.android.internal.R.string.config_datause_iface);
        } else {
            dataCall.status = p.readInt();
	    dataCall.suggestedRetryTime = p.readInt();
            dataCall.cid = p.readInt();
            dataCall.active = p.readInt();
            dataCall.type = p.readString();
            dataCall.ifname = p.readString();
            if ((dataCall.status == DataConnection.FailCause.NONE.getErrorCode()) &&
                    TextUtils.isEmpty(dataCall.ifname) && dataCall.active != 0) {
              throw new RuntimeException("getDataCallState, no ifname");
            }
            String addresses = p.readString();
            if (!TextUtils.isEmpty(addresses)) {
                dataCall.addresses = addresses.split(" ");
            }
            String dnses = p.readString();
            if (!TextUtils.isEmpty(dnses)) {
                dataCall.dnses = dnses.split(" ");
            }
            String gateways = p.readString();
            if (!TextUtils.isEmpty(gateways)) {
                dataCall.gateways = gateways.split(" ");
            }
        }
        return dataCall;
    }

    @Override
    protected void
    processUnsolicited (Parcel p) {
@@ -306,6 +350,7 @@ public class SonyQualcommRIL extends RIL implements CommandsInterface {

        switch(response) {
            case RIL_UNSOL_RESPONSE_RADIO_STATE_CHANGED: ret =  responseVoid(p); break;
            case 1038: ret = responseVoid(p); break; // RIL_UNSOL_DATA_NETWORK_STATE_CHANGED

            default:
                // Rewind the Parcel
@@ -321,6 +366,8 @@ public class SonyQualcommRIL extends RIL implements CommandsInterface {
                int state = p.readInt();
                setRadioStateFromRILInt(state);
                break;
            case 1038:
                break;
        }
    }