Merge change 2957 into donut
* changes: Allow response payload on RIL_REQUEST error
This commit is contained in:
@@ -165,7 +165,7 @@ class RILRequest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
onError(int error) {
|
onError(int error, Object ret) {
|
||||||
CommandException ex;
|
CommandException ex;
|
||||||
|
|
||||||
ex = CommandException.fromRilErrno(error);
|
ex = CommandException.fromRilErrno(error);
|
||||||
@@ -175,7 +175,7 @@ class RILRequest {
|
|||||||
+ " error: " + ex);
|
+ " error: " + ex);
|
||||||
|
|
||||||
if (mResult != null) {
|
if (mResult != null) {
|
||||||
AsyncResult.forMessage(mResult, null, ex);
|
AsyncResult.forMessage(mResult, ret, ex);
|
||||||
mResult.sendToTarget();
|
mResult.sendToTarget();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -290,7 +290,7 @@ public final class RIL extends BaseCommands implements CommandsInterface {
|
|||||||
s = mSocket;
|
s = mSocket;
|
||||||
|
|
||||||
if (s == null) {
|
if (s == null) {
|
||||||
rr.onError(RADIO_NOT_AVAILABLE);
|
rr.onError(RADIO_NOT_AVAILABLE, null);
|
||||||
rr.release();
|
rr.release();
|
||||||
mRequestMessagesPending--;
|
mRequestMessagesPending--;
|
||||||
alreadySubtracted = true;
|
alreadySubtracted = true;
|
||||||
@@ -331,7 +331,7 @@ public final class RIL extends BaseCommands implements CommandsInterface {
|
|||||||
// make sure this request has not already been handled,
|
// make sure this request has not already been handled,
|
||||||
// eg, if RILReceiver cleared the list.
|
// eg, if RILReceiver cleared the list.
|
||||||
if (req != null || !alreadySubtracted) {
|
if (req != null || !alreadySubtracted) {
|
||||||
rr.onError(RADIO_NOT_AVAILABLE);
|
rr.onError(RADIO_NOT_AVAILABLE, null);
|
||||||
rr.release();
|
rr.release();
|
||||||
}
|
}
|
||||||
} catch (RuntimeException exc) {
|
} catch (RuntimeException exc) {
|
||||||
@@ -340,7 +340,7 @@ public final class RIL extends BaseCommands implements CommandsInterface {
|
|||||||
// make sure this request has not already been handled,
|
// make sure this request has not already been handled,
|
||||||
// eg, if RILReceiver cleared the list.
|
// eg, if RILReceiver cleared the list.
|
||||||
if (req != null || !alreadySubtracted) {
|
if (req != null || !alreadySubtracted) {
|
||||||
rr.onError(GENERIC_FAILURE);
|
rr.onError(GENERIC_FAILURE, null);
|
||||||
rr.release();
|
rr.release();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -545,7 +545,7 @@ public final class RIL extends BaseCommands implements CommandsInterface {
|
|||||||
synchronized (mRequestsList) {
|
synchronized (mRequestsList) {
|
||||||
for (int i = 0, sz = mRequestsList.size() ; i < sz ; i++) {
|
for (int i = 0, sz = mRequestsList.size() ; i < sz ; i++) {
|
||||||
RILRequest rr = mRequestsList.get(i);
|
RILRequest rr = mRequestsList.get(i);
|
||||||
rr.onError(RADIO_NOT_AVAILABLE);
|
rr.onError(RADIO_NOT_AVAILABLE, null);
|
||||||
rr.release();
|
rr.release();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1986,20 +1986,16 @@ public final class RIL extends BaseCommands implements CommandsInterface {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (error != 0) {
|
Object ret = null;
|
||||||
rr.onError(error);
|
|
||||||
rr.release();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Object ret;
|
if (error == 0 || p.dataAvail() > 0) {
|
||||||
|
// either command succeeds or command fails but with data payload
|
||||||
try {switch (rr.mRequest) {
|
try {switch (rr.mRequest) {
|
||||||
/*
|
/*
|
||||||
cat libs/telephony/ril_commands.h \
|
cat libs/telephony/ril_commands.h \
|
||||||
| egrep "^ *{RIL_" \
|
| egrep "^ *{RIL_" \
|
||||||
| sed -re 's/\{([^,]+),[^,]+,([^}]+).+/case \1: ret = \2(p); break;/'
|
| sed -re 's/\{([^,]+),[^,]+,([^}]+).+/case \1: ret = \2(p); break;/'
|
||||||
*/
|
*/
|
||||||
case RIL_REQUEST_GET_SIM_STATUS: ret = responseIccCardStatus(p); break;
|
case RIL_REQUEST_GET_SIM_STATUS: ret = responseIccCardStatus(p); break;
|
||||||
case RIL_REQUEST_ENTER_SIM_PIN: ret = responseVoid(p); break;
|
case RIL_REQUEST_ENTER_SIM_PIN: ret = responseVoid(p); break;
|
||||||
case RIL_REQUEST_ENTER_SIM_PUK: ret = responseVoid(p); break;
|
case RIL_REQUEST_ENTER_SIM_PUK: ret = responseVoid(p); break;
|
||||||
@@ -2104,17 +2100,24 @@ public final class RIL extends BaseCommands implements CommandsInterface {
|
|||||||
default:
|
default:
|
||||||
throw new RuntimeException("Unrecognized solicited response: " + rr.mRequest);
|
throw new RuntimeException("Unrecognized solicited response: " + rr.mRequest);
|
||||||
//break;
|
//break;
|
||||||
}} catch (Throwable tr) {
|
}} catch (Throwable tr) {
|
||||||
// Exceptions here usually mean invalid RIL responses
|
// Exceptions here usually mean invalid RIL responses
|
||||||
|
|
||||||
Log.w(LOG_TAG, rr.serialString() + "< "
|
Log.w(LOG_TAG, rr.serialString() + "< "
|
||||||
+ requestToString(rr.mRequest)
|
+ requestToString(rr.mRequest)
|
||||||
+ " exception, possible invalid RIL response", tr);
|
+ " exception, possible invalid RIL response", tr);
|
||||||
|
|
||||||
if (rr.mResult != null) {
|
if (rr.mResult != null) {
|
||||||
AsyncResult.forMessage(rr.mResult, null, tr);
|
AsyncResult.forMessage(rr.mResult, null, tr);
|
||||||
rr.mResult.sendToTarget();
|
rr.mResult.sendToTarget();
|
||||||
|
}
|
||||||
|
rr.release();
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (error != 0) {
|
||||||
|
rr.onError(error, ret);
|
||||||
rr.release();
|
rr.release();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user