1. Download our Official Android App: Forums for Android!

Root [ROM]{BETA.#3} Unofficial CyanogenMod 10

Discussion in 'Android Devices' started by chevanlol360, Apr 5, 2014.

  1. chevanlol360

    chevanlol360 Android Expert
    Thread Starter
    Rank:
    None
    Points:
    423
    Posts:
    2,828
    Joined:
    Oct 28, 2011

    Oct 28, 2011
    2,828
    2,184
    423
    Male
    tech videos/ Dev'ing
    new york
    No. Don't. do. it. Stupid. idea.
     

    Advertisement

    Techlord likes this.
  2. Robrev6

    Robrev6 Member
    Rank:
    None
    Points:
    16
    Posts:
    33
    Joined:
    Mar 6, 2014

    Mar 6, 2014
    33
    2
    16
    Male
    Virginia, USA
    Haha alright thanks. Just seeing what your input was.
     
  3. aenoch

    aenoch Android Enthusiast
    Rank:
    None
    Points:
    73
    Posts:
    337
    Joined:
    Apr 7, 2012

    Apr 7, 2012
    337
    76
    73
    Can some one post the buildprop file. Im looking for anything having to do with bluetooth. I was going to install the room. To grab it my self but the captcha. Shows a error on mediafire using dolphin firefox and. Chrome. Using android and desktop mode
     
  4. Techlord

    Techlord Android Enthusiast
    Rank:
    None
    Points:
    38
    Posts:
    261
    Joined:
    Feb 26, 2014

    Feb 26, 2014
    261
    20
    38
    Not sure but it showed an error for me at first but when I disabled adblocker, it worked.
     
  5. aenoch

    aenoch Android Enthusiast
    Rank:
    None
    Points:
    73
    Posts:
    337
    Joined:
    Apr 7, 2012

    Apr 7, 2012
    337
    76
    73
    Hmm i did. Install a xposed. Adblocker thing to stop ads in apps. That. I forgot about. Which explains why when i click amy google ads in browser. I get a weppage not availble screen. Just got to figure out how to uninstall. It since i dont have xposed installed. Im not sure why the captcha wont work tho. This is the first time. Mediafire hasent worked. In desktop mode which is how. I have been getting mediafire to work
     
  6. Techlord

    Techlord Android Enthusiast
    Rank:
    None
    Points:
    38
    Posts:
    261
    Joined:
    Feb 26, 2014

    Feb 26, 2014
    261
    20
    38
    Yes the captcha won't work if any sort of ad blocker is enabled. Even on my desktop PC it won't show the captcha if adblocker is enabled. So yes gotta find a way to disable it. That it the most likely solution.
     
  7. Casey Stellar

    Casey Stellar Well-Known Member
    Rank:
    None
    Points:
    18
    Posts:
    94
    Joined:
    Jul 13, 2013

    Jul 13, 2013
    94
    12
    18
    Losing my mind :)
    Philadelphia, PA
    Can anyone tell how this ROM is holding up?
     
  8. creed10

    creed10 Android Enthusiast
    Rank:
    None
    Points:
    53
    Posts:
    421
    Joined:
    Apr 4, 2012

    Apr 4, 2012
    421
    60
    53
    it's not really suitable for daily use. you can call and text, but very rarely get data. camera doesn't work. Bluetooth doesn't work. from what I remember, it's not going to receive any more development. we're just going to go straight to CM11 once stock kitkat arrives
     
  9. junkie2100

    junkie2100 Android Expert
    Rank:
    None
    Points:
    313
    Posts:
    3,311
    Joined:
    Mar 11, 2012

    Mar 11, 2012
    3,311
    695
    313
    Male
  10. Casey Stellar

    Casey Stellar Well-Known Member
    Rank:
    None
    Points:
    18
    Posts:
    94
    Joined:
    Jul 13, 2013

    Jul 13, 2013
    94
    12
    18
    Losing my mind :)
    Philadelphia, PA
    Please tell me you'll continue the Cyanogenmod build :(
     
  11. Techlord

    Techlord Android Enthusiast
    Rank:
    None
    Points:
    38
    Posts:
    261
    Joined:
    Feb 26, 2014

    Feb 26, 2014
    261
    20
    38
    Pretty sure he's not. At least not cm10. Maybe cm11
     
  12. DravenXcore

    DravenXcore Well-Known Member
    Rank:
    None
    Points:
    38
    Posts:
    174
    Joined:
    Jul 10, 2012

    Jul 10, 2012
    174
    20
    38
    New Jersey
  13. Bhamilton0347

    Bhamilton0347 Member
    Rank:
    None
    Points:
    16
    Posts:
    44
    Joined:
    Sep 12, 2014

    Sep 12, 2014
    44
    2
    16
    Male
    Lol, my notification light keeps going after boot
     
  14. QuietStorm1785

    QuietStorm1785 Well-Known Member
    Rank:
    None
    Points:
    88
    Posts:
    248
    Joined:
    Jul 24, 2011

    Jul 24, 2011
    248
    336
    88
    Harrisburg, PA
    Well lookie what I found while sifting through the stock rom... managed to decompile the qcrilhook.jar file... this might bring us a step closer to a good ril... theres alot more... qcrilhook.jar has 12 classes

    Code (Java):
    1. package com.android.qualcomm.qcrilhook;
    2.  
    3. import android.content.Context;
    4. import android.os.AsyncResult;
    5. import android.os.Handler;
    6. import android.os.Message;
    7. import android.os.Registrant;
    8. import android.os.RegistrantList;
    9. import android.util.Log;
    10. import java.io.IOException;
    11. import java.nio.ByteBuffer;
    12. import java.util.HashMap;
    13.  
    14. public class EmbmsOemHook extends Handler
    15. {
    16.   private static final short EMBMSHOOK_MSG_ID_ACTIVATE = 2;
    17.   private static final short EMBMSHOOK_MSG_ID_DEACTIVATE = 3;
    18.   private static final short EMBMSHOOK_MSG_ID_DISABLE = 1;
    19.   private static final short EMBMSHOOK_MSG_ID_ENABLE = 0;
    20.   private static final short EMBMSHOOK_MSG_ID_GET_ACTIVE = 5;
    21.   private static final short EMBMSHOOK_MSG_ID_GET_AVAILABLE = 4;
    22.   private static final short EMBMSHOOK_MSG_ID_GET_COVERAGE = 8;
    23.   private static final short EMBMSHOOK_MSG_ID_UNSOL_ACTIVE_TMGI_LIST = 12;
    24.   private static final short EMBMSHOOK_MSG_ID_UNSOL_AVAILABLE_TMGI_LIST = 15;
    25.   private static final short EMBMSHOOK_MSG_ID_UNSOL_COVERAGE_STATE = 13;
    26.   private static final short EMBMSHOOK_MSG_ID_UNSOL_OOS_STATE = 16;
    27.   private static final short EMBMSHOOK_MSG_ID_UNSOL_STATE_CHANGE = 11;
    28.   private static final short EMBMS_SERVICE_ID = 2;
    29.   private static final int FAILURE = -1;
    30.   private static String LOG_TAG = "EmbmsOemHook";
    31.   private static final int OEM_HOOK_RESPONSE = 1;
    32.   private static final int SIZE_OF_TMGI = 6;
    33.   private static final int SUCCESS = 0;
    34.   private static final byte TLV_TYPE_ACTIVATE_REQ_ALL_SESSIONS = 3;
    35.   private static final byte TLV_TYPE_ACTIVATE_REQ_CALL_ID = 4;
    36.   private static final byte TLV_TYPE_ACTIVATE_REQ_SESSION_ID = 2;
    37.   private static final byte TLV_TYPE_ACTIVATE_REQ_TMGI = 1;
    38.   private static final byte TLV_TYPE_ACTIVATE_RESP_CALL_ID = 16;
    39.   private static final byte TLV_TYPE_ACTIVATE_RESP_TMGI = 17;
    40.   private static final byte TLV_TYPE_DEACTIVATE_REQ_CALL_ID = 1;
    41.   private static final byte TLV_TYPE_DEACTIVATE_REQ_TMGI = 2;
    42.   private static final byte TLV_TYPE_DEACTIVATE_RESP_CALL_ID = 16;
    43.   private static final byte TLV_TYPE_DEACTIVATE_RESP_TMGI = 17;
    44.   private static final byte TLV_TYPE_DISABLE_REQ_CALL_ID = 1;
    45.   private static final byte TLV_TYPE_DISABLE_RESP_CALL_ID = 16;
    46.   private static final byte TLV_TYPE_ENABLE_RESP_CALL_ID = 16;
    47.   private static final byte TLV_TYPE_ENABLE_RESP_IFNAME = 17;
    48.   private static final byte TLV_TYPE_ENABLE_RESP_IF_INDEX = 18;
    49.   private static final byte TLV_TYPE_GET_ACTIVE_REQ_CALL_ID = 1;
    50.   private static final byte TLV_TYPE_GET_ACTIVE_RESP_TMGI_ARRAY = 16;
    51.   private static final byte TLV_TYPE_GET_AVAILABLE_REQ_CALL_ID = 1;
    52.   private static final byte TLV_TYPE_GET_AVAILABLE_RESP_TMGI_ARRAY = 16;
    53.   private static final byte TLV_TYPE_GET_COVERAGE_STATE_RESP_STATE = 16;
    54.   private static final short TLV_TYPE_UNSOL_ACTIVE_IND_TMGI_ARRAY = 1;
    55.   private static final short TLV_TYPE_UNSOL_AVAILABLE_IND_SESSION_ID_ARRAY = 2;
    56.   private static final short TLV_TYPE_UNSOL_AVAILABLE_IND_TMGI_ARRAY = 1;
    57.   private static final short TLV_TYPE_UNSOL_COVERAGE_IND_STATE = 1;
    58.   private static final short TLV_TYPE_UNSOL_OOS_IND_STATE = 1;
    59.   private static final short TLV_TYPE_UNSOL_OOS_IND_TMGI_ARRAY = 2;
    60.   private static final short TLV_TYPE_UNSOL_STATE_IND_IF_INDEX = 3;
    61.   private static final short TLV_TYPE_UNSOL_STATE_IND_IP_ADDRESS = 2;
    62.   private static final short TLV_TYPE_UNSOL_STATE_IND_STATE = 1;
    63.   public static final int UNSOL_TYPE_ACTIVE_TMGI_LIST = 2;
    64.   public static final int UNSOL_TYPE_AVAILABLE_TMGI_LIST = 4;
    65.   public static final int UNSOL_TYPE_BROADCAST_COVERAGE = 3;
    66.   public static final int UNSOL_TYPE_OOS_STATE = 5;
    67.   public static final int UNSOL_TYPE_STATE_CHANGE = 1;
    68.   private static int mRefCount = 0;
    69.   private static EmbmsOemHook sInstance;
    70.   private QmiOemHook mQmiOemHook;
    71.   private RegistrantList mRegistrants;
    72.  
    73.   private EmbmsOemHook(Context paramContext)
    74.   {
    75.     Log.v(LOG_TAG, "EmbmsOemHook ()");
    76.     this.mQmiOemHook = QmiOemHook.getInstance(paramContext);
    77.     this.mRegistrants = new RegistrantList();
    78.   }
    79.  
    80.   private static String bytesToHexString(byte[] paramArrayOfByte)
    81.   {
    82.     if (paramArrayOfByte == null)
    83.       return null;
    84.     StringBuilder localStringBuilder = new StringBuilder(2 * paramArrayOfByte.length);
    85.     for (int i = 0; i < paramArrayOfByte.length; i++)
    86.     {
    87.       localStringBuilder.append("0123456789abcdef".charAt(0xF & paramArrayOfByte[i] >> 4));
    88.       localStringBuilder.append("0123456789abcdef".charAt(0xF & paramArrayOfByte[i]));
    89.     }
    90.     return localStringBuilder.toString();
    91.   }
    92.  
    93.   public static EmbmsOemHook getInstance(Context paramContext)
    94.   {
    95.     try
    96.     {
    97.       if (sInstance == null)
    98.       {
    99.         sInstance = new EmbmsOemHook(paramContext);
    100.         Log.d(LOG_TAG, "Singleton Instance of Embms created.");
    101.         QmiOemHook.registerService((short)2, sInstance, 1);
    102.       }
    103.       mRefCount = 1 + mRefCount;
    104.       EmbmsOemHook localEmbmsOemHook = sInstance;
    105.       return localEmbmsOemHook;
    106.     }
    107.     finally
    108.     {
    109.     }
    110.   }
    111.  
    112.   private void handleResponse(HashMap<Integer, Object> paramHashMap)
    113.   {
    114.     int i = ((Short)paramHashMap.get(Integer.valueOf(8))).shortValue();
    115.     int j = ((Integer)paramHashMap.get(Integer.valueOf(2))).intValue();
    116.     int k = ((Integer)paramHashMap.get(Integer.valueOf(3))).intValue();
    117.     Message localMessage = (Message)paramHashMap.get(Integer.valueOf(4));
    118.     ByteBuffer localByteBuffer = (ByteBuffer)paramHashMap.get(Integer.valueOf(6));
    119.     Log.v(LOG_TAG, " responseSize=" + j + " successStatus=" + k);
    120.     switch (i)
    121.     {
    122.     case 6:
    123.     case 7:
    124.     case 9:
    125.     case 10:
    126.     case 14:
    127.     default:
    128.       Log.e(LOG_TAG, "received unexpected msgId " + i);
    129.       return;
    130.     case 0:
    131.       localMessage.obj = new EnableResponse(k, localByteBuffer);
    132.       localMessage.sendToTarget();
    133.       return;
    134.     case 1:
    135.       localMessage.obj = new DisableResponse(k, localByteBuffer);
    136.       localMessage.sendToTarget();
    137.       return;
    138.     case 2:
    139.     case 3:
    140.       localMessage.obj = new TmgiResponse(k, localByteBuffer);
    141.       localMessage.sendToTarget();
    142.       return;
    143.     case 11:
    144.       notifyUnsol(1, new StateChangeInfo(localByteBuffer));
    145.       return;
    146.     case 4:
    147.     case 15:
    148.       if ((i == 4) && (k != 0))
    149.       {
    150.         Log.e(LOG_TAG, "Error received in EMBMSHOOK_MSG_ID_GET_AVAILABLE: " + k);
    151.         return;
    152.       }
    153.       notifyUnsol(4, new TmgiListIndication(localByteBuffer));
    154.       return;
    155.     case 5:
    156.     case 12:
    157.       if ((i == 5) && (k != 0))
    158.       {
    159.         Log.e(LOG_TAG, "Error received in EMBMSHOOK_MSG_ID_GET_ACTIVE: " + k);
    160.         return;
    161.       }
    162.       notifyUnsol(2, new TmgiListIndication(localByteBuffer));
    163.       return;
    164.     case 8:
    165.     case 13:
    166.       if ((i == 8) && (k != 0))
    167.       {
    168.         Log.e(LOG_TAG, "Error received in EMBMSHOOK_MSG_ID_GET_COVERAGE: " + k);
    169.         return;
    170.       }
    171.       notifyUnsol(3, new CoverageState(localByteBuffer));
    172.       return;
    173.     case 16:
    174.     }
    175.     notifyUnsol(5, new OosState(localByteBuffer));
    176.   }
    177.  
    178.   private void notifyUnsol(int paramInt, Object paramObject)
    179.   {
    180.     AsyncResult localAsyncResult = new AsyncResult(null, new UnsolObject(paramInt, paramObject), null);
    181.     Log.i(LOG_TAG, "Notifying registrants type = " + paramInt);
    182.     this.mRegistrants.notifyRegistrants(localAsyncResult);
    183.   }
    184.  
    185.   private byte[] parseTmgi(ByteBuffer paramByteBuffer)
    186.   {
    187.     int i = 0;
    188.     int j = paramByteBuffer.get();
    189.     byte[] arrayOfByte = new byte[j * 6];
    190.     int k = 0;
    191.     while (k < j)
    192.     {
    193.       int m = paramByteBuffer.get();
    194.       int n = 0;
    195.       int i2;
    196.       for (int i1 = i; n < m; i1 = i2)
    197.       {
    198.         i2 = i1 + 1;
    199.         arrayOfByte[i1] = paramByteBuffer.get();
    200.         n++;
    201.       }
    202.       k++;
    203.       i = i1;
    204.     }
    205.     return arrayOfByte;
    206.   }
    207.  
    208.   public int activateTmgi(byte[] paramArrayOfByte, byte paramByte1, byte paramByte2, boolean paramBoolean, String[] paramArrayOfString, int[] paramArrayOfInt, Message paramMessage)
    209.   {
    210.     TmgiActivateRequest localTmgiActivateRequest = new TmgiActivateRequest(paramArrayOfByte, paramByte1, paramByte2, paramBoolean);
    211.     try
    212.     {
    213.       this.mQmiOemHook.sendQmiMessageAsync((short)2, (short)2, localTmgiActivateRequest.getTypes(), localTmgiActivateRequest.getItems(), paramMessage);
    214.       return 0;
    215.     }
    216.     catch (IOException localIOException)
    217.     {
    218.       Log.e(LOG_TAG, "IOException occurred during activate !!!!!!");
    219.     }
    220.     return -1;
    221.   }
    222.  
    223.   public int deactivateTmgi(byte[] paramArrayOfByte, byte paramByte, Message paramMessage)
    224.   {
    225.     TmgiDeActivateRequest localTmgiDeActivateRequest = new TmgiDeActivateRequest(paramArrayOfByte, paramByte);
    226.     try
    227.     {
    228.       this.mQmiOemHook.sendQmiMessageAsync((short)2, (short)3, localTmgiDeActivateRequest.getTypes(), localTmgiDeActivateRequest.getItems(), paramMessage);
    229.       return 0;
    230.     }
    231.     catch (IOException localIOException)
    232.     {
    233.       Log.e(LOG_TAG, "IOException occurred during deactivate !!!!!!");
    234.     }
    235.     return -1;
    236.   }
    237.  
    238.   public int disable(byte paramByte, Message paramMessage)
    239.   {
    240.     GenericRequest localGenericRequest = new GenericRequest(paramByte);
    241.     try
    242.     {
    243.       this.mQmiOemHook.sendQmiMessageAsync((short)2, (short)1, localGenericRequest.getTypes(), localGenericRequest.getItems(), paramMessage);
    244.       return 0;
    245.     }
    246.     catch (IOException localIOException)
    247.     {
    248.       Log.e(LOG_TAG, "IOException occurred during disable !!!!!!");
    249.     }
    250.     return -1;
    251.   }
    252.  
    253.   public void dispose()
    254.   {
    255.     try
    256.     {
    257.       int i = -1 + mRefCount;
    258.       mRefCount = i;
    259.       if (i == 0)
    260.       {
    261.         Log.d(LOG_TAG, "dispose(): Unregistering receiver");
    262.         QmiOemHook.unregisterService(2);
    263.         this.mQmiOemHook.dispose();
    264.         sInstance = null;
    265.       }
    266.       while (true)
    267.       {
    268.         return;
    269.         Log.v(LOG_TAG, "dispose mRefCount = " + mRefCount);
    270.       }
    271.     }
    272.     finally
    273.     {
    274.     }
    275.   }
    276.  
    277.   public int enable(Message paramMessage)
    278.   {
    279.     try
    280.     {
    281.       this.mQmiOemHook.sendQmiMessageAsync((short)2, (short)0, paramMessage);
    282.       return 0;
    283.     }
    284.     catch (IOException localIOException)
    285.     {
    286.       Log.e(LOG_TAG, "IOException occurred during enable !!!!!!");
    287.     }
    288.     return -1;
    289.   }
    290.  
    291.   public int getActiveTMGIList(byte paramByte)
    292.   {
    293.     GenericRequest localGenericRequest = new GenericRequest(paramByte);
    294.     try
    295.     {
    296.       this.mQmiOemHook.sendQmiMessageAsync((short)2, (short)5, localGenericRequest.getTypes(), localGenericRequest.getItems(), null);
    297.       return 0;
    298.     }
    299.     catch (IOException localIOException)
    300.     {
    301.       Log.e(LOG_TAG, "IOException occurred during getActiveTMGIList !!!!!!");
    302.     }
    303.     return -1;
    304.   }
    305.  
    306.   public int getAvailableTMGIList(byte paramByte)
    307.   {
    308.     GenericRequest localGenericRequest = new GenericRequest(paramByte);
    309.     try
    310.     {
    311.       this.mQmiOemHook.sendQmiMessageAsync((short)2, (short)4, localGenericRequest.getTypes(), localGenericRequest.getItems(), null);
    312.       return 0;
    313.     }
    314.     catch (IOException localIOException)
    315.     {
    316.       Log.e(LOG_TAG, "IOException occurred during getAvailableTMGIList !!!!!!");
    317.     }
    318.     return -1;
    319.   }
    320.  
    321.   public int getCoverageState()
    322.   {
    323.     try
    324.     {
    325.       this.mQmiOemHook.sendQmiMessageAsync((short)2, (short)8, null);
    326.       return 0;
    327.     }
    328.     catch (IOException localIOException)
    329.     {
    330.       Log.e(LOG_TAG, "IOException occurred during getActiveTMGIList !!!!!!");
    331.     }
    332.     return -1;
    333.   }
    334.  
    335.   public void handleMessage(Message paramMessage)
    336.   {
    337.     Log.i(LOG_TAG, "received message : " + paramMessage.what);
    338.     switch (paramMessage.what)
    339.     {
    340.     default:
    341.       Log.e(LOG_TAG, "Unexpected message received from QmiOemHook what = " + paramMessage.what);
    342.       return;
    343.     case 1:
    344.     }
    345.     HashMap localHashMap = (HashMap)((AsyncResult)paramMessage.obj).result;
    346.     if (localHashMap == null)
    347.     {
    348.       Log.e(LOG_TAG, "Hashmap async userobj is NULL");
    349.       return;
    350.     }
    351.     handleResponse(localHashMap);
    352.   }
    353.  
    354.   public void registerForNotifications(Handler paramHandler, int paramInt, Object paramObject)
    355.   {
    356.     Registrant localRegistrant = new Registrant(paramHandler, paramInt, paramObject);
    357.     synchronized (this.mRegistrants)
    358.     {
    359.       Log.i(LOG_TAG, "Adding a registrant");
    360.       this.mRegistrants.add(localRegistrant);
    361.       return;
    362.     }
    363.   }
    364.  
    365.   public void unregisterForNotifications(Handler paramHandler)
    366.   {
    367.     synchronized (this.mRegistrants)
    368.     {
    369.       Log.i(LOG_TAG, "Removing a registrant");
    370.       this.mRegistrants.remove(paramHandler);
    371.       return;
    372.     }
    373.   }
    374.  
    375.   public class CoverageState
    376.   {
    377.     public int state;
    378.     public int status;
    379.  
    380.     public CoverageState(ByteBuffer arg2)
    381.     {
    382.       Object localObject;
    383.       while (localObject.hasRemaining())
    384.       {
    385.         int i = PrimitiveParser.toUnsigned(localObject.get());
    386.         PrimitiveParser.toUnsigned(localObject.getShort());
    387.         switch (i)
    388.         {
    389.         default:
    390.           Log.e(EmbmsOemHook.LOG_TAG, "CoverageState: Unexpected Type " + i);
    391.           break;
    392.         case 1:
    393.         case 16:
    394.           this.state = localObject.getInt();
    395.           Log.i(EmbmsOemHook.LOG_TAG, "Coverage State = " + this.state);
    396.         }
    397.       }
    398.     }
    399.   }
    400.  
    401.   public class DisableResponse
    402.   {
    403.     public byte callId;
    404.     public int error;
    405.  
    406.     public DisableResponse(int paramByteBuffer, ByteBuffer arg3)
    407.     {
    408.       if (paramByteBuffer != 0)
    409.       {
    410.         this.error = paramByteBuffer;
    411.         this.callId = 0;
    412.       }
    413.       while (true)
    414.       {
    415.         return;
    416.         Object localObject;
    417.         this.callId = localObject.get();
    418.         Log.i(EmbmsOemHook.LOG_TAG, "callid = " + this.callId);
    419.         while (localObject.hasRemaining())
    420.         {
    421.           int i = PrimitiveParser.toUnsigned(localObject.get());
    422.           PrimitiveParser.toUnsigned(localObject.getShort());
    423.           switch (i)
    424.           {
    425.           case 16:
    426.           }
    427.           Log.e(EmbmsOemHook.LOG_TAG, "DisableResponse: Unexpected Type " + i);
    428.         }
    429.       }
    430.     }
    431.   }
    432.  
    433.   public class EnableResponse
    434.   {
    435.     public byte callId;
    436.     public int error;
    437.     public int ifIndex;
    438.     public String interfaceName;
    439.  
    440.     public EnableResponse(int paramByteBuffer, ByteBuffer arg3)
    441.     {
    442.       if (paramByteBuffer != 0)
    443.       {
    444.         this.error = paramByteBuffer;
    445.         this.callId = 0;
    446.         this.interfaceName = null;
    447.         this.ifIndex = 0;
    448.       }
    449.       while (true)
    450.       {
    451.         return;
    452.         Object localObject;
    453.         this.callId = localObject.get();
    454.         Log.i(EmbmsOemHook.LOG_TAG, "callid = " + this.callId);
    455.         while (localObject.hasRemaining())
    456.         {
    457.           int i = PrimitiveParser.toUnsigned(localObject.get());
    458.           int j = PrimitiveParser.toUnsigned(localObject.getShort());
    459.           switch (i)
    460.           {
    461.           case 16:
    462.           default:
    463.             Log.e(EmbmsOemHook.LOG_TAG, "EnableResponse: Unexpected Type " + i);
    464.             break;
    465.           case 17:
    466.             byte[] arrayOfByte = new byte[j];
    467.             for (int k = 0; k < j; k++)
    468.               arrayOfByte[k] = localObject.get();
    469.             this.interfaceName = new QmiPrimitiveTypes.QmiString(arrayOfByte).toStringValue();
    470.             Log.i(EmbmsOemHook.LOG_TAG, "ifName = " + this.interfaceName);
    471.             break;
    472.           case 18:
    473.             this.ifIndex = localObject.getInt();
    474.             Log.i(EmbmsOemHook.LOG_TAG, "ifIndex = " + this.ifIndex);
    475.           }
    476.         }
    477.       }
    478.     }
    479.   }
    480.  
    481.   public class GenericRequest extends BaseQmiTypes.BaseQmiStructType
    482.   {
    483.     public QmiPrimitiveTypes.QmiByte callId;
    484.  
    485.     public GenericRequest(byte arg2)
    486.     {
    487.       byte b;
    488.       this.callId = new QmiPrimitiveTypes.QmiByte(b);
    489.     }
    490.  
    491.     public BaseQmiTypes.BaseQmiItemType[] getItems()
    492.     {
    493.       BaseQmiTypes.BaseQmiItemType[] arrayOfBaseQmiItemType = new BaseQmiTypes.BaseQmiItemType[1];
    494.       arrayOfBaseQmiItemType[0] = this.callId;
    495.       return arrayOfBaseQmiItemType;
    496.     }
    497.  
    498.     public short[] getTypes()
    499.     {
    500.       return new short[] { 1 };
    501.     }
    502.   }
    503.  
    504.   public class OosState
    505.   {
    506.     public byte[] list = null;
    507.     public int state;
    508.  
    509.     public OosState(ByteBuffer arg2)
    510.     {
    511.       ByteBuffer localByteBuffer;
    512.       while (localByteBuffer.hasRemaining())
    513.       {
    514.         int i = PrimitiveParser.toUnsigned(localByteBuffer.get());
    515.         PrimitiveParser.toUnsigned(localByteBuffer.getShort());
    516.         switch (i)
    517.         {
    518.         default:
    519.           Log.e(EmbmsOemHook.LOG_TAG, "OosState: Unexpected Type " + i);
    520.           break;
    521.         case 1:
    522.           this.state = localByteBuffer.getInt();
    523.           Log.i(EmbmsOemHook.LOG_TAG, "OOs State = " + this.state);
    524.           break;
    525.         case 2:
    526.           this.list = EmbmsOemHook.this.parseTmgi(localByteBuffer);
    527.           Log.i(EmbmsOemHook.LOG_TAG, "tmgiArray = " + EmbmsOemHook.bytesToHexString(this.list));
    528.         }
    529.       }
    530.     }
    531.   }
    532.  
    533.   public class StateChangeInfo
    534.   {
    535.     public int ifIndex;
    536.     public String ipAddress;
    537.     public int state;
    538.  
    539.     public StateChangeInfo(int paramString, String paramInt1, int arg4)
    540.     {
    541.       this.state = paramString;
    542.       this.ipAddress = paramInt1;
    543.       int i;
    544.       this.ifIndex = i;
    545.     }
    546.  
    547.     public StateChangeInfo(ByteBuffer arg2)
    548.     {
    549.       Object localObject;
    550.       while (localObject.hasRemaining())
    551.       {
    552.         int i = PrimitiveParser.toUnsigned(localObject.get());
    553.         int j = PrimitiveParser.toUnsigned(localObject.getShort());
    554.         switch (i)
    555.         {
    556.         default:
    557.           Log.e(EmbmsOemHook.LOG_TAG, "StateChangeInfo: Unexpected Type " + i);
    558.           break;
    559.         case 1:
    560.           this.state = localObject.getInt();
    561.           Log.i(EmbmsOemHook.LOG_TAG, "State = " + this.state);
    562.           break;
    563.         case 2:
    564.           byte[] arrayOfByte = new byte[j];
    565.           for (int k = 0; k < j; k++)
    566.             arrayOfByte[k] = localObject.get();
    567.           this.ipAddress = new QmiPrimitiveTypes.QmiString(arrayOfByte).toString();
    568.           Log.i(EmbmsOemHook.LOG_TAG, "ip Address = " + this.ipAddress);
    569.           break;
    570.         case 3:
    571.           this.ifIndex = localObject.getInt();
    572.           Log.i(EmbmsOemHook.LOG_TAG, "index = " + this.ifIndex);
    573.         }
    574.       }
    575.     }
    576.   }
    577.  
    578.   public class TmgiActivateRequest extends BaseQmiTypes.BaseQmiStructType
    579.   {
    580.     public QmiPrimitiveTypes.QmiByte allSessions;
    581.     public QmiPrimitiveTypes.QmiByte callId;
    582.     public QmiPrimitiveTypes.QmiByte sessionId;
    583.     public QmiPrimitiveTypes.QmiArray<QmiPrimitiveTypes.QmiByte> tmgi;
    584.  
    585.     public TmgiActivateRequest(byte[] paramByte1, byte paramByte2, byte paramBoolean, boolean arg5)
    586.     {
    587.       QmiPrimitiveTypes.QmiByte[] arrayOfQmiByte = new QmiPrimitiveTypes.QmiByte[paramByte1.length];
    588.       for (int j = 0; j < paramByte1.length; j++)
    589.         arrayOfQmiByte[j] = new QmiPrimitiveTypes.QmiByte(paramByte1[j]);
    590.       this.tmgi = new QmiPrimitiveTypes.QmiArray(arrayOfQmiByte, (short)6, QmiPrimitiveTypes.QmiByte.class);
    591.       this.callId = new QmiPrimitiveTypes.QmiByte(paramByte2);
    592.       this.sessionId = new QmiPrimitiveTypes.QmiByte(paramBoolean);
    593.       byte b = 0;
    594.       int i;
    595.       if (i != 0)
    596.         b = 1;
    597.       this.allSessions = new QmiPrimitiveTypes.QmiByte(b);
    598.     }
    599.  
    600.     public BaseQmiTypes.BaseQmiItemType[] getItems()
    601.     {
    602.       BaseQmiTypes.BaseQmiItemType[] arrayOfBaseQmiItemType = new BaseQmiTypes.BaseQmiItemType[4];
    603.       arrayOfBaseQmiItemType[0] = this.tmgi;
    604.       arrayOfBaseQmiItemType[1] = this.sessionId;
    605.       arrayOfBaseQmiItemType[2] = this.allSessions;
    606.       arrayOfBaseQmiItemType[3] = this.callId;
    607.       return arrayOfBaseQmiItemType;
    608.     }
    609.  
    610.     public short[] getTypes()
    611.     {
    612.       return new short[] { 1, 2, 3, 4 };
    613.     }
    614.   }
    615.  
    616.   public class TmgiDeActivateRequest extends BaseQmiTypes.BaseQmiStructType
    617.   {
    618.     public QmiPrimitiveTypes.QmiByte callId;
    619.     public QmiPrimitiveTypes.QmiArray<QmiPrimitiveTypes.QmiByte> tmgi;
    620.  
    621.     public TmgiDeActivateRequest(byte[] paramByte, byte arg3)
    622.     {
    623.       QmiPrimitiveTypes.QmiByte[] arrayOfQmiByte = new QmiPrimitiveTypes.QmiByte[paramByte.length];
    624.       for (int i = 0; i < paramByte.length; i++)
    625.         arrayOfQmiByte[i] = new QmiPrimitiveTypes.QmiByte(paramByte[i]);
    626.       this.tmgi = new QmiPrimitiveTypes.QmiArray(arrayOfQmiByte, (short)6, QmiPrimitiveTypes.QmiByte.class);
    627.       byte b;
    628.       this.callId = new QmiPrimitiveTypes.QmiByte(b);
    629.     }
    630.  
    631.     public BaseQmiTypes.BaseQmiItemType[] getItems()
    632.     {
    633.       BaseQmiTypes.BaseQmiItemType[] arrayOfBaseQmiItemType = new BaseQmiTypes.BaseQmiItemType[2];
    634.       arrayOfBaseQmiItemType[0] = this.tmgi;
    635.       arrayOfBaseQmiItemType[1] = this.callId;
    636.       return arrayOfBaseQmiItemType;
    637.     }
    638.  
    639.     public short[] getTypes()
    640.     {
    641.       return new short[] { 2, 1 };
    642.     }
    643.   }
    644.  
    645.   public class TmgiListIndication
    646.   {
    647.     public byte[] list = null;
    648.     public byte[] sessions = null;
    649.  
    650.     public TmgiListIndication(ByteBuffer arg2)
    651.     {
    652.       ByteBuffer localByteBuffer;
    653.       while (localByteBuffer.hasRemaining())
    654.       {
    655.         int i = PrimitiveParser.toUnsigned(localByteBuffer.get());
    656.         PrimitiveParser.toUnsigned(localByteBuffer.getShort());
    657.         switch (i)
    658.         {
    659.         default:
    660.           Log.e(EmbmsOemHook.LOG_TAG, "TmgiListIndication: Unexpected Type " + i);
    661.           break;
    662.         case 1:
    663.         case 16:
    664.           this.list = EmbmsOemHook.this.parseTmgi(localByteBuffer);
    665.           Log.i(EmbmsOemHook.LOG_TAG, "tmgiArray = " + EmbmsOemHook.bytesToHexString(this.list));
    666.           break;
    667.         case 2:
    668.           int j = 0;
    669.           int k = localByteBuffer.get();
    670.           byte[] arrayOfByte = new byte[k * 6];
    671.           int m = 0;
    672.           while (m < k)
    673.           {
    674.             int n = localByteBuffer.get();
    675.             int i1 = 0;
    676.             int i3;
    677.             for (int i2 = j; i1 < n; i2 = i3)
    678.             {
    679.               i3 = i2 + 1;
    680.               arrayOfByte[i2] = localByteBuffer.get();
    681.               i1++;
    682.             }
    683.             m++;
    684.             j = i2;
    685.           }
    686.           this.sessions = arrayOfByte;
    687.           Log.i(EmbmsOemHook.LOG_TAG, "session array = " + EmbmsOemHook.bytesToHexString(this.sessions));
    688.         }
    689.       }
    690.     }
    691.   }
    692.  
    693.   public class TmgiResponse
    694.   {
    695.     public int status;
    696.     public byte[] tmgi = null;
    697.  
    698.     public TmgiResponse(int paramByteBuffer, ByteBuffer arg3)
    699.     {
    700.       this.status = paramByteBuffer;
    701.       Object localObject;
    702.       while (localObject.hasRemaining())
    703.       {
    704.         int i = PrimitiveParser.toUnsigned(localObject.get());
    705.         PrimitiveParser.toUnsigned(localObject.getShort());
    706.         switch (i)
    707.         {
    708.         default:
    709.           Log.e(EmbmsOemHook.LOG_TAG, "TmgiResponse: Unexpected Type " + i);
    710.           break;
    711.         case 17:
    712.           int k = localObject.get();
    713.           byte[] arrayOfByte = new byte[k];
    714.           for (int m = 0; m < k; m++)
    715.             arrayOfByte[m] = localObject.get();
    716.           this.tmgi = arrayOfByte;
    717.           Log.i(EmbmsOemHook.LOG_TAG, "tmgi = " + EmbmsOemHook.bytesToHexString(this.tmgi));
    718.           break;
    719.         case 16:
    720.           int j = localObject.get();
    721.           Log.i(EmbmsOemHook.LOG_TAG, "callid = " + j);
    722.         }
    723.       }
    724.     }
    725.   }
    726.  
    727.   public class UnsolObject
    728.   {
    729.     public Object obj;
    730.     public int unsolId;
    731.  
    732.     public UnsolObject(int paramObject, Object arg3)
    733.     {
    734.       this.unsolId = paramObject;
    735.       Object localObject;
    736.       this.obj = localObject;
    737.     }
    738.   }
    739. }
    Code (Java):
    1. package com.android.qualcomm.qcrilhook;
    2.  
    3. import android.os.AsyncResult;
    4. import android.os.Handler;
    5.  
    6. public abstract interface IQcRilHook
    7. {
    8.   public static final int QCRILHOOK_BASE = 524288;
    9.   public static final int QCRILHOOK_DMS_GET_DEVICE_SERIAL_NUMBERS = 528394;
    10.   public static final int QCRILHOOK_DMS_GET_FTM_MODE = 528391;
    11.   public static final int QCRILHOOK_DMS_GET_SPC_CHANGE_ENABLED = 528395;
    12.   public static final int QCRILHOOK_DMS_GET_SW_VERSION = 528392;
    13.   public static final int QCRILHOOK_DMS_SET_SPC_CHANGE_ENABLED = 528396;
    14.   public static final int QCRILHOOK_DMS_UPDATE_SERVICE_PROGRAMING_CODE = 528393;
    15.   public static final int QCRILHOOK_GO_DORMANT = 524291;
    16.   public static final int QCRILHOOK_ME_DEPERSONALIZATION = 524292;
    17.   public static final int QCRILHOOK_NAS_GET_3GPP2_SUBSCRIPTION_INFO = 528385;
    18.   public static final int QCRILHOOK_NAS_GET_MOB_CAI_REV = 528387;
    19.   public static final int QCRILHOOK_NAS_GET_RTRE_CONFIG = 528389;
    20.   public static final int QCRILHOOK_NAS_SET_3GPP2_SUBSCRIPTION_INFO = 528386;
    21.   public static final int QCRILHOOK_NAS_SET_MOB_CAI_REV = 528388;
    22.   public static final int QCRILHOOK_NAS_SET_RTRE_CONFIG = 528390;
    23.   public static final int QCRILHOOK_NAS_UPDATE_AKEY = 528384;
    24.   public static final int QCRILHOOK_NV_READ = 524289;
    25.   public static final int QCRILHOOK_NV_WRITE = 524290;
    26.   public static final int QCRILHOOK_QMI_OEMHOOK_REQUEST_ID = 524388;
    27.   public static final int QCRILHOOK_UNSOL_CDMA_BURST_DTMF = 525289;
    28.   public static final int QCRILHOOK_UNSOL_CDMA_CONT_DTMF_START = 525290;
    29.   public static final int QCRILHOOK_UNSOL_CDMA_CONT_DTMF_STOP = 525291;
    30.   public static final int QCRILHOOK_UNSOL_EXTENDED_DBM_INTL = 525288;
    31.   public static final int QCRILHOOK_UNSOL_LOCAL_RINGBACK_START = 525292;
    32.   public static final int QCRILHOOK_UNSOL_LOCAL_RINGBACK_STOP = 525293;
    33.   public static final int QCRILHOOK_UNSOL_OEMHOOK = 525388;
    34.   public static final int QCRILHOOK_VOICE_GET_CONFIG = 528398;
    35.   public static final int QCRILHOOK_VOICE_SET_CONFIG = 528397;
    36.   public static final int QCRIL_EVT_HOOK_GET_PAGING_PRIORITY = 524296;
    37.   public static final int QCRIL_EVT_HOOK_GET_TUNEAWAY = 524294;
    38.   public static final int QCRIL_EVT_HOOK_INFORM_SHUTDOWN = 524298;
    39.   public static final int QCRIL_EVT_HOOK_SET_PAGING_PRIORITY = 524295;
    40.   public static final int QCRIL_EVT_HOOK_SET_TUNEAWAY = 524293;
    41.   public static final int SERVICE_PROGRAMMING_BASE = 4096;
    42.  
    43.   public abstract int qcRilGetPrioritySub();
    44.  
    45.   public abstract boolean qcRilGetTuneAway();
    46.  
    47.   public abstract boolean qcRilGoDormant(String paramString);
    48.  
    49.   public abstract boolean qcRilSetPrioritySub(int paramInt);
    50.  
    51.   public abstract boolean qcRilSetTuneAway(boolean paramBoolean);
    52.  
    53.   public abstract void registerForExtendedDbmIntl(Handler paramHandler, int paramInt, Object paramObject);
    54.  
    55.   public abstract void registerForFieldTestData(Handler paramHandler, int paramInt, Object paramObject);
    56.  
    57.   public abstract AsyncResult sendQcRilHookMsg(int paramInt);
    58.  
    59.   public abstract AsyncResult sendQcRilHookMsg(int paramInt, byte paramByte);
    60.  
    61.   public abstract AsyncResult sendQcRilHookMsg(int paramInt1, int paramInt2);
    62.  
    63.   public abstract AsyncResult sendQcRilHookMsg(int paramInt, String paramString);
    64.  
    65.   public abstract AsyncResult sendQcRilHookMsg(int paramInt, byte[] paramArrayOfByte);
    66.  
    67.   public abstract void unregisterForExtendedDbmIntl(Handler paramHandler);
    68.  
    69.   public abstract void unregisterForFieldTestData(Handler paramHandler);
    70.  
    71.   public static class QcRilExtendedDbmIntlKddiAocr
    72.   {
    73.     public byte chg_ind;
    74.     public byte db_subtype;
    75.     public short mcc;
    76.     public byte sub_unit;
    77.     public byte unit;
    78.   }
    79. }
    Code (Java):
    1.  
    2. package com.android.qualcomm.qcrilhook;
    3.  
    4. import android.content.BroadcastReceiver;
    5. import android.content.Context;
    6. import android.content.Intent;
    7. import android.content.IntentFilter;
    8. import android.os.AsyncResult;
    9. import android.os.Handler;
    10. import android.os.Registrant;
    11. import android.os.RegistrantList;
    12. import android.os.RemoteException;
    13. import android.os.ServiceManager;
    14. import android.util.Log;
    15. import com.android.internal.telephony.CommandException;
    16. import com.android.internal.telephony.IOemHookCallback;
    17. import com.android.internal.telephony.ITelephony;
    18. import com.android.internal.telephony.ITelephony.Stub;
    19. import com.android.internal.telephony.uicc.IccUtils;
    20. import java.nio.ByteBuffer;
    21. import java.nio.ByteOrder;
    22.  
    23. public class QcRilHook
    24.   implements IQcRilHook
    25. {
    26.   private static final int BYTE_SIZE = 1;
    27.   private static final int INT_SIZE = 4;
    28.   private static final String LOG_TAG = "QC_RIL_OEM_HOOK";
    29.   private static final int RESPONSE_BUFFER_SIZE = 2048;
    30.   private static RegistrantList mRegistrants;
    31.   private Context mContext;
    32.   private final int mHeaderSize = 8 + "QUALCOMM".length();
    33.   private BroadcastReceiver mIntentReceiver = new BroadcastReceiver()
    34.   {
    35.     public void onReceive(Context paramAnonymousContext, Intent paramAnonymousIntent)
    36.     {
    37.       String str1 = paramAnonymousIntent.getAction();
    38.       if (str1.equals("android.intent.action.ACTION_UNSOL_RESPONSE_OEM_HOOK_RAW"))
    39.       {
    40.         Log.d("QC_RIL_OEM_HOOK", "Received Broadcast Intent ACTION_UNSOL_RESPONSE_OEM_HOOK_RAW");
    41.         byte[] arrayOfByte1 = paramAnonymousIntent.getByteArrayExtra("payload");
    42.         if (arrayOfByte1 != null)
    43.         {
    44.           if (arrayOfByte1.length >= QcRilHook.this.mHeaderSize)
    45.             break label104;
    46.           Log.e("QC_RIL_OEM_HOOK", "UNSOL_RESPONSE_OEM_HOOK_RAW incomplete header");
    47.           Log.e("QC_RIL_OEM_HOOK", "Expected " + QcRilHook.this.mHeaderSize + " bytes. Received " + arrayOfByte1.length + " bytes.");
    48.         }
    49.         label104: ByteBuffer localByteBuffer;
    50.         int i;
    51.         do
    52.         {
    53.           return;
    54.           localByteBuffer = QcRilHook.createBufferWithNativeByteOrder(arrayOfByte1);
    55.           byte[] arrayOfByte2 = new byte["QUALCOMM".length()];
    56.           localByteBuffer.get(arrayOfByte2);
    57.           String str2 = new String(arrayOfByte2);
    58.           Log.d("QC_RIL_OEM_HOOK", "Oem ID in QCRILHOOK UNSOL RESP is " + str2);
    59.           if (!str2.equals("QUALCOMM"))
    60.           {
    61.             Log.w("QC_RIL_OEM_HOOK", "Incorrect Oem ID in QCRILHOOK UNSOL RESP. Expected QUALCOMM. Received " + str2);
    62.             return;
    63.           }
    64.           i = arrayOfByte1.length - "QUALCOMM".length();
    65.         }
    66.         while (i <= 0);
    67.         byte[] arrayOfByte3 = new byte[i];
    68.         localByteBuffer.get(arrayOfByte3);
    69.         QcRilHook.notifyRegistrants(new AsyncResult(null, arrayOfByte3, null));
    70.         return;
    71.       }
    72.       Log.w("QC_RIL_OEM_HOOK", "Received Unknown Intent: action = " + str1);
    73.     }
    74.   };
    75.   private final String mOemIdentifier = "QUALCOMM";
    76.   private ITelephony mPhoneService = ITelephony.Stub.asInterface(ServiceManager.getService("phone"));
    77.  
    78.   public QcRilHook()
    79.   {
    80.     mRegistrants = new RegistrantList();
    81.     if (this.mPhoneService == null)
    82.     {
    83.       Log.e("QC_RIL_OEM_HOOK", "QcRilOemHook Service Failed");
    84.       return;
    85.     }
    86.     Log.i("QC_RIL_OEM_HOOK", "QcRilOemHook Service Created Successfully");
    87.   }
    88.  
    89.   public QcRilHook(Context paramContext)
    90.   {
    91.     this();
    92.     this.mContext = paramContext;
    93.     IntentFilter localIntentFilter = new IntentFilter();
    94.     localIntentFilter.addAction("android.intent.action.ACTION_UNSOL_RESPONSE_OEM_HOOK_RAW");
    95.     paramContext.registerReceiver(this.mIntentReceiver, localIntentFilter);
    96.     Log.d("QC_RIL_OEM_HOOK", "Registering for intent ACTION_UNSOL_RESPONSE_OEM_HOOK_RAW");
    97.   }
    98.  
    99.   private void addQcRilHookHeader(ByteBuffer paramByteBuffer, int paramInt1, int paramInt2)
    100.   {
    101.     paramByteBuffer.put("QUALCOMM".getBytes());
    102.     paramByteBuffer.putInt(paramInt1);
    103.     paramByteBuffer.putInt(paramInt2);
    104.   }
    105.  
    106.   public static ByteBuffer createBufferWithNativeByteOrder(byte[] paramArrayOfByte)
    107.   {
    108.     ByteBuffer localByteBuffer = ByteBuffer.wrap(paramArrayOfByte);
    109.     localByteBuffer.order(ByteOrder.nativeOrder());
    110.     return localByteBuffer;
    111.   }
    112.  
    113.   public static void notifyRegistrants(AsyncResult paramAsyncResult)
    114.   {
    115.     if (mRegistrants != null)
    116.     {
    117.       mRegistrants.notifyRegistrants(paramAsyncResult);
    118.       return;
    119.     }
    120.     Log.e("QC_RIL_OEM_HOOK", "QcRilOemHook notifyRegistrants Failed");
    121.   }
    122.  
    123.   public static void register(Handler paramHandler, int paramInt, Object paramObject)
    124.   {
    125.     Registrant localRegistrant = new Registrant(paramHandler, paramInt, paramObject);
    126.     synchronized (mRegistrants)
    127.     {
    128.       mRegistrants.add(localRegistrant);
    129.       return;
    130.     }
    131.   }
    132.  
    133.   private AsyncResult sendRilOemHookMsg(int paramInt, byte[] paramArrayOfByte)
    134.   {
    135.     byte[] arrayOfByte1 = new byte[2048];
    136.     Log.v("QC_RIL_OEM_HOOK", "sendQcRilOemHookMsg: Outgoing Data is " + IccUtils.bytesToHexString(paramArrayOfByte));
    137.     try
    138.     {
    139.       int i = this.mPhoneService.sendOemRilRequestRaw(paramArrayOfByte, arrayOfByte1);
    140.       if (i >= 0)
    141.       {
    142.         byte[] arrayOfByte2 = null;
    143.         if (i > 0)
    144.         {
    145.           arrayOfByte2 = new byte[i];
    146.           System.arraycopy(arrayOfByte1, 0, arrayOfByte2, 0, i);
    147.         }
    148.         return new AsyncResult(Integer.valueOf(i), arrayOfByte2, null);
    149.       }
    150.       AsyncResult localAsyncResult = new AsyncResult(paramArrayOfByte, null, CommandException.fromRilErrno(i * -1));
    151.       return localAsyncResult;
    152.     }
    153.     catch (RemoteException localRemoteException)
    154.     {
    155.       Log.w("QC_RIL_OEM_HOOK", "sendQcRilOemHook RequestID = " + paramInt + " exception, unable to send RIL request from this application", localRemoteException);
    156.       return new AsyncResult(Integer.valueOf(paramInt), null, localRemoteException);
    157.     }
    158.   }
    159.  
    160.   private void sendRilOemHookMsgAsync(int paramInt, byte[] paramArrayOfByte, IOemHookCallback paramIOemHookCallback)
    161.   {
    162.     Log.v("QC_RIL_OEM_HOOK", "sendQcRilOemHookMsgAsync: Outgoing Data is " + IccUtils.bytesToHexString(paramArrayOfByte));
    163.     try
    164.     {
    165.       this.mPhoneService.sendOemRilRequestRawAsync(paramArrayOfByte, paramIOemHookCallback);
    166.       return;
    167.     }
    168.     catch (RemoteException localRemoteException)
    169.     {
    170.       Log.w("QC_RIL_OEM_HOOK", "sendQcRilOemHookAsync RequestID = " + paramInt + " exception, unable to send RIL request from this application", localRemoteException);
    171.     }
    172.   }
    173.  
    174.   public static void unregister(Handler paramHandler)
    175.   {
    176.     synchronized (mRegistrants)
    177.     {
    178.       mRegistrants.remove(paramHandler);
    179.       return;
    180.     }
    181.   }
    182.  
    183.   protected void dispose()
    184.   {
    185.     if (this.mContext != null)
    186.     {
    187.       Log.v("QC_RIL_OEM_HOOK", "dispose(): Unregistering receiver");
    188.       this.mContext.unregisterReceiver(this.mIntentReceiver);
    189.     }
    190.   }
    191.  
    192.   protected void finalize()
    193.   {
    194.     Log.v("QC_RIL_OEM_HOOK", "is destroyed");
    195.   }
    196.  
    197.   public int qcRilGetPrioritySub()
    198.   {
    199.     AsyncResult localAsyncResult = sendQcRilHookMsg(524296);
    200.     if (localAsyncResult.exception != null)
    201.     {
    202.       Log.e("QC_RIL_OEM_HOOK", "QCRIL  get priority sub Command returned Exception: " + localAsyncResult.exception);
    203.       return 0;
    204.     }
    205.     if (localAsyncResult.result != null)
    206.     {
    207.       int i = ByteBuffer.wrap((byte[])localAsyncResult.result).get();
    208.       Log.v("QC_RIL_OEM_HOOK", "qcRilGetPrioritySub: priority subscription is :: " + i);
    209.       return i;
    210.     }
    211.     Log.e("QC_RIL_OEM_HOOK", "QCRIL get priority sub Command returned null response ");
    212.     return 0;
    213.   }
    214.  
    215.   public boolean qcRilGetTuneAway()
    216.   {
    217.     AsyncResult localAsyncResult = sendQcRilHookMsg(524294);
    218.     if (localAsyncResult.exception != null)
    219.     {
    220.       Log.e("QC_RIL_OEM_HOOK", "QCRIL Get Tune Away Command returned Exception: " + localAsyncResult.exception);
    221.       return false;
    222.     }
    223.     if (localAsyncResult.result != null)
    224.     {
    225.       int i = ByteBuffer.wrap((byte[])localAsyncResult.result).get();
    226.       Log.v("QC_RIL_OEM_HOOK", "qcRilGetTuneAway: TuneAway flag is :: " + i);
    227.       return i == 1;
    228.     }
    229.     Log.e("QC_RIL_OEM_HOOK", "QCRIL Get Tune Away Command returned null response ");
    230.     return false;
    231.   }
    232.  
    233.   public boolean qcRilGoDormant(String paramString)
    234.   {
    235.     AsyncResult localAsyncResult = sendQcRilHookMsg(524291, paramString);
    236.     if (localAsyncResult.exception == null)
    237.       return true;
    238.     Log.w("QC_RIL_OEM_HOOK", "Go Dormant Command returned Exception: " + localAsyncResult.exception);
    239.     return false;
    240.   }
    241.  
    242.   public boolean qcRilInformShutDown()
    243.   {
    244.     AsyncResult localAsyncResult = sendQcRilHookMsg(524298);
    245.     if (localAsyncResult.exception == null)
    246.     {
    247.       Log.d("QC_RIL_OEM_HOOK", "QCRIL Inform shutdown success");
    248.       return true;
    249.     }
    250.     Log.e("QC_RIL_OEM_HOOK", "QCRIL Inform shutdown failed: " + localAsyncResult.exception);
    251.     return false;
    252.   }
    253.  
    254.   public boolean qcRilSetPrioritySub(int paramInt)
    255.   {
    256.     byte b = (byte)paramInt;
    257.     Log.v("QC_RIL_OEM_HOOK", "qcRilSetPrioritySub: Outgoing priority subscription is:" + paramInt);
    258.     AsyncResult localAsyncResult = sendQcRilHookMsg(524295, b);
    259.     if (localAsyncResult.exception == null)
    260.       return true;
    261.     Log.e("QC_RIL_OEM_HOOK", "QCRIL set priority sub Command returned Exception: " + localAsyncResult.exception);
    262.     return false;
    263.   }
    264.  
    265.   public boolean qcRilSetTuneAway(boolean paramBoolean)
    266.   {
    267.     StringBuilder localStringBuilder = new StringBuilder().append("qcRilSetTuneAway: Outgoing TuneAway flag is ");
    268.     int i;
    269.     if (paramBoolean)
    270.     {
    271.       i = 1;
    272.       Log.v("QC_RIL_OEM_HOOK", i);
    273.       if (!paramBoolean)
    274.         break label67;
    275.     }
    276.     AsyncResult localAsyncResult;
    277.     label67: for (byte b = 1; ; b = 0)
    278.     {
    279.       localAsyncResult = sendQcRilHookMsg(524293, b);
    280.       if (localAsyncResult.exception != null)
    281.         break label73;
    282.       return true;
    283.       i = 0;
    284.       break;
    285.     }
    286.     label73: Log.e("QC_RIL_OEM_HOOK", "QCRIL Set Tune Away Command returned Exception: " + localAsyncResult.exception);
    287.     return false;
    288.   }
    289.  
    290.   public void registerForExtendedDbmIntl(Handler paramHandler, int paramInt, Object paramObject)
    291.   {
    292.   }
    293.  
    294.   public void registerForFieldTestData(Handler paramHandler, int paramInt, Object paramObject)
    295.   {
    296.   }
    297.  
    298.   public AsyncResult sendQcRilHookMsg(int paramInt)
    299.   {
    300.     byte[] arrayOfByte = new byte[this.mHeaderSize];
    301.     addQcRilHookHeader(createBufferWithNativeByteOrder(arrayOfByte), paramInt, 0);
    302.     return sendRilOemHookMsg(paramInt, arrayOfByte);
    303.   }
    304.  
    305.   public AsyncResult sendQcRilHookMsg(int paramInt, byte paramByte)
    306.   {
    307.     byte[] arrayOfByte = new byte[1 + this.mHeaderSize];
    308.     ByteBuffer localByteBuffer = createBufferWithNativeByteOrder(arrayOfByte);
    309.     addQcRilHookHeader(localByteBuffer, paramInt, 1);
    310.     localByteBuffer.put(paramByte);
    311.     return sendRilOemHookMsg(paramInt, arrayOfByte);
    312.   }
    313.  
    314.   public AsyncResult sendQcRilHookMsg(int paramInt1, int paramInt2)
    315.   {
    316.     byte[] arrayOfByte = new byte[4 + this.mHeaderSize];
    317.     ByteBuffer localByteBuffer = createBufferWithNativeByteOrder(arrayOfByte);
    318.     addQcRilHookHeader(localByteBuffer, paramInt1, 4);
    319.     localByteBuffer.putInt(paramInt2);
    320.     return sendRilOemHookMsg(paramInt1, arrayOfByte);
    321.   }
    322.  
    323.   public AsyncResult sendQcRilHookMsg(int paramInt, String paramString)
    324.   {
    325.     byte[] arrayOfByte = new byte[this.mHeaderSize + paramString.length()];
    326.     ByteBuffer localByteBuffer = createBufferWithNativeByteOrder(arrayOfByte);
    327.     addQcRilHookHeader(localByteBuffer, paramInt, paramString.length());
    328.     localByteBuffer.put(paramString.getBytes());
    329.     return sendRilOemHookMsg(paramInt, arrayOfByte);
    330.   }
    331.  
    332.   public AsyncResult sendQcRilHookMsg(int paramInt, byte[] paramArrayOfByte)
    333.   {
    334.     byte[] arrayOfByte = new byte[this.mHeaderSize + paramArrayOfByte.length];
    335.     ByteBuffer localByteBuffer = createBufferWithNativeByteOrder(arrayOfByte);
    336.     addQcRilHookHeader(localByteBuffer, paramInt, paramArrayOfByte.length);
    337.     localByteBuffer.put(paramArrayOfByte);
    338.     return sendRilOemHookMsg(paramInt, arrayOfByte);
    339.   }
    340.  
    341.   public void sendQcRilHookMsgAsync(int paramInt, byte[] paramArrayOfByte, OemHookCallback paramOemHookCallback)
    342.   {
    343.     int i = 0;
    344.     if (paramArrayOfByte != null)
    345.       i = paramArrayOfByte.length;
    346.     byte[] arrayOfByte = new byte[i + this.mHeaderSize];
    347.     ByteBuffer localByteBuffer = createBufferWithNativeByteOrder(arrayOfByte);
    348.     addQcRilHookHeader(localByteBuffer, paramInt, i);
    349.     if (paramArrayOfByte != null)
    350.       localByteBuffer.put(paramArrayOfByte);
    351.     sendRilOemHookMsgAsync(paramInt, arrayOfByte, paramOemHookCallback);
    352.   }
    353.  
    354.   public void unregisterForExtendedDbmIntl(Handler paramHandler)
    355.   {
    356.   }
    357.  
    358.   public void unregisterForFieldTestData(Handler paramHandler)
    359.   {
    360.   }
    361. }


    Heres a link to what I found. Use it how you wish, Im going to keep digging and see what I find. Im going to try to use camera stuff from samsung d2lte, since it's using the same msm8960 we are... might work, who knows.... I forget how we got the camera to work on cm for zte warp... was so long ago...

    https://www.dropbox.com/s/2hogdmmzkehwrci/qcrilhook.zip?dl=0



    EDIT: Half hour later...

    Well sh!#.... dug deeper, decompiled the framework, and found the camera shiz too....
    Code (Java):
    1. package com.qualcomm.camera;
    2.  
    3. import android.hardware.Camera.Face;
    4. import android.os.Bundle;
    5. import android.os.SystemProperties;
    6. import com.qualcomm.snapdragon.util.QCCapabilitiesInterface;
    7. import java.util.ArrayList;
    8.  
    9. public class QCFace extends Camera.Face
    10.   implements QCCapabilitiesInterface
    11. {
    12.   private static final String BUNDLE_KEY_BLINK_DETECTED = "blinkDetected";
    13.   private static final String BUNDLE_KEY_FACE_PITCH_DEGREE = "facePitchDegree";
    14.   private static final String BUNDLE_KEY_FACE_RECOGNIZED = "faceRecognized";
    15.   private static final String BUNDLE_KEY_FACE_ROLL_DEGREE = "faceRollDegree";
    16.   private static final String BUNDLE_KEY_FACE_YAW_DEGREE = "faceYawDegree";
    17.   private static final String BUNDLE_KEY_GAZE_LEFT_RIGHT_DEGREE = "gazeLeftRightDegree";
    18.   private static final String BUNDLE_KEY_GAZE_UP_DOWN_DEGREE = "gazeUpDownDegree";
    19.   private static final String BUNDLE_KEY_LEFT_EYE_CLOSED_VALUE = "leftEyeClosedValue";
    20.   private static final String BUNDLE_KEY_RIGHT_EYE_CLOSED_VALUE = "rightEyeClosedValue";
    21.   private static final String BUNDLE_KEY_SMILE_SCORE = "smileScore";
    22.   private static final String BUNDLE_KEY_SMILE_VALUE = "smileValue";
    23.   private static final String STR_FACIAL_PROCESSING = "ro.qc.sdk.camera.facialproc";
    24.   private static final String STR_FALSE = "false";
    25.   private static final String STR_TRUE = "true";
    26.   private int blinkDetected = 0;
    27.   private int faceRecognized = 0;
    28.   private int gazeAngle = 0;
    29.   private int leftrightDir = 0;
    30.   private int leftrightGaze = 0;
    31.   private int leyeBlink = 0;
    32.   private int reyeBlink = 0;
    33.   private int rollDir = 0;
    34.   private int smileDegree = 0;
    35.   private int smileScore = 0;
    36.   private int topbottomGaze = 0;
    37.   private int updownDir = 0;
    38.  
    39.   public int getBlinkDetected()
    40.   {
    41.     return this.blinkDetected;
    42.   }
    43.  
    44.   public Bundle getCapabilities()
    45.   {
    46.     boolean bool = SystemProperties.get("ro.qc.sdk.camera.facialproc").equalsIgnoreCase("true");
    47.     ArrayList localArrayList = null;
    48.     if (bool)
    49.     {
    50.       localArrayList = new ArrayList();
    51.       localArrayList.add("getSmileDegree");
    52.       localArrayList.add("getSmileScore");
    53.       localArrayList.add("getBlinkDetected");
    54.       localArrayList.add("getFaceRecognized");
    55.       localArrayList.add("getGazeAngle");
    56.       localArrayList.add("getUpDownDirection");
    57.       localArrayList.add("getLeftRightDirection");
    58.       localArrayList.add("getRollDirection");
    59.       localArrayList.add("getLeftRightGazeDegree");
    60.       localArrayList.add("getTopBottomGazeDegree");
    61.       localArrayList.add("getLeftEyeBlinkDegree");
    62.       localArrayList.add("getRightEyeBlinkDegree");
    63.       localArrayList.add("getQCFaceInfo");
    64.     }
    65.     Bundle localBundle = new Bundle();
    66.     localBundle.putStringArrayList("key_active_method_names", localArrayList);
    67.     return localBundle;
    68.   }
    69.  
    70.   public int getFaceRecognized()
    71.   {
    72.     return this.faceRecognized;
    73.   }
    74.  
    75.   public int getGazeAngle()
    76.   {
    77.     return this.gazeAngle;
    78.   }
    79.  
    80.   public int getLeftEyeBlinkDegree()
    81.   {
    82.     return this.leyeBlink;
    83.   }
    84.  
    85.   public int getLeftRightDirection()
    86.   {
    87.     return this.leftrightDir;
    88.   }
    89.  
    90.   public int getLeftRightGazeDegree()
    91.   {
    92.     return this.leftrightGaze;
    93.   }
    94.  
    95.   public Bundle getQCFaceInfo()
    96.   {
    97.     Bundle localBundle = new Bundle();
    98.     localBundle.putInt("smileValue", this.smileDegree);
    99.     localBundle.putInt("leftEyeClosedValue", this.leyeBlink);
    100.     localBundle.putInt("rightEyeClosedValue", this.reyeBlink);
    101.     localBundle.putInt("facePitchDegree", this.updownDir);
    102.     localBundle.putInt("faceYawDegree", this.leftrightDir);
    103.     localBundle.putInt("faceRollDegree", this.rollDir);
    104.     localBundle.putInt("gazeUpDownDegree", this.topbottomGaze);
    105.     localBundle.putInt("gazeLeftRightDegree", this.leftrightGaze);
    106.     localBundle.putInt("blinkDetected", this.blinkDetected);
    107.     localBundle.putInt("smileScore", this.smileScore);
    108.     localBundle.putInt("faceRecognized", this.faceRecognized);
    109.     return localBundle;
    110.   }
    111.  
    112.   public int getRightEyeBlinkDegree()
    113.   {
    114.     return this.reyeBlink;
    115.   }
    116.  
    117.   public int getRollDirection()
    118.   {
    119.     return this.rollDir;
    120.   }
    121.  
    122.   public int getSmileDegree()
    123.   {
    124.     return this.smileDegree;
    125.   }
    126.  
    127.   public int getSmileScore()
    128.   {
    129.     return this.smileScore;
    130.   }
    131.  
    132.   public int getTopBottomGazeDegree()
    133.   {
    134.     return this.topbottomGaze;
    135.   }
    136.  
    137.   public int getUpDownDirection()
    138.   {
    139.     return this.updownDir;
    140.   }
    141. }
    Code (Java):
    1. package com.qualcomm.camera;
    2.  
    3. import android.os.Bundle;
    4. import com.qualcomm.snapdragon.util.QCCapabilitiesInterface;
    5. import java.util.ArrayList;
    6.  
    7. public class QCParameters
    8.   implements QCCapabilitiesInterface
    9. {
    10.   private static String KEY_FRAME_CAPTURE_KEYS = "key_frame_capture_keys";
    11.   public static final String KEY_NUM_SNAPS_PER_SHUTTER = "num-snaps-per-shutter";
    12.   public static final String KEY_ZSL_CAMERA_MODE = "camera-mode";
    13.   public static final String KEY_ZSL_PREFERENCE_KEY = "pref_camera_zsl_key";
    14.  
    15.   public Bundle getCapabilities()
    16.   {
    17.     Bundle localBundle1 = new Bundle();
    18.     ArrayList localArrayList = new ArrayList();
    19.     localArrayList.add("KEY_ZSL_CAMERA_MODE");
    20.     localArrayList.add("KEY_ZSL_PREFERENCE_KEY");
    21.     localArrayList.add("KEY_NUM_SNAPS_PER_SHUTTER");
    22.     localBundle1.putStringArrayList(KEY_FRAME_CAPTURE_KEYS, localArrayList);
    23.     Bundle localBundle2 = new Bundle();
    24.     localBundle2.putBundle("key_constant_field_values", localBundle1);
    25.     return localBundle2;
    26.   }
    27. }
    Bwahahaha, hit a gold mine in decompiling framework.jar... for example:

    Code (Java):
    1.  
    2. package android.telephony;
    3.  
    4. import android.content.res.Resources;
    5. import android.util.SparseIntArray;
    6. import com.android.internal.telephony.cdma.sms.UserData;
    7. import com.android.internal.telephony.lgeAutoProfiling;
    8. import java.util.HashMap;
    9.  
    10. public class SprintSegmentProcess
    11. {
    12.   public static final char SEG_DASH = '-';
    13.   public static final char SEG_SPACE = ' ';
    14.   private int EmailLen;
    15.   public int codeUnitSize;
    16.   private StringBuilder mSegmentedString = new StringBuilder();
    17.   private final String[] mSmileyTexts;
    18.   private HashMap<Integer, Integer> msegmentPosInfo;
    19.   private int segInsertPos = 0;
    20.   private int textLen;
    21.  
    22.   SprintSegmentProcess(int paramInt1, int paramInt2)
    23.   {
    24.     this.textLen = paramInt1;
    25.     this.EmailLen = paramInt2;
    26.     this.msegmentPosInfo = new HashMap();
    27.     this.mSmileyTexts = Resources.getSystem().getStringArray(17235977);
    28.   }
    29.  
    30.   private int checkBoundSmiley(int paramInt)
    31.   {
    32.     for (int i = -1 + this.mSmileyTexts.length; i >= 0; i--)
    33.     {
    34.       int j = this.mSmileyTexts[i].length();
    35.       for (int k = 1; k < j; k++)
    36.       {
    37.         int m = paramInt - k;
    38.         if ((this.mSegmentedString.length() >= m + j) && (this.mSegmentedString.subSequence(m, m + j).equals(this.mSmileyTexts[i])))
    39.           return paramInt - k;
    40.       }
    41.     }
    42.     return paramInt;
    43.   }
    44.  
    45.   public static int countAsciiSeptets(CharSequence paramCharSequence)
    46.   {
    47.     int i = paramCharSequence.length();
    48.     for (int j = 0; ; j++)
    49.       if (j < i)
    50.       {
    51.         if (UserData.charToAscii.get(paramCharSequence.charAt(j), -1) == -1)
    52.           i = -1;
    53.       }
    54.       else
    55.         return i;
    56.   }
    57.  
    58.   private boolean findSegmentIndPosition(int paramInt)
    59.   {
    60.     if (paramInt == 0)
    61.     {
    62.       this.segInsertPos = 0;
    63.       this.msegmentPosInfo.put(Integer.valueOf(paramInt), Integer.valueOf(this.segInsertPos));
    64.       return true;
    65.     }
    66.     int i = this.segInsertPos + getMaxCharacterSegment() - getMaxSegment();
    67.     int j = this.segInsertPos;
    68.     if (this.mSegmentedString.charAt(i) == ' ')
    69.       this.segInsertPos = i;
    70.     while (true)
    71.     {
    72.       this.msegmentPosInfo.put(Integer.valueOf(paramInt), Integer.valueOf(this.segInsertPos));
    73.       if (this.textLen - this.segInsertPos > getMaxCharacterSegment())
    74.         break;
    75.       return false;
    76.       for (int k = i - 1; ; k--)
    77.       {
    78.         if (k > j)
    79.         {
    80.           if (this.mSegmentedString.charAt(k) != ' ')
    81.             continue;
    82.           if (paramInt != 1)
    83.             break label178;
    84.           if (this.mSegmentedString.charAt(k - 1) != '-')
    85.             break label172;
    86.           k = j;
    87.         }
    88.         while (true)
    89.         {
    90.           if (k != j)
    91.             break label190;
    92.           this.segInsertPos = checkBoundSmiley(i);
    93.           break;
    94.           label172: k++;
    95.           continue;
    96.           label178: k++;
    97.         }
    98.       }
    99.       label190: this.segInsertPos = k;
    100.     }
    101.   }
    102.  
    103.   private void removeSegmentInfoAll()
    104.   {
    105.     if (this.msegmentPosInfo == null)
    106.       throw new NullPointerException();
    107.     for (int i = -1 + this.msegmentPosInfo.size(); i >= 0; i--)
    108.       this.msegmentPosInfo.remove(Integer.valueOf(i));
    109.   }
    110.  
    111.   public int calcNeedTotalSegment(String paramString)
    112.   {
    113.     this.segInsertPos = 0;
    114.     this.mSegmentedString.delete(0, this.mSegmentedString.length());
    115.     this.mSegmentedString.append(paramString);
    116.     for (int i = 0; ; i++)
    117.     {
    118.       if (i > -1 + getMaxSegment());
    119.       while (!findSegmentIndPosition(i))
    120.       {
    121.         if (i != getMaxSegment())
    122.           break;
    123.         return i;
    124.       }
    125.     }
    126.     return i + 1;
    127.   }
    128.  
    129.   public int getMaxCharacterCountPaginationIndicator()
    130.   {
    131.     if (lgeAutoProfiling.isSupportFeature(null, "remove_pagination_indicator"))
    132.       return 0;
    133.     return 8;
    134.   }
    135.  
    136.   public int getMaxCharacterSegment()
    137.   {
    138.     if (this.EmailLen > 0)
    139.       return segmentLimitLen() - (1 + this.EmailLen);
    140.     return segmentLimitLen();
    141.   }
    142.  
    143.   public int getMaxSegment()
    144.   {
    145.     return 10;
    146.   }
    147.  
    148.   public String makeSegmentString(int paramInt1, int paramInt2)
    149.   {
    150.     return "(" + String.valueOf(paramInt1) + "/" + String.valueOf(paramInt2) + ") ";
    151.   }
    152.  
    153.   public int msegmentPosInfoGet(int paramInt)
    154.   {
    155.     return ((Integer)this.msegmentPosInfo.get(Integer.valueOf(paramInt))).intValue();
    156.   }
    157.  
    158.   public int msegmentPosInfoSize()
    159.   {
    160.     return this.msegmentPosInfo.size();
    161.   }
    162.  
    163.   public boolean needSprintSegmentProcess()
    164.   {
    165.     int i = segmentLimitLen();
    166.     if (this.textLen == 0);
    167.     while (true)
    168.     {
    169.       return false;
    170.       int j = this.textLen;
    171.       if (this.EmailLen > 0);
    172.       for (int k = 1 + this.EmailLen; k + j > i; k = 0)
    173.         return true;
    174.     }
    175.   }
    176.  
    177.   public int segmentLimitLen()
    178.   {
    179.     if (this.codeUnitSize == 1)
    180.       return 160;
    181.     return 70;
    182.   }
    183. }



    BIGEDIT:

    Framework2.jar is the one with the LG RIL information. This should help big time with the telephony issues we have been having. Might be able to implement in much the same way CM team did with samsung RIL and HTC RIL. Heres a snippet of what I found:

    Code (Java):
    1. package com.android.internal.telephony;
    2.  
    3. import android.content.Context;
    4. import android.os.Message;
    5. import android.os.Parcel;
    6. import android.os.SystemProperties;
    7. import android.util.Log;
    8.  
    9. public final class LgeRIL extends RIL
    10. {
    11.   private static final boolean DBG = false;
    12.   public static final boolean FEATURE_LGRIL_API = false;
    13.   static final String LOG_TAG = "RILJLge";
    14.  
    15.   public LgeRIL(Context paramContext, int paramInt1, int paramInt2, String paramString)
    16.   {
    17.     super(paramContext, paramInt1, paramInt2, null, paramString);
    18.   }
    19.  
    20.   private void dLogD(String paramString)
    21.   {
    22.     if (DBG == true)
    23.       Log.d("LGSmartcard", "[RILJLge] " + paramString);
    24.   }
    25.  
    26.   public static LgeRIL getLgeRIL(CommandsInterface paramCommandsInterface)
    27.   {
    28.     if ((paramCommandsInterface instanceof LgeRIL))
    29.       return (LgeRIL)paramCommandsInterface;
    30.     return null;
    31.   }
    32.  
    33.   static String requestToStringEx(int paramInt)
    34.   {
    35.     switch (paramInt)
    36.     {
    37.     default:
    38.       return null;
    39.     case 356:
    40.       return "SC_IS_AVAILABLE_SC_ON_SIM";
    41.     case 351:
    42.       return "RIL_REQUEST_SIM_APDU";
    43.     case 352:
    44.       return "RIL_REQUEST_SIM_OPEN_CHANNEL";
    45.     case 353:
    46.       return "RIL_REQUEST_SIM_CLOSE_CHANNEL";
    47.     case 354:
    48.       return "RIL_REQUEST_SIM_TRANSMIT_CHANNEL";
    49.     case 355:
    50.     }
    51.     return "RIL_REQUEST_SIM_GET_ATR";
    52.   }
    53.  
    54.   private Object responseLGSmartcardIccIo(Parcel paramParcel)
    55.   {
    56.     String[] arrayOfString = new String[3];
    57.     int i = paramParcel.readInt();
    58.     int j = paramParcel.readInt();
    59.     String str = paramParcel.readString();
    60.     dLogD("< responseLGSmartcardIccIo:  0x" + Integer.toHexString(i) + " 0x" + Integer.toHexString(j) + " " + str);
    61.     arrayOfString[0] = Integer.toString(i);
    62.     arrayOfString[1] = Integer.toString(j);
    63.     arrayOfString[2] = str;
    64.     return arrayOfString;
    65.   }
    66.  
    67.   static String responseToStringEx(int paramInt)
    68.   {
    69.     return null;
    70.   }
    71.  
    72.   protected boolean enableSmartcardLog(RILRequest paramRILRequest)
    73.   {
    74.     if ((paramRILRequest.mRequest < 351) || (paramRILRequest.mRequest > 352));
    75.     while (DBG)
    76.       return true;
    77.     return false;
    78.   }
    79.  
    80.   public void iccCloseChannel(int paramInt, Message paramMessage)
    81.   {
    82.     if (FEATURE_LGRIL_API == true)
    83.     {
    84.       lgeCloseLogicalChannel(paramInt, paramMessage);
    85.       return;
    86.     }
    87.     RILRequest localRILRequest = RILRequest.obtain(353, paramMessage);
    88.     localRILRequest.mp.writeInt(1);
    89.     localRILRequest.mp.writeInt(paramInt);
    90.     dLogD(localRILRequest.serialString() + "> iccCloseChannel: " + RIL.requestToString(localRILRequest.mRequest) + " " + paramInt);
    91.     sendEx(localRILRequest);
    92.   }
    93.  
    94.   public void iccExchangeAPDU(int paramInt1, int paramInt2, int paramInt3, int paramInt4, int paramInt5, int paramInt6, String paramString, Message paramMessage)
    95.   {
    96.     if (FEATURE_LGRIL_API == true)
    97.     {
    98.       if (paramInt3 == 0)
    99.       {
    100.         lgeSCTransmitBasic(paramInt1, paramInt2, paramInt4, paramInt5, paramInt6, paramString, paramMessage);
    101.         return;
    102.       }
    103.       lgeSCTransmitChannel(paramInt1, paramInt2, paramInt3, paramInt4, paramInt5, paramInt6, paramString, paramMessage);
    104.       return;
    105.     }
    106.     if (paramInt3 == 0);
    107.     for (RILRequest localRILRequest = RILRequest.obtain(351, paramMessage); ; localRILRequest = RILRequest.obtain(354, paramMessage))
    108.     {
    109.       localRILRequest.mp.writeInt(paramInt1);
    110.       localRILRequest.mp.writeInt(paramInt2);
    111.       localRILRequest.mp.writeInt(paramInt3);
    112.       localRILRequest.mp.writeString(null);
    113.       localRILRequest.mp.writeInt(paramInt4);
    114.       localRILRequest.mp.writeInt(paramInt5);
    115.       localRILRequest.mp.writeInt(paramInt6);
    116.       localRILRequest.mp.writeString(paramString);
    117.       localRILRequest.mp.writeString(null);
    118.       dLogD(localRILRequest.serialString() + "> iccExchangeAPDU: " + RIL.requestToString(localRILRequest.mRequest) + " 0x" + Integer.toHexString(paramInt1) + " 0x" + Integer.toHexString(paramInt2) + " 0x" + Integer.toHexString(paramInt3) + " " + paramInt4 + "," + paramInt5 + "," + paramInt6);
    119.       sendEx(localRILRequest);
    120.       return;
    121.     }
    122.   }
    123.  
    124.   public void iccGetATR(Message paramMessage)
    125.   {
    126.     if (FEATURE_LGRIL_API == true)
    127.     {
    128.       lgeSCGetATR(paramMessage);
    129.       return;
    130.     }
    131.     RILRequest localRILRequest = RILRequest.obtain(355, paramMessage);
    132.     localRILRequest.mp.writeInt(1);
    133.     localRILRequest.mp.writeInt(0);
    134.     dLogD(localRILRequest.serialString() + "> iccGetATR: " + RIL.requestToString(localRILRequest.mRequest));
    135.     sendEx(localRILRequest);
    136.   }
    137.  
    138.   public void iccOpenChannel(String paramString, Message paramMessage)
    139.   {
    140.     if (FEATURE_LGRIL_API == true)
    141.     {
    142.       lgeSCOpenLogicalChannel(paramString, paramMessage);
    143.       return;
    144.     }
    145.     RILRequest localRILRequest = RILRequest.obtain(352, paramMessage);
    146.     localRILRequest.mp.writeString(paramString);
    147.     dLogD(localRILRequest.serialString() + "> iccOpenChannel: " + RIL.requestToString(localRILRequest.mRequest) + " " + paramString);
    148.     sendEx(localRILRequest);
    149.   }
    150.  
    151.   public void iccisAvailableSCOnSIM(Message paramMessage)
    152.   {
    153.     RILRequest localRILRequest = RILRequest.obtain(356, paramMessage);
    154.     dLogD(localRILRequest.serialString() + "> iccisAvailableSCOnSIM: " + RIL.requestToString(localRILRequest.mRequest));
    155.     sendEx(localRILRequest);
    156.   }
    157.  
    158.   public void lgeCloseLogicalChannel(int paramInt, Message paramMessage)
    159.   {
    160.     RILRequest localRILRequest = RILRequest.obtain(353, paramMessage);
    161.     if (DBG)
    162.       riljLog(localRILRequest.serialString() + "> lgeCloseLogicalChannel: " + RIL.requestToString(localRILRequest.mRequest) + paramInt);
    163.     localRILRequest.mp.writeInt(1);
    164.     localRILRequest.mp.writeInt(paramInt);
    165.     sendEx(localRILRequest);
    166.   }
    167.  
    168.   public void lgeSCGetATR(Message paramMessage)
    169.   {
    170.     RILRequest localRILRequest = RILRequest.obtain(355, paramMessage);
    171.     localRILRequest.mp.writeInt(1);
    172.     localRILRequest.mp.writeInt(0);
    173.     if (DBG)
    174.       riljLog(localRILRequest.serialString() + "> lgeSCGetATR: " + requestToString(localRILRequest.mRequest));
    175.     sendEx(localRILRequest);
    176.   }
    177.  
    178.   public void lgeSCOpenLogicalChannel(String paramString, Message paramMessage)
    179.   {
    180.     RILRequest localRILRequest = RILRequest.obtain(352, paramMessage);
    181.     localRILRequest.mp.writeInt(1);
    182.     localRILRequest.mp.writeString(paramString);
    183.     if (DBG)
    184.       riljLog(localRILRequest.serialString() + "> lgeSCOpenLogicalChannel: " + RIL.requestToString(localRILRequest.mRequest) + paramString);
    185.     sendEx(localRILRequest);
    186.   }
    187.  
    188.   public void lgeSCTransmitBasic(int paramInt1, int paramInt2, int paramInt3, int paramInt4, int paramInt5, String paramString, Message paramMessage)
    189.   {
    190.     RILRequest localRILRequest = RILRequest.obtain(351, paramMessage);
    191.     if (DBG)
    192.       riljLog(localRILRequest.serialString() + "> lgeSCTransmitBasic: " + requestToString(localRILRequest.mRequest) + " 0x" + Integer.toHexString(paramInt1) + " 0x" + Integer.toHexString(paramInt2) + " " + paramInt3 + "," + paramInt4 + "," + paramInt5);
    193.     localRILRequest.mp.writeInt(paramInt1);
    194.     localRILRequest.mp.writeInt(paramInt2);
    195.     localRILRequest.mp.writeInt(paramInt3);
    196.     localRILRequest.mp.writeInt(paramInt4);
    197.     localRILRequest.mp.writeInt(paramInt5);
    198.     localRILRequest.mp.writeString(paramString);
    199.     sendEx(localRILRequest);
    200.   }
    201.  
    202.   public void lgeSCTransmitChannel(int paramInt1, int paramInt2, int paramInt3, int paramInt4, int paramInt5, int paramInt6, String paramString, Message paramMessage)
    203.   {
    204.     RILRequest localRILRequest = RILRequest.obtain(354, paramMessage);
    205.     if (DBG)
    206.       riljLog(localRILRequest.serialString() + "> lgeSCTransmitChannel: " + requestToString(localRILRequest.mRequest) + " 0x" + Integer.toHexString(paramInt1) + " 0x" + Integer.toHexString(paramInt2) + " 0x" + Integer.toHexString(paramInt3) + " " + paramInt4 + "," + paramInt5 + "," + paramInt6);
    207.     localRILRequest.mp.writeInt(paramInt1);
    208.     localRILRequest.mp.writeInt(paramInt2);
    209.     localRILRequest.mp.writeInt(paramInt3);
    210.     localRILRequest.mp.writeInt(paramInt4);
    211.     localRILRequest.mp.writeInt(paramInt5);
    212.     localRILRequest.mp.writeInt(paramInt6);
    213.     localRILRequest.mp.writeString(paramString);
    214.     sendEx(localRILRequest);
    215.   }
    216.  
    217.   protected Object processSolicitedEx(RILRequest paramRILRequest, Parcel paramParcel)
    218.   {
    219.     switch (paramRILRequest.mRequest)
    220.     {
    221.     default:
    222.       riljLog("calling processsolicited of RIL from LgeRIL");
    223.       return super.processSolicitedEx(paramRILRequest, paramParcel);
    224.     case 353:
    225.       return responseVoidEx(paramParcel);
    226.     case 352:
    227.       return responseLGSmartcardResult(paramParcel);
    228.     case 351:
    229.       return responseLGSmartcardIccIo(paramParcel);
    230.     case 354:
    231.       return responseLGSmartcardIccIo(paramParcel);
    232.     case 355:
    233.       return responseStringEx(paramParcel);
    234.     case 356:
    235.     }
    236.     return responseIntsEx(paramParcel);
    237.   }
    238.  
    239.   protected void processUnsolicitedEx(Parcel paramParcel, int paramInt)
    240.   {
    241.     super.processUnsolicitedEx(paramParcel, paramInt);
    242.   }
    243.  
    244.   public Object responseLGSmartcardResult(Parcel paramParcel)
    245.   {
    246.     String[] arrayOfString = new String[2];
    247.     int i = paramParcel.readInt();
    248.     arrayOfString[0] = Integer.toString(paramParcel.readInt());
    249.     if (paramParcel.dataAvail() > 0);
    250.     for (String str = paramParcel.readString(); ; str = null)
    251.     {
    252.       arrayOfString[1] = str;
    253.       dLogD("responseLGSmartcardResult::Type(1-int[])(2-int,String)::" + i);
    254.       dLogD("responseLGSmartcardResult::channel id::" + arrayOfString[0]);
    255.       dLogD("responseLGSmartcardResult::response::" + arrayOfString[1]);
    256.       return arrayOfString;
    257.     }
    258.   }
    259. }
    Code (Java):
    1. package com.android.internal.telephony;
    2.  
    3. public abstract interface LgeRILConstants
    4. {
    5.   public static final int INVALID_PARAMETER = 29;
    6.   public static final int MISSING_RESOURCE = 27;
    7.   public static final int NO_SUCH_ELEMENT = 28;
    8.   public static final int RELB = 16;
    9.   public static final int RIL_ERRNO_LGE_BASE = 16;
    10.   public static final int RIL_ERRNO_SMARTCARD_BASE = 27;
    11.   public static final int RIL_REQUEST_LGE_BASE = 109;
    12.   public static final int RIL_REQUEST_LGE_CLOSE_LOGICAL_CHANNEL = 353;
    13.   public static final int RIL_REQUEST_LGE_IS_AVAILABLE_SC_ON_SIM = 356;
    14.   public static final int RIL_REQUEST_LGE_SC_SIM_GET_ATR = 355;
    15.   public static final int RIL_REQUEST_LGE_SC_SIM_OPEN_LOGICAL_CHANNEL = 352;
    16.   public static final int RIL_REQUEST_LGE_SC_SIM_TRANSMIT_BASIC = 351;
    17.   public static final int RIL_REQUEST_LGE_SC_SIM_TRANSMIT_CHANNEL = 354;
    18.   public static final int RIL_UNSOL_LGE_BASE = 1036;
    19.   public static final int RRLB = 109;
    20.   public static final int RULB = 1036;
    21. }




    Heres a link to my dropbox, has some other framework jars decompiled in there. All in java format, you can use eclipse ide to check em out, or just use gedit in linux:

    https://www.dropbox.com/sh/1927yzqsh0lshh7/AABFS625Ir3_dySw9DEM0PE2a?dl=0


    Hopefully this helps in getting cm off the ground....
     
    #89 QuietStorm1785, Dec 30, 2014
    Last edited: Dec 30, 2014
    chevanlol360 likes this.
  15. chevanlol360

    chevanlol360 Android Expert
    Thread Starter
    Rank:
    None
    Points:
    423
    Posts:
    2,828
    Joined:
    Oct 28, 2011

    Oct 28, 2011
    2,828
    2,184
    423
    Male
    tech videos/ Dev'ing
    new york