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

Commit e27408ec authored by Wink Saville's avatar Wink Saville
Browse files

No data connectivity.

Some devices aren't getting data connectivity, Motorola has supplied
this patch which fixes it. We may refine this change in the future.

Bug: 17696051
Change-Id: I84c916f498411eb808d8569fb30ec3acbab367c4
parent 44099501
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -50,6 +50,8 @@ import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.List;

import com.android.internal.telephony.dataconnection.DctController;

public class PhoneProxy extends Handler implements Phone {
    public final static Object lockForRadioTechnologyChange = new Object();

@@ -242,6 +244,8 @@ public class PhoneProxy extends Handler implements Phone {
        SubscriptionManager.putPhoneIdAndSubIdExtra(intent, mPhoneId);
        ActivityManagerNative.broadcastStickyIntent(intent, null, UserHandle.USER_ALL);

        DctController.getInstance().updatePhoneObject(this);

    }

    private void deleteAndCreatePhone(int newVoiceRadioTech) {
+30 −0
Original line number Diff line number Diff line
@@ -99,6 +99,31 @@ public class DctController extends Handler {
        }
    };

    public void updatePhoneObject(PhoneProxy phone) {
        if(phone == null) {
            loge("updatePhoneObject phone = null");
            return;
        }
        PhoneBase phoneBase = (PhoneBase)phone.getActivePhone();
        if(phoneBase == null) {
            loge("updatePhoneObject phoneBase = null");
            return;
        }

        phoneBase.getServiceStateTracker().registerForDataConnectionAttached(mRspHandler,
                   EVENT_DATA_ATTACHED, null);
        phoneBase.getServiceStateTracker().registerForDataConnectionDetached(mRspHandler,
                   EVENT_DATA_DETACHED, null);

        for(int i = 0; i < mPhoneNum; i++) {
            if((mPhones[i] == phone) && (mNetworkFactory != null) && (mNetworkFactory[i] != null)){
                logd("updatePhoneObject for phone i=" + i);
                ((DctController.TelephonyNetworkFactory)mNetworkFactory[i]).setPhone(phoneBase);
                break;
            }
        }
    }

    private Handler mRspHandler = new Handler() {
        @Override
        public void handleMessage(Message msg){
@@ -571,6 +596,11 @@ public class DctController extends Handler {
        private final SparseArray<NetworkRequest> mPendingReq = new SparseArray<NetworkRequest>();
        private Phone mPhone;

        public void setPhone(Phone phone) {
            log("NetworkCapabilities: setPhone=" + phone);
            mPhone = phone;
        }

        public TelephonyNetworkFactory(Looper l, Context c, String TAG, Phone phone,
                NetworkCapabilities nc) {
            super(l, c, TAG, nc);