Skip to content

Commit

Permalink
Introduce HuaweiQualcommRIL's evil Gingerbread twin
Browse files Browse the repository at this point in the history
  • Loading branch information
Daz Jones committed Feb 20, 2013
1 parent 6873403 commit 97634be
Show file tree
Hide file tree
Showing 3 changed files with 206 additions and 1 deletion.
2 changes: 2 additions & 0 deletions device_u8815.mk
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ $(call inherit-product, $(SRC_TARGET_DIR)/product/full_base.mk)

$(call inherit-product, device/common/gps/gps_eu_supl.mk)

FRAMEWORKS_BASE_SUBDIRS += ../../$(LOCAL_PATH)/ril/

DEVICE_PACKAGE_OVERLAYS := device/huawei/u8815/overlay

PRODUCT_PACKAGES += \
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,203 @@
/*
* Copyright (C) 2011 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 static com.android.internal.telephony.RILConstants.*;

import android.content.Context;
import android.os.Message;
import android.os.Parcel;
import android.util.Log;

import com.android.internal.telephony.DataCallState;
import com.android.internal.telephony.gsm.NetworkInfo;
import com.android.internal.telephony.IccCardApplication;
import com.android.internal.telephony.IccCardStatus;

import java.util.ArrayList;

/**
* Custom Qualcomm No SimReady RIL for Huawei
*
* {@hide}
*/
public class HuaweiQualcommRIL extends QualcommNoSimReadyRIL implements CommandsInterface {
protected String mAid;

public HuaweiQualcommRIL(Context context) {
super(context);
}

public HuaweiQualcommRIL(Context context, int networkMode, int cdmaSubscription) {
super(context, networkMode, cdmaSubscription);
}

@Override
public void
deactivateDataCall(int cid, Message result) {
RILRequest rr
= RILRequest.obtain(RIL_REQUEST_DEACTIVATE_DATA_CALL, result);

rr.mp.writeInt(2);
rr.mp.writeString(Integer.toString(cid));
rr.mp.writeString("0");

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

send(rr);
}

@Override
public void
getIMSI(Message result) {
RILRequest rr = RILRequest.obtain(RIL_REQUEST_GET_IMSI, result);

rr.mp.writeInt(1);
rr.mp.writeString(mAid);

if (RILJ_LOGD) riljLog(rr.serialString() +
"> getIMSI:RIL_REQUEST_GET_IMSI " +
RIL_REQUEST_GET_IMSI +
" aid: " + mAid +
" " + requestToString(rr.mRequest));

send(rr);
}

@Override
public void
iccIO (int command, int fileid, String path, int p1, int p2, int p3,
String data, String pin2, Message result) {
//Note: This RIL request has not been renamed to ICC,
// but this request is also valid for SIM and RUIM
RILRequest rr
= RILRequest.obtain(RIL_REQUEST_SIM_IO, result);

rr.mp.writeInt(command);
rr.mp.writeInt(fileid);
rr.mp.writeString(path);
rr.mp.writeInt(p1);
rr.mp.writeInt(p2);
rr.mp.writeInt(p3);
rr.mp.writeString(data);
rr.mp.writeString(pin2);
rr.mp.writeString(mAid);

if (RILJ_LOGD) riljLog(rr.serialString() + "> iccIO: "
+ " aid: " + mAid + " "
+ requestToString(rr.mRequest)
+ " 0x" + Integer.toHexString(command)
+ " 0x" + Integer.toHexString(fileid) + " "
+ " path: " + path + ","
+ p1 + "," + p2 + "," + p3);

send(rr);
}

@Override
public void
queryFacilityLock (String facility, String password, int serviceClass,
Message response) {
RILRequest rr = RILRequest.obtain(RIL_REQUEST_QUERY_FACILITY_LOCK, response);

if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)
+ " aid: " + mAid + " facility: " + facility);

// count strings
rr.mp.writeInt(4);

rr.mp.writeString(facility);
rr.mp.writeString(password);
rr.mp.writeString(Integer.toString(serviceClass));
rr.mp.writeString(mAid);

send(rr);
}

@Override
public void
setFacilityLock (String facility, boolean lockState, String password,
int serviceClass, Message response) {
String lockString;
RILRequest rr
= RILRequest.obtain(RIL_REQUEST_SET_FACILITY_LOCK, response);

if (RILJ_LOGD) riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)
+ " aid: " + mAid + " facility: " + facility
+ " lockstate: " + lockState);

// count strings
rr.mp.writeInt(5);

rr.mp.writeString(facility);
lockString = (lockState)?"1":"0";
rr.mp.writeString(lockString);
rr.mp.writeString(password);
rr.mp.writeString(Integer.toString(serviceClass));
rr.mp.writeString(mAid);

send(rr);
}

@Override
protected Object
responseIccCardStatus(Parcel p) {
IccCardApplication ca;

IccCardStatus status = new IccCardStatus();
status.setCardState(p.readInt());
status.setUniversalPinState(p.readInt());
status.setGsmUmtsSubscriptionAppIndex(p.readInt());
status.setCdmaSubscriptionAppIndex(p.readInt());
p.readInt(); // ImsSubscriptionAppIndex
int numApplications = p.readInt();

// limit to maximum allowed applications
if (numApplications > IccCardStatus.CARD_MAX_APPS) {
numApplications = IccCardStatus.CARD_MAX_APPS;
}
status.setNumApplications(numApplications);

for (int i = 0 ; i < numApplications ; i++) {
ca = new IccCardApplication();
ca.app_type = ca.AppTypeFromRILInt(p.readInt());
ca.app_state = ca.AppStateFromRILInt(p.readInt());
ca.perso_substate = ca.PersoSubstateFromRILInt(p.readInt());
ca.aid = p.readString();
ca.app_label = p.readString();
ca.pin1_replaced = p.readInt();
ca.pin1 = p.readInt();
ca.pin2 = p.readInt();
status.addApplication(ca);
}

int appIndex = -1;
if (mPhoneType == RILConstants.CDMA_PHONE) {
appIndex = status.getCdmaSubscriptionAppIndex();
Log.d(LOG_TAG, "This is a CDMA PHONE " + appIndex);
} else {
appIndex = status.getGsmUmtsSubscriptionAppIndex();
Log.d(LOG_TAG, "This is a GSM PHONE " + appIndex);
}

IccCardApplication application = status.getApplication(appIndex);
mAid = application.aid;

return status;
}
}
2 changes: 1 addition & 1 deletion system.prop
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
rild.libpath=/system/lib/libril-qc-1.so
rild.libargs=-d /dev/smd0
ro.telephony.default_network=0
ro.telephony.ril_class=HWQcomRIL
ro.telephony.ril_class=HuaweiQualcommRIL
ril.subscription.types=NV,RUIM
DEVICE_PROVISIONED=1
debug.sf.hw=1
Expand Down

0 comments on commit 97634be

Please sign in to comment.