summaryrefslogtreecommitdiffstats
path: root/ril
diff options
context:
space:
mode:
authorHoward Su <howard0su@gmail.com>2015-04-12 10:25:05 +0200
committerDaniel Hillenbrand <codeworkx@cyanogenmod.org>2015-04-12 10:50:31 +0200
commitbd82ef1fa71307d30d97ea5e4e10aa2006247b7a (patch)
treec6dbcdb703956c80e35f84e005bfadb98ac9aad5 /ril
parenteef440e4ab77f3bf3564ea9f8d4429cfec9f379e (diff)
downloadandroid_hardware_samsung-bd82ef1fa71307d30d97ea5e4e10aa2006247b7a.tar.gz
android_hardware_samsung-bd82ef1fa71307d30d97ea5e4e10aa2006247b7a.tar.bz2
android_hardware_samsung-bd82ef1fa71307d30d97ea5e4e10aa2006247b7a.zip
libril: move samsung specific into seperate table, update to v11
Change-Id: I6c7121a30dbbf9edc9573b8f2dee308366bab9a1
Diffstat (limited to 'ril')
-rw-r--r--ril/libril/ril.cpp406
-rw-r--r--ril/libril/ril_commands.h57
-rw-r--r--ril/libril/ril_commands_vendor.h69
-rw-r--r--ril/libril/ril_unsol_commands.h8
-rw-r--r--ril/libril/ril_unsol_commands_vendor.h49
5 files changed, 475 insertions, 114 deletions
diff --git a/ril/libril/ril.cpp b/ril/libril/ril.cpp
index 43fed59..f08e367 100644
--- a/ril/libril/ril.cpp
+++ b/ril/libril/ril.cpp
@@ -118,9 +118,6 @@ namespace android {
#define appendPrintBuf(x...)
#endif
-#define MAX_RIL_SOL RIL_REQUEST_SET_UNSOL_CELL_INFO_LIST_RATE
-#define MAX_RIL_UNSOL RIL_UNSOL_CELL_INFO_LIST
-
enum WakeType {DONT_WAKE, WAKE_PARTIAL};
typedef struct {
@@ -171,6 +168,8 @@ extern "C" const char * rilSocketIdToString(RIL_SOCKET_ID socket_id);
extern "C"
char rild[MAX_SOCKET_NAME_LENGTH] = SOCKET_NAME_RIL;
+#define RIL_VENDOR_COMMANDS_OFFSET 10000
+
/*******************************************************************/
RIL_RadioFunctions s_callbacks = {0, NULL, NULL, NULL, NULL, NULL};
@@ -228,8 +227,10 @@ static RequestInfo *s_pendingRequests_socket4 = NULL;
static struct ril_event s_wake_timeout_event;
static struct ril_event s_debug_event;
+
static const struct timeval TIMEVAL_WAKE_TIMEOUT = {1,0};
+
static pthread_mutex_t s_startupMutex = PTHREAD_MUTEX_INITIALIZER;
static pthread_cond_t s_startupCond = PTHREAD_COND_INITIALIZER;
@@ -279,6 +280,7 @@ static void dispatchNVWriteItem(Parcel &p, RequestInfo *pRI);
static void dispatchUiccSubscripton(Parcel &p, RequestInfo *pRI);
static void dispatchSimAuthentication(Parcel &p, RequestInfo *pRI);
static void dispatchDataProfile(Parcel &p, RequestInfo *pRI);
+static void dispatchRadioCapability(Parcel &p, RequestInfo *pRI);
static int responseInts(Parcel &p, void *response, size_t responselen);
static int responseStrings(Parcel &p, void *response, size_t responselen);
static int responseStringsNetworks(Parcel &p, void *response, size_t responselen);
@@ -307,17 +309,21 @@ static int responseSimRefresh(Parcel &p, void *response, size_t responselen);
static int responseCellInfoList(Parcel &p, void *response, size_t responselen);
static int responseHardwareConfig(Parcel &p, void *response, size_t responselen);
static int responseDcRtInfo(Parcel &p, void *response, size_t responselen);
+static int responseRadioCapability(Parcel &p, void *response, size_t responselen);
+static int responseSSData(Parcel &p, void *response, size_t responselen);
static int decodeVoiceRadioTechnology (RIL_RadioState radioState);
static int decodeCdmaSubscriptionSource (RIL_RadioState radioState);
-static RIL_RadioState processRadioState(RIL_RadioState newRadioState, RIL_SOCKET_ID socket_id);
+static RIL_RadioState processRadioState(RIL_RadioState newRadioState);
+
+static bool isServiceTypeCfQuery(RIL_SsServiceType serType, RIL_SsRequestType reqType);
#ifdef RIL_SHLIB
#if defined(ANDROID_MULTI_SIM)
-extern "C" void RIL_onUnsolicitedResponse(int unsolResponse, const void *data,
+extern "C" void RIL_onUnsolicitedResponse(int unsolResponse, void *data,
size_t datalen, RIL_SOCKET_ID socket_id);
#else
-extern "C" void RIL_onUnsolicitedResponse(int unsolResponse, const void *data,
+extern "C" void RIL_onUnsolicitedResponse(int unsolResponse, void *data,
size_t datalen);
#endif
#endif
@@ -341,10 +347,18 @@ static CommandInfo s_commands[] = {
#include "ril_commands.h"
};
+static CommandInfo s_commands_v[] = {
+#include "ril_commands_vendor.h"
+};
+
static UnsolResponseInfo s_unsolResponses[] = {
#include "ril_unsol_commands.h"
};
+static UnsolResponseInfo s_unsolResponses_v[] = {
+#include "ril_unsol_commands_vendor.h"
+};
+
/* For older RILs that do not support new commands RIL_REQUEST_VOICE_RADIO_TECH and
RIL_UNSOL_VOICE_RADIO_TECH_CHANGED messages, decode the voice radio tech from
radio state message and store it. Every time there is a change in Radio State
@@ -384,6 +398,26 @@ strdupReadString(Parcel &p) {
return strndup16to8(s16, stringlen);
}
+static status_t
+readStringFromParcelInplace(Parcel &p, char *str, size_t maxLen) {
+ size_t s16Len;
+ const char16_t *s16;
+
+ s16 = p.readString16Inplace(&s16Len);
+ if (s16 == NULL) {
+ return NO_MEMORY;
+ }
+ size_t strLen = strnlen16to8(s16, s16Len);
+ if ((strLen + 1) > maxLen) {
+ return NO_MEMORY;
+ }
+ if (strncpy16to8(str, s16, strLen) == NULL) {
+ return NO_MEMORY;
+ } else {
+ return NO_ERROR;
+ }
+}
+
static void writeStringToParcel(Parcel &p, const char *s) {
char16_t *s16;
size_t s16_len;
@@ -433,11 +467,9 @@ issueLocalRequest(int request, void *data, int len, RIL_SOCKET_ID socket_id) {
pRI->local = 1;
pRI->token = 0xffffffff; // token is not used in this context
- /* Hack to include Samsung requests */
- if (request > 10000) {
- int index = request - 10000 + MAX_RIL_SOL;
- RLOGD("SAMSUNG: request=%d, index=%d", request, index);
- pRI->pCI = &(s_commands[index]);
+ /* Check vendor commands */
+ if (request > RIL_VENDOR_COMMANDS_OFFSET) {
+ pRI->pCI = &(s_commands_v[request - RIL_VENDOR_COMMANDS_OFFSET]);
} else {
pRI->pCI = &(s_commands[request]);
}
@@ -457,15 +489,15 @@ issueLocalRequest(int request, void *data, int len, RIL_SOCKET_ID socket_id) {
CALL_ONREQUEST(request, data, len, pRI, pRI->socket_id);
}
+
+
static int
processCommandBuffer(void *buffer, size_t buflen, RIL_SOCKET_ID socket_id) {
-
Parcel p;
status_t status;
int32_t request;
int32_t token;
RequestInfo *pRI;
-
int ret;
/* Hook for current context */
/* pendingRequestsMutextHook refer to &s_pendingRequestsMutex */
@@ -479,8 +511,6 @@ processCommandBuffer(void *buffer, size_t buflen, RIL_SOCKET_ID socket_id) {
status = p.readInt32(&request);
status = p.readInt32 (&token);
- RLOGD("SOCKET %s REQUEST: %s length:%d", rilSocketIdToString(socket_id), requestToString(request), buflen);
-
#if (SIM_COUNT >= 2)
if (socket_id == RIL_SOCKET_2) {
pendingRequestsMutexHook = &s_pendingRequestsMutex_socket2;
@@ -505,9 +535,20 @@ processCommandBuffer(void *buffer, size_t buflen, RIL_SOCKET_ID socket_id) {
return 0;
}
- if (request < 1 || request >= (int32_t)NUM_ELEMS(s_commands)) {
- Parcel pErr;
+ CommandInfo *pCI = NULL;
+ if (request > RIL_VENDOR_COMMANDS_OFFSET) {
+ int index = request - RIL_VENDOR_COMMANDS_OFFSET;
+ RLOGD("processCommandBuffer: samsung request=%d, index=%d",
+ request, index);
+ if (index < (int32_t)NUM_ELEMS(s_commands_v))
+ pCI = &(s_commands_v[index]);
+ } else {
+ if (request < (int32_t)NUM_ELEMS(s_commands))
+ pCI = &(s_commands[request]);
+ }
+ if (pCI == NULL) {
+ Parcel pErr;
RLOGE("unsupported request code %d token %d", request, token);
// FIXME this should perhaps return a response
pErr.writeInt32 (RESPONSE_SOLICITED);
@@ -521,17 +562,7 @@ processCommandBuffer(void *buffer, size_t buflen, RIL_SOCKET_ID socket_id) {
pRI = (RequestInfo *)calloc(1, sizeof(RequestInfo));
pRI->token = token;
-
- /* Hack to include Samsung requests */
- if (request > 10000) {
- int index = request - 10000 + MAX_RIL_SOL;
- RLOGD("processCommandBuffer: samsung request=%d, index=%d",
- request, index);
- pRI->pCI = &(s_commands[index]);
- } else {
- pRI->pCI = &(s_commands[request]);
- }
-
+ pRI->pCI = pCI;
pRI->socket_id = socket_id;
ret = pthread_mutex_lock(pendingRequestsMutexHook);
@@ -1026,6 +1057,7 @@ invalid:
return;
}
+
/**
* Callee expects const RIL_CallForwardInfo *
* Payload is:
@@ -2005,6 +2037,67 @@ invalid:
return;
}
+static void dispatchRadioCapability(Parcel &p, RequestInfo *pRI){
+ RIL_RadioCapability rc;
+ int32_t t;
+ status_t status;
+
+ memset (&rc, 0, sizeof(RIL_RadioCapability));
+
+ status = p.readInt32(&t);
+ rc.version = (int)t;
+ if (status != NO_ERROR) {
+ goto invalid;
+ }
+
+ status = p.readInt32(&t);
+ rc.session= (int)t;
+ if (status != NO_ERROR) {
+ goto invalid;
+ }
+
+ status = p.readInt32(&t);
+ rc.phase= (int)t;
+ if (status != NO_ERROR) {
+ goto invalid;
+ }
+
+ status = p.readInt32(&t);
+ rc.rat = (int)t;
+ if (status != NO_ERROR) {
+ goto invalid;
+ }
+
+ status = readStringFromParcelInplace(p, rc.logicalModemUuid, sizeof(rc.logicalModemUuid));
+ if (status != NO_ERROR) {
+ goto invalid;
+ }
+
+ status = p.readInt32(&t);
+ rc.status = (int)t;
+
+ if (status != NO_ERROR) {
+ goto invalid;
+ }
+
+ startRequest;
+ appendPrintBuf("%s [version:%d, session:%d, phase:%d, rat:%d, \
+ logicalModemUuid:%s, status:%d", printBuf, rc.version, rc.session
+ rc.phase, rc.rat, rc.logicalModemUuid, rc.session);
+
+ closeRequest;
+ printRequest(pRI->token, pRI->pCI->requestNumber);
+
+ CALL_ONREQUEST(pRI->pCI->requestNumber,
+ &rc,
+ sizeof(RIL_RadioCapability),
+ pRI, pRI->socket_id);
+ return;
+invalid:
+ invalidCommandBlock(pRI);
+ return;
+}
+
static int
blockingWrite(int fd, const void *buffer, size_t len) {
size_t writeOffset = 0;
@@ -2062,6 +2155,13 @@ sendResponseRaw (const void *data, size_t dataSize, RIL_SOCKET_ID socket_id) {
return -1;
}
+ if (dataSize > MAX_COMMAND_BYTES) {
+ RLOGE("RIL: packet larger than %u (%u)",
+ MAX_COMMAND_BYTES, (unsigned int )dataSize);
+
+ return -1;
+ }
+
pthread_mutex_lock(writeMutexHook);
header = htonl(dataSize);
@@ -2174,6 +2274,7 @@ static int responseStrings(Parcel &p, void *response, size_t responselen, bool n
return 0;
}
+
/**
* NULL strings are accepted
* FIXME currently ignores responselen
@@ -2395,36 +2496,86 @@ static int responseDataCallListV6(Parcel &p, void *response, size_t responselen)
return 0;
}
+static int responseDataCallListV9(Parcel &p, void *response, size_t responselen)
+{
+ if (response == NULL && responselen != 0) {
+ RLOGE("invalid response: NULL");
+ return RIL_ERRNO_INVALID_RESPONSE;
+ }
+
+ if (responselen % sizeof(RIL_Data_Call_Response_v9) != 0) {
+ RLOGE("responseDataCallListV9: invalid response length %d expected multiple of %d",
+ (int)responselen, (int)sizeof(RIL_Data_Call_Response_v9));
+ return RIL_ERRNO_INVALID_RESPONSE;
+ }
+
+ // Write version
+ p.writeInt32(10);
+
+ int num = responselen / sizeof(RIL_Data_Call_Response_v9);
+ p.writeInt32(num);
+
+ RIL_Data_Call_Response_v9 *p_cur = (RIL_Data_Call_Response_v9 *) response;
+ startResponse;
+ int i;
+ for (i = 0; i < num; i++) {
+ p.writeInt32((int)p_cur[i].status);
+ p.writeInt32(p_cur[i].suggestedRetryTime);
+ p.writeInt32(p_cur[i].cid);
+ p.writeInt32(p_cur[i].active);
+ writeStringToParcel(p, p_cur[i].type);
+ writeStringToParcel(p, p_cur[i].ifname);
+ writeStringToParcel(p, p_cur[i].addresses);
+ writeStringToParcel(p, p_cur[i].dnses);
+ writeStringToParcel(p, p_cur[i].gateways);
+ writeStringToParcel(p, p_cur[i].pcscf);
+ appendPrintBuf("%s[status=%d,retry=%d,cid=%d,%s,%s,%s,%s,%s,%s,%s],", printBuf,
+ p_cur[i].status,
+ p_cur[i].suggestedRetryTime,
+ p_cur[i].cid,
+ (p_cur[i].active==0)?"down":"up",
+ (char*)p_cur[i].type,
+ (char*)p_cur[i].ifname,
+ (char*)p_cur[i].addresses,
+ (char*)p_cur[i].dnses,
+ (char*)p_cur[i].gateways,
+ (char*)p_cur[i].pcscf);
+ }
+ removeLastChar;
+ closeResponse;
+
+ return 0;
+}
+
+
static int responseDataCallList(Parcel &p, void *response, size_t responselen)
{
if (s_callbacks.version < 5) {
RLOGD("responseDataCallList: v4");
return responseDataCallListV4(p, response, responselen);
+ } else if (responselen % sizeof(RIL_Data_Call_Response_v6) == 0) {
+ return responseDataCallListV6(p, response, responselen);
+ } else if (responselen % sizeof(RIL_Data_Call_Response_v9) == 0) {
+ return responseDataCallListV9(p, response, responselen);
} else {
if (response == NULL && responselen != 0) {
RLOGE("invalid response: NULL");
return RIL_ERRNO_INVALID_RESPONSE;
}
- // Support v6 or v9 with new rils
- if (responselen % sizeof(RIL_Data_Call_Response_v6) == 0) {
- RLOGD("responseDataCallList: v6");
- return responseDataCallListV6(p, response, responselen);
- }
-
- if (responselen % sizeof(RIL_Data_Call_Response_v9) != 0) {
- RLOGE("responseDataCallList: invalid response length %d expected multiple of %d",
- (int)responselen, (int)sizeof(RIL_Data_Call_Response_v9));
+ if (responselen % sizeof(RIL_Data_Call_Response_v11) != 0) {
+ RLOGE("invalid response length %d expected multiple of %d",
+ (int)responselen, (int)sizeof(RIL_Data_Call_Response_v11));
return RIL_ERRNO_INVALID_RESPONSE;
}
// Write version
- p.writeInt32(10);
+ p.writeInt32(11);
- int num = responselen / sizeof(RIL_Data_Call_Response_v9);
+ int num = responselen / sizeof(RIL_Data_Call_Response_v11);
p.writeInt32(num);
- RIL_Data_Call_Response_v9 *p_cur = (RIL_Data_Call_Response_v9 *) response;
+ RIL_Data_Call_Response_v11 *p_cur = (RIL_Data_Call_Response_v11 *) response;
startResponse;
int i;
for (i = 0; i < num; i++) {
@@ -2438,7 +2589,8 @@ static int responseDataCallList(Parcel &p, void *response, size_t responselen)
writeStringToParcel(p, p_cur[i].dnses);
writeStringToParcel(p, p_cur[i].gateways);
writeStringToParcel(p, p_cur[i].pcscf);
- appendPrintBuf("%s[status=%d,retry=%d,cid=%d,%s,%s,%s,%s,%s,%s,%s],", printBuf,
+ p.writeInt32(p_cur[i].mtu);
+ appendPrintBuf("%s[status=%d,retry=%d,cid=%d,%s,%s,%s,%s,%s,%s,%s,mtu=%d],", printBuf,
p_cur[i].status,
p_cur[i].suggestedRetryTime,
p_cur[i].cid,
@@ -2448,7 +2600,8 @@ static int responseDataCallList(Parcel &p, void *response, size_t responselen)
(char*)p_cur[i].addresses,
(char*)p_cur[i].dnses,
(char*)p_cur[i].gateways,
- (char*)p_cur[i].pcscf);
+ (char*)p_cur[i].pcscf,
+ p_cur[i].mtu);
}
removeLastChar;
closeResponse;
@@ -3191,6 +3344,118 @@ static int responseHardwareConfig(Parcel &p, void *response, size_t responselen)
return 0;
}
+static int responseRadioCapability(Parcel &p, void *response, size_t responselen) {
+ if (response == NULL) {
+ RLOGE("invalid response: NULL");
+ return RIL_ERRNO_INVALID_RESPONSE;
+ }
+
+ if (responselen != sizeof (RIL_RadioCapability) ) {
+ RLOGE("invalid response length was %d expected %d",
+ (int)responselen, (int)sizeof (RIL_SIM_IO_Response));
+ return RIL_ERRNO_INVALID_RESPONSE;
+ }
+
+ RIL_RadioCapability *p_cur = (RIL_RadioCapability *) response;
+ p.writeInt32(p_cur->version);
+ p.writeInt32(p_cur->session);
+ p.writeInt32(p_cur->phase);
+ p.writeInt32(p_cur->rat);
+ writeStringToParcel(p, p_cur->logicalModemUuid);
+ p.writeInt32(p_cur->status);
+
+ startResponse;
+ appendPrintBuf("%s[version=%d,session=%d,phase=%d,\
+ rat=%s,logicalModemUuid=%s,status=%d]",
+ printBuf,
+ p_cur->version,
+ p_cur->session,
+ p_cur->phase,
+ p_cur->rat,
+ p_cur->logicalModemUuid,
+ p_cur->status);
+ closeResponse;
+ return 0;
+}
+
+static int responseSSData(Parcel &p, void *response, size_t responselen) {
+ RLOGD("In responseSSData");
+ int num;
+
+ if (response == NULL && responselen != 0) {
+ RLOGE("invalid response length was %d expected %d",
+ (int)responselen, (int)sizeof (RIL_SIM_IO_Response));
+ return RIL_ERRNO_INVALID_RESPONSE;
+ }
+
+ if (responselen != sizeof(RIL_StkCcUnsolSsResponse)) {
+ RLOGE("invalid response length %d, expected %d",
+ (int)responselen, (int)sizeof(RIL_StkCcUnsolSsResponse));
+ return RIL_ERRNO_INVALID_RESPONSE;
+ }
+
+ startResponse;
+ RIL_StkCcUnsolSsResponse *p_cur = (RIL_StkCcUnsolSsResponse *) response;
+ p.writeInt32(p_cur->serviceType);
+ p.writeInt32(p_cur->requestType);
+ p.writeInt32(p_cur->teleserviceType);
+ p.writeInt32(p_cur->serviceClass);
+ p.writeInt32(p_cur->result);
+
+ if (isServiceTypeCfQuery(p_cur->serviceType, p_cur->requestType)) {
+ RLOGD("responseSSData CF type, num of Cf elements %d", p_cur->cfData.numValidIndexes);
+ if (p_cur->cfData.numValidIndexes > NUM_SERVICE_CLASSES) {
+ RLOGE("numValidIndexes is greater than max value %d, "
+ "truncating it to max value", NUM_SERVICE_CLASSES);
+ p_cur->cfData.numValidIndexes = NUM_SERVICE_CLASSES;
+ }
+ /* number of call info's */
+ p.writeInt32(p_cur->cfData.numValidIndexes);
+
+ for (int i = 0; i < p_cur->cfData.numValidIndexes; i++) {
+ RIL_CallForwardInfo cf = p_cur->cfData.cfInfo[i];
+
+ p.writeInt32(cf.status);
+ p.writeInt32(cf.reason);
+ p.writeInt32(cf.serviceClass);
+ p.writeInt32(cf.toa);
+ writeStringToParcel(p, cf.number);
+ p.writeInt32(cf.timeSeconds);
+ appendPrintBuf("%s[%s,reason=%d,cls=%d,toa=%d,%s,tout=%d],", printBuf,
+ (cf.status==1)?"enable":"disable", cf.reason, cf.serviceClass, cf.toa,
+ (char*)cf.number, cf.timeSeconds);
+ RLOGD("Data: %d,reason=%d,cls=%d,toa=%d,num=%s,tout=%d],", cf.status,
+ cf.reason, cf.serviceClass, cf.toa, (char*)cf.number, cf.timeSeconds);
+ }
+ } else {
+ p.writeInt32 (SS_INFO_MAX);
+
+ /* each int*/
+ for (int i = 0; i < SS_INFO_MAX; i++) {
+ appendPrintBuf("%s%d,", printBuf, p_cur->ssInfo[i]);
+ RLOGD("Data: %d",p_cur->ssInfo[i]);
+ p.writeInt32(p_cur->ssInfo[i]);
+ }
+ }
+ removeLastChar;
+ closeResponse;
+
+ return 0;
+}
+
+static bool isServiceTypeCfQuery(RIL_SsServiceType serType, RIL_SsRequestType reqType) {
+ if ((reqType == SS_INTERROGATION) &&
+ (serType == SS_CFU ||
+ serType == SS_CF_BUSY ||
+ serType == SS_CF_NO_REPLY ||
+ serType == SS_CF_NOT_REACHABLE ||
+ serType == SS_CF_ALL ||
+ serType == SS_CF_ALL_CONDITIONAL)) {
+ return true;
+ }
+ return false;
+}
+
static void triggerEvLoop() {
int ret;
if (!pthread_equal(pthread_self(), s_tid_dispatch)) {
@@ -3506,6 +3771,7 @@ static void processCommandsCallback(int fd, short flags, void *param) {
}
}
+
static void onNewCommandConnect(RIL_SOCKET_ID socket_id) {
// Inform we are connected and the ril version
int rilVer = s_callbacks.version;
@@ -3590,7 +3856,7 @@ static void listenCallback (int fd, short flags, void *param) {
RLOGD("Error on getsockopt() errno: %d", errno);
}
- if ( !is_phone_socket ) {
+ if (!is_phone_socket) {
RLOGE("RILD must accept socket from %s", p_info->processName);
close(fdCommand);
@@ -3721,7 +3987,7 @@ static void debugCallback (int fd, short flags, void *param) {
data = 0;
issueLocalRequest(RIL_REQUEST_RADIO_POWER, &data, sizeof(int), socket_id);
// Close the socket
- if (socket_id == RIL_SOCKET_1 && s_ril_param_socket.fdCommand > 0) {
+ if (socket_id == RIL_SOCKET_1 && s_ril_param_socket.fdCommand > 0) {
close(s_ril_param_socket.fdCommand);
s_ril_param_socket.fdCommand = -1;
}
@@ -4024,6 +4290,7 @@ RIL_register (const RIL_RadioFunctions *callbacks) {
};
#endif
+
s_registerCalled = 1;
RLOGI("s_registerCalled flag set, %d", s_started);
@@ -4033,11 +4300,20 @@ RIL_register (const RIL_RadioFunctions *callbacks) {
assert(i == s_commands[i].requestNumber);
}
+ for (int i = 0; i < (int)NUM_ELEMS(s_commands_v); i++) {
+ assert(i + RIL_VENDOR_COMMANDS_OFFSET == s_commands[i].requestNumber);
+ }
+
for (int i = 0; i < (int)NUM_ELEMS(s_unsolResponses); i++) {
assert(i + RIL_UNSOL_RESPONSE_BASE
== s_unsolResponses[i].requestNumber);
}
+ for (int i = 0; i < (int)NUM_ELEMS(s_unsolResponses_v); i++) {
+ assert(i + RIL_UNSOL_RESPONSE_BASE + RIL_VENDOR_COMMANDS_OFFSET
+ == s_unsolResponses[i].requestNumber);
+ }
+
// New rild impl calls RIL_startEventLoop() first
// old standalone impl wants it here.
@@ -4150,7 +4426,6 @@ checkAndDequeueRequestInfo(struct RequestInfo *pRI) {
}
-
extern "C" void
RIL_onRequestComplete(RIL_Token t, RIL_Errno e, void *response, size_t responselen) {
RequestInfo *pRI;
@@ -4230,6 +4505,7 @@ done:
free(pRI);
}
+
static void
grabPartialWakeLock() {
acquire_wake_lock(PARTIAL_WAKE_LOCK, ANDROID_WAKE_LOCK_NAME);
@@ -4336,7 +4612,7 @@ static bool is3gpp2(int radioTech) {
* returned when telephony framework requests them
*/
static RIL_RadioState
-processRadioState(RIL_RadioState newRadioState, RIL_SOCKET_ID socket_id __unused) {
+processRadioState(RIL_RadioState newRadioState, RIL_SOCKET_ID socket_id) {
if((newRadioState > RADIO_STATE_UNAVAILABLE) && (newRadioState < RADIO_STATE_ON)) {
int newVoiceRadioTech;
@@ -4372,22 +4648,23 @@ processRadioState(RIL_RadioState newRadioState, RIL_SOCKET_ID socket_id __unused
return newRadioState;
}
+
#if defined(ANDROID_MULTI_SIM)
extern "C"
-void RIL_onUnsolicitedResponse(int unsolResponse, const void *data,
+void RIL_onUnsolicitedResponse(int unsolResponse, void *data,
size_t datalen, RIL_SOCKET_ID socket_id)
#else
extern "C"
-void RIL_onUnsolicitedResponse(int unsolResponse, const void *data,
+void RIL_onUnsolicitedResponse(int unsolResponse, void *data,
size_t datalen)
#endif
{
- int unsolResponseIndex;
int ret;
int64_t timeReceived = 0;
bool shouldScheduleTimeout = false;
RIL_RadioState newState;
RIL_SOCKET_ID soc_id = RIL_SOCKET_1;
+ UnsolResponseInfo *pRI = NULL;
#if defined(ANDROID_MULTI_SIM)
soc_id = socket_id;
@@ -4400,10 +4677,21 @@ void RIL_onUnsolicitedResponse(int unsolResponse, const void *data,
return;
}
- unsolResponseIndex = unsolResponse - RIL_UNSOL_RESPONSE_BASE;
+ /* Hack to include Samsung responses */
+ if (unsolResponse > RIL_VENDOR_COMMANDS_OFFSET + RIL_UNSOL_RESPONSE_BASE) {
+ int index = unsolResponse - RIL_VENDOR_COMMANDS_OFFSET - RIL_UNSOL_RESPONSE_BASE;
+
+ RLOGD("SAMSUNG: unsolResponse=%d, unsolResponseIndex=%d", unsolResponse, index);
- if ((unsolResponseIndex < 0)
- || (unsolResponseIndex >= (int32_t)NUM_ELEMS(s_unsolResponses))) {
+ if (index < (int32_t)NUM_ELEMS(s_unsolResponses_v))
+ pRI = &s_unsolResponses_v[index];
+ } else {
+ int index = unsolResponse - RIL_UNSOL_RESPONSE_BASE;
+ if (index < (int32_t)NUM_ELEMS(s_unsolResponses))
+ pRI = &s_unsolResponses[index];
+ }
+
+ if (pRI == NULL || pRI->responseFunction == NULL) {
RLOGE("unsupported unsolicited response code %d", unsolResponse);
return;
}
@@ -4411,7 +4699,7 @@ void RIL_onUnsolicitedResponse(int unsolResponse, const void *data,
// Grab a wake lock if needed for this reponse,
// as we exit we'll either release it immediately
// or set a timer to release it later.
- switch (s_unsolResponses[unsolResponseIndex].wakeType) {
+ switch (pRI->wakeType) {
case WAKE_PARTIAL:
grabPartialWakeLock();
shouldScheduleTimeout = true;
@@ -4439,8 +4727,8 @@ void RIL_onUnsolicitedResponse(int unsolResponse, const void *data,
p.writeInt32 (RESPONSE_UNSOLICITED);
p.writeInt32 (unsolResponse);
- ret = s_unsolResponses[unsolResponseIndex]
- .responseFunction(p, const_cast<void*>(data), datalen);
+ ret = pRI->responseFunction(p, const_cast<void*>(data), datalen);
+
if (ret != 0) {
// Problem with the response. Don't continue;
goto error_exit;
@@ -4729,6 +5017,8 @@ requestToString(int request) {
case RIL_REQUEST_SIM_OPEN_CHANNEL: return "SIM_OPEN_CHANNEL";
case RIL_REQUEST_SIM_CLOSE_CHANNEL: return "SIM_CLOSE_CHANNEL";
case RIL_REQUEST_SIM_TRANSMIT_APDU_CHANNEL: return "SIM_TRANSMIT_APDU_CHANNEL";
+ case RIL_REQUEST_GET_RADIO_CAPABILITY: return "RIL_REQUEST_GET_RADIO_CAPABILITY";
+ case RIL_REQUEST_SET_RADIO_CAPABILITY: return "RIL_REQUEST_SET_RADIO_CAPABILITY";
case RIL_REQUEST_SET_UICC_SUBSCRIPTION: return "SET_UICC_SUBSCRIPTION";
case RIL_REQUEST_ALLOW_DATA: return "ALLOW_DATA";
case RIL_REQUEST_GET_HARDWARE_CONFIG: return "GET_HARDWARE_CONFIG";
@@ -4746,13 +5036,14 @@ requestToString(int request) {
case RIL_UNSOL_ON_USSD_REQUEST: return "UNSOL_ON_USSD_REQUEST(obsolete)";
case RIL_UNSOL_NITZ_TIME_RECEIVED: return "UNSOL_NITZ_TIME_RECEIVED";
case RIL_UNSOL_SIGNAL_STRENGTH: return "UNSOL_SIGNAL_STRENGTH";
+ case RIL_UNSOL_DATA_CALL_LIST_CHANGED: return "UNSOL_DATA_CALL_LIST_CHANGED";
+ case RIL_UNSOL_SUPP_SVC_NOTIFICATION: return "UNSOL_SUPP_SVC_NOTIFICATION";
case RIL_UNSOL_STK_SESSION_END: return "UNSOL_STK_SESSION_END";
case RIL_UNSOL_STK_PROACTIVE_COMMAND: return "UNSOL_STK_PROACTIVE_COMMAND";
case RIL_UNSOL_STK_EVENT_NOTIFY: return "UNSOL_STK_EVENT_NOTIFY";
case RIL_UNSOL_STK_CALL_SETUP: return "UNSOL_STK_CALL_SETUP";
case RIL_UNSOL_SIM_SMS_STORAGE_FULL: return "UNSOL_SIM_SMS_STORAGE_FUL";
case RIL_UNSOL_SIM_REFRESH: return "UNSOL_SIM_REFRESH";
- case RIL_UNSOL_DATA_CALL_LIST_CHANGED: return "UNSOL_DATA_CALL_LIST_CHANGED";
case RIL_UNSOL_CALL_RING: return "UNSOL_CALL_RING";
case RIL_UNSOL_RESPONSE_SIM_STATUS_CHANGED: return "UNSOL_RESPONSE_SIM_STATUS_CHANGED";
case RIL_UNSOL_RESPONSE_CDMA_NEW_SMS: return "UNSOL_NEW_CDMA_SMS";
@@ -4777,6 +5068,9 @@ requestToString(int request) {
case RIL_UNSOL_SRVCC_STATE_NOTIFY: return "UNSOL_SRVCC_STATE_NOTIFY";
case RIL_UNSOL_HARDWARE_CONFIG_CHANGED: return "HARDWARE_CONFIG_CHANGED";
case RIL_UNSOL_DC_RT_INFO_CHANGED: return "UNSOL_DC_RT_INFO_CHANGED";
+ case RIL_UNSOL_RADIO_CAPABILITY: return "UNSOL_RADIO_CAPABILITY";
+ case RIL_UNSOL_ON_SS: return "UNSOL_ON_SS";
+ case RIL_UNSOL_STK_CC_ALPHA_NOTIFY: return "UNSOL_STK_CC_ALPHA_NOTIFY";
case RIL_REQUEST_SHUTDOWN: return "SHUTDOWN";
default: return "<unknown request>";
}
diff --git a/ril/libril/ril_commands.h b/ril/libril/ril_commands.h
index 2f0c313..fc4cf25 100644
--- a/ril/libril/ril_commands.h
+++ b/ril/libril/ril_commands.h
@@ -124,7 +124,7 @@
{RIL_REQUEST_STK_SEND_ENVELOPE_WITH_STATUS, dispatchString, responseSIM_IO},
{RIL_REQUEST_VOICE_RADIO_TECH, dispatchVoiceRadioTech, responseInts},
{RIL_REQUEST_GET_CELL_INFO_LIST, dispatchVoid, responseCellInfoList},
- {RIL_REQUEST_SET_UNSOL_CELL_INFO_LIST_RATE, dispatchInts, responseVoid}, // 110
+ {RIL_REQUEST_SET_UNSOL_CELL_INFO_LIST_RATE, dispatchInts, responseVoid},
{RIL_REQUEST_SET_INITIAL_ATTACH_APN, dispatchSetInitialAttachApn, responseVoid},
{RIL_REQUEST_IMS_REGISTRATION_STATE, dispatchVoid, responseInts},
{RIL_REQUEST_IMS_SEND_SMS, dispatchImsSms, responseSMS},
@@ -144,56 +144,5 @@
{RIL_REQUEST_SET_DC_RT_INFO_RATE, dispatchInts, responseVoid},
{RIL_REQUEST_SET_DATA_PROFILE, dispatchDataProfile, responseVoid},
{RIL_REQUEST_SHUTDOWN, dispatchVoid, responseVoid},
- {RIL_REQUEST_SET_UNSOL_CELL_INFO_LIST_RATE, dispatchInts, responseVoid},
- {0, NULL, NULL}, // 10001
- {RIL_REQUEST_GET_CELL_BROADCAST_CONFIG, dispatchVoid, responseVoid},
- {0, NULL, NULL}, // 10003
- {0, NULL, NULL}, // 10004
- {RIL_REQUEST_SEND_ENCODED_USSD, dispatchVoid, responseVoid},
- {RIL_REQUEST_SET_PDA_MEMORY_STATUS, dispatchVoid, responseVoid},
- {RIL_REQUEST_GET_PHONEBOOK_STORAGE_INFO, dispatchVoid, responseVoid},
- {RIL_REQUEST_GET_PHONEBOOK_ENTRY, dispatchVoid, responseVoid},
- {RIL_REQUEST_ACCESS_PHONEBOOK_ENTRY, dispatchVoid, responseVoid},
- {RIL_REQUEST_DIAL_VIDEO_CALL, dispatchVoid, responseVoid},
- {RIL_REQUEST_CALL_DEFLECTION, dispatchVoid, responseVoid},
- {RIL_REQUEST_READ_SMS_FROM_SIM, dispatchVoid, responseVoid},
- {RIL_REQUEST_USIM_PB_CAPA, dispatchVoid, responseVoid},
- {RIL_REQUEST_LOCK_INFO, dispatchVoid, responseVoid},
- {0, NULL, NULL}, // 10015
- {RIL_REQUEST_DIAL_EMERGENCY, dispatchDial, responseVoid},
- {RIL_REQUEST_GET_STOREAD_MSG_COUNT, dispatchVoid, responseVoid},
- {RIL_REQUEST_STK_SIM_INIT_EVENT, dispatchVoid, responseVoid},
- {RIL_REQUEST_GET_LINE_ID, dispatchVoid, responseVoid},
- {RIL_REQUEST_SET_LINE_ID, dispatchVoid, responseVoid},
- {RIL_REQUEST_GET_SERIAL_NUMBER, dispatchVoid, responseVoid},
- {RIL_REQUEST_GET_MANUFACTURE_DATE_NUMBER, dispatchVoid, responseVoid},
- {RIL_REQUEST_GET_BARCODE_NUMBER, dispatchVoid, responseVoid},
- {RIL_REQUEST_UICC_GBA_AUTHENTICATE_BOOTSTRAP, dispatchVoid, responseVoid},
- {RIL_REQUEST_UICC_GBA_AUTHENTICATE_NAF, dispatchVoid, responseVoid},
- {RIL_REQUEST_SIM_TRANSMIT_BASIC, dispatchVoid, responseVoid},
- {RIL_REQUEST_SIM_OPEN_CHANNEL, dispatchVoid, responseVoid},
- {RIL_REQUEST_SIM_CLOSE_CHANNEL, dispatchVoid, responseVoid},
- {RIL_REQUEST_SIM_TRANSMIT_CHANNEL, dispatchVoid, responseVoid},
- {RIL_REQUEST_SIM_AUTH, dispatchVoid, responseVoid},
- {RIL_REQUEST_PS_ATTACH, dispatchVoid, responseVoid},
- {RIL_REQUEST_PS_DETACH, dispatchVoid, responseVoid},
- {RIL_REQUEST_ACTIVATE_DATA_CALL, dispatchVoid, responseVoid},
- {RIL_REQUEST_CHANGE_SIM_PERSO, dispatchVoid, responseVoid},
- {RIL_REQUEST_ENTER_SIM_PERSO, dispatchVoid, responseVoid},
- {RIL_REQUEST_GET_TIME_INFO, dispatchVoid, responseVoid},
- {RIL_REQUEST_OMADM_SETUP_SESSION, dispatchVoid, responseVoid},
- {RIL_REQUEST_OMADM_SERVER_START_SESSION, dispatchVoid, responseVoid},
- {RIL_REQUEST_OMADM_CLIENT_START_SESSION, dispatchVoid, responseVoid},
- {RIL_REQUEST_OMADM_SEND_DATA, dispatchVoid, responseVoid},
- {RIL_REQUEST_CDMA_GET_DATAPROFILE, dispatchVoid, responseVoid},
- {RIL_REQUEST_CDMA_SET_DATAPROFILE, dispatchVoid, responseVoid},
- {RIL_REQUEST_CDMA_GET_SYSTEMPROPERTIES, dispatchVoid, responseVoid},
- {RIL_REQUEST_CDMA_SET_SYSTEMPROPERTIES, dispatchVoid, responseVoid},
- {RIL_REQUEST_SEND_SMS_COUNT, dispatchVoid, responseVoid},
- {RIL_REQUEST_SEND_SMS_MSG, dispatchVoid, responseVoid},
- {RIL_REQUEST_SEND_SMS_MSG_READ_STATUS, dispatchVoid, responseVoid},
- {RIL_REQUEST_MODEM_HANGUP, dispatchVoid, responseVoid},
- {RIL_REQUEST_SET_SIM_POWER, dispatchVoid, responseVoid},
- {RIL_REQUEST_SET_PREFERRED_NETWORK_LIST, dispatchVoid, responseVoid},
- {RIL_REQUEST_GET_PREFERRED_NETWORK_LIST, dispatchVoid, responseVoid},
- {RIL_REQUEST_HANGUP_VT, dispatchVoid, responseVoid},
+ {RIL_REQUEST_GET_RADIO_CAPABILITY, dispatchVoid, responseRadioCapability},
+ {RIL_REQUEST_SET_RADIO_CAPABILITY, dispatchRadioCapability, responseRadioCapability},
diff --git a/ril/libril/ril_commands_vendor.h b/ril/libril/ril_commands_vendor.h
new file mode 100644
index 0000000..9121407
--- /dev/null
+++ b/ril/libril/ril_commands_vendor.h
@@ -0,0 +1,69 @@
+/* //device/libs/telephony/ril_commands.h
+**
+** Copyright 2006, The Android Open Source 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.
+*/
+ {10000, NULL, NULL},
+ {10001, NULL, NULL},
+ {RIL_REQUEST_GET_CELL_BROADCAST_CONFIG, dispatchVoid, responseVoid},
+ {10003, NULL, NULL},
+ {10004, NULL, NULL},
+ {RIL_REQUEST_SEND_ENCODED_USSD, dispatchVoid, responseVoid},
+ {RIL_REQUEST_SET_PDA_MEMORY_STATUS, dispatchVoid, responseVoid},
+ {RIL_REQUEST_GET_PHONEBOOK_STORAGE_INFO, dispatchVoid, responseVoid},
+ {RIL_REQUEST_GET_PHONEBOOK_ENTRY, dispatchVoid, responseVoid},
+ {RIL_REQUEST_ACCESS_PHONEBOOK_ENTRY, dispatchVoid, responseVoid},
+ {RIL_REQUEST_DIAL_VIDEO_CALL, dispatchVoid, responseVoid},
+ {RIL_REQUEST_CALL_DEFLECTION, dispatchVoid, responseVoid},
+ {RIL_REQUEST_READ_SMS_FROM_SIM, dispatchVoid, responseVoid},
+ {RIL_REQUEST_USIM_PB_CAPA, dispatchVoid, responseVoid},
+ {RIL_REQUEST_LOCK_INFO, dispatchVoid, responseVoid},
+ {10015, NULL, NULL},
+ {RIL_REQUEST_DIAL_EMERGENCY, dispatchDial, responseVoid},
+ {RIL_REQUEST_GET_STOREAD_MSG_COUNT, dispatchVoid, responseVoid},
+ {RIL_REQUEST_STK_SIM_INIT_EVENT, dispatchVoid, responseVoid},
+ {RIL_REQUEST_GET_LINE_ID, dispatchVoid, responseVoid},
+ {RIL_REQUEST_SET_LINE_ID, dispatchVoid, responseVoid},
+ {RIL_REQUEST_GET_SERIAL_NUMBER, dispatchVoid, responseVoid},
+ {RIL_REQUEST_GET_MANUFACTURE_DATE_NUMBER, dispatchVoid, responseVoid},
+ {RIL_REQUEST_GET_BARCODE_NUMBER, dispatchVoid, responseVoid},
+ {RIL_REQUEST_UICC_GBA_AUTHENTICATE_BOOTSTRAP, dispatchVoid, responseVoid},
+ {RIL_REQUEST_UICC_GBA_AUTHENTICATE_NAF, dispatchVoid, responseVoid},
+ {RIL_REQUEST_SIM_TRANSMIT_BASIC, dispatchVoid, responseVoid},
+ {RIL_REQUEST_SIM_OPEN_CHANNEL, dispatchVoid, responseVoid},
+ {RIL_REQUEST_SIM_CLOSE_CHANNEL, dispatchVoid, responseVoid},
+ {RIL_REQUEST_SIM_TRANSMIT_CHANNEL, dispatchVoid, responseVoid},
+ {RIL_REQUEST_SIM_AUTH, dispatchVoid, responseVoid},
+ {RIL_REQUEST_PS_ATTACH, dispatchVoid, responseVoid},
+ {RIL_REQUEST_PS_DETACH, dispatchVoid, responseVoid},
+ {RIL_REQUEST_ACTIVATE_DATA_CALL, dispatchVoid, responseVoid},
+ {RIL_REQUEST_CHANGE_SIM_PERSO, dispatchVoid, responseVoid},
+ {RIL_REQUEST_ENTER_SIM_PERSO, dispatchVoid, responseVoid},
+ {RIL_REQUEST_GET_TIME_INFO, dispatchVoid, responseVoid},
+ {RIL_REQUEST_OMADM_SETUP_SESSION, dispatchVoid, responseVoid},
+ {RIL_REQUEST_OMADM_SERVER_START_SESSION, dispatchVoid, responseVoid},
+ {RIL_REQUEST_OMADM_CLIENT_START_SESSION, dispatchVoid, responseVoid},
+ {RIL_REQUEST_OMADM_SEND_DATA, dispatchVoid, responseVoid},
+ {RIL_REQUEST_CDMA_GET_DATAPROFILE, dispatchVoid, responseVoid},
+ {RIL_REQUEST_CDMA_SET_DATAPROFILE, dispatchVoid, responseVoid},
+ {RIL_REQUEST_CDMA_GET_SYSTEMPROPERTIES, dispatchVoid, responseVoid},
+ {RIL_REQUEST_CDMA_SET_SYSTEMPROPERTIES, dispatchVoid, responseVoid},
+ {RIL_REQUEST_SEND_SMS_COUNT, dispatchVoid, responseVoid},
+ {RIL_REQUEST_SEND_SMS_MSG, dispatchVoid, responseVoid},
+ {RIL_REQUEST_SEND_SMS_MSG_READ_STATUS, dispatchVoid, responseVoid},
+ {RIL_REQUEST_MODEM_HANGUP, dispatchVoid, responseVoid},
+ {RIL_REQUEST_SET_SIM_POWER, dispatchVoid, responseVoid},
+ {RIL_REQUEST_SET_PREFERRED_NETWORK_LIST, dispatchVoid, responseVoid},
+ {RIL_REQUEST_GET_PREFERRED_NETWORK_LIST, dispatchVoid, responseVoid},
+ {RIL_REQUEST_HANGUP_VT, dispatchVoid, responseVoid},
diff --git a/ril/libril/ril_unsol_commands.h b/ril/libril/ril_unsol_commands.h
index 6704bca..6ea7157 100644
--- a/ril/libril/ril_unsol_commands.h
+++ b/ril/libril/ril_unsol_commands.h
@@ -50,12 +50,12 @@
{RIL_UNSOL_EXIT_EMERGENCY_CALLBACK_MODE, responseVoid, WAKE_PARTIAL},
{RIL_UNSOL_RIL_CONNECTED, responseInts, WAKE_PARTIAL},
{RIL_UNSOL_VOICE_RADIO_TECH_CHANGED, responseInts, WAKE_PARTIAL},
+ {RIL_UNSOL_CELL_INFO_LIST, responseCellInfoList, WAKE_PARTIAL},
{RIL_UNSOL_RESPONSE_IMS_NETWORK_STATE_CHANGED, responseVoid, WAKE_PARTIAL},
{RIL_UNSOL_UICC_SUBSCRIPTION_STATUS_CHANGED, responseInts, WAKE_PARTIAL},
{RIL_UNSOL_SRVCC_STATE_NOTIFY, responseInts, WAKE_PARTIAL},
{RIL_UNSOL_HARDWARE_CONFIG_CHANGED, responseHardwareConfig, WAKE_PARTIAL},
{RIL_UNSOL_DC_RT_INFO_CHANGED, responseDcRtInfo, WAKE_PARTIAL},
- {RIL_UNSOL_CELL_INFO_LIST, responseCellInfoList, WAKE_PARTIAL}, // 1036
- {RIL_UNSOL_RESPONSE_IMS_NETWORK_STATE_CHANGED, responseVoid, WAKE_PARTIAL},
- {RIL_UNSOL_RELEASE_COMPLETE_MESSAGE, responseVoid, WAKE_PARTIAL}, // 11001
- {RIL_UNSOL_STK_SEND_SMS_RESULT, responseInts, WAKE_PARTIAL}, // 11002
+ {RIL_UNSOL_RADIO_CAPABILITY, responseRadioCapability, WAKE_PARTIAL},
+ {RIL_UNSOL_ON_SS, responseSSData, WAKE_PARTIAL},
+ {RIL_UNSOL_STK_CC_ALPHA_NOTIFY, responseString, WAKE_PARTIAL},
diff --git a/ril/libril/ril_unsol_commands_vendor.h b/ril/libril/ril_unsol_commands_vendor.h
new file mode 100644
index 0000000..43ba5d1
--- /dev/null
+++ b/ril/libril/ril_unsol_commands_vendor.h
@@ -0,0 +1,49 @@
+/* //device/libs/telephony/ril_unsol_commands.h
+**
+** Copyright 2006, The Android Open Source 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.
+*/
+ {SAMSUNG_UNSOL_RESPONSE_BASE, NULL, WAKE_PARTIAL},
+ {RIL_UNSOL_RELEASE_COMPLETE_MESSAGE, responseVoid, WAKE_PARTIAL}, // 11001
+ {RIL_UNSOL_STK_SEND_SMS_RESULT, responseInts, WAKE_PARTIAL}, // 11002
+ {RIL_UNSOL_STK_CALL_CONTROL_RESULT, responseVoid, WAKE_PARTIAL}, // 11003
+ {RIL_UNSOL_DUN_CALL_STATUS, responseVoid, WAKE_PARTIAL}, // 11004
+ {11005, NULL, WAKE_PARTIAL},
+ {11006, NULL, WAKE_PARTIAL},
+ {RIL_UNSOL_O2_HOME_ZONE_INFO, responseVoid, WAKE_PARTIAL}, // 11007
+ {RIL_UNSOL_DEVICE_READY_NOTI, responseVoid, WAKE_PARTIAL}, // 11008
+ {RIL_UNSOL_GPS_NOTI, responseVoid, WAKE_PARTIAL}, // 11009
+ {RIL_UNSOL_AM, responseString, WAKE_PARTIAL}, // 11010
+ {RIL_UNSOL_DUN_PIN_CONTROL_SIGNAL, responseVoid, WAKE_PARTIAL}, // 11011
+ {RIL_UNSOL_DATA_SUSPEND_RESUME, responseInts, WAKE_PARTIAL}, // 11012
+ {RIL_UNSOL_SAP, responseVoid, WAKE_PARTIAL}, // 11013
+ {11014, NULL, WAKE_PARTIAL},
+ {RIL_UNSOL_SIM_SMS_STORAGE_AVAILALE, responseVoid, WAKE_PARTIAL}, // 11015
+ {RIL_UNSOL_HSDPA_STATE_CHANGED, responseVoid, WAKE_PARTIAL}, // 11016
+ {RIL_UNSOL_WB_AMR_STATE, responseInts, WAKE_PARTIAL}, // 11017
+ {RIL_UNSOL_TWO_MIC_STATE, responseInts, WAKE_PARTIAL}, // 11018
+ {RIL_UNSOL_DHA_STATE, responseVoid, WAKE_PARTIAL}, // 11019
+ {RIL_UNSOL_UART, responseVoid, WAKE_PARTIAL}, // 11020
+ {RIL_UNSOL_RESPONSE_HANDOVER, responseVoid, WAKE_PARTIAL}, // 11021
+ {RIL_UNSOL_IPV6_ADDR, responseVoid, WAKE_PARTIAL}, // 11022
+ {RIL_UNSOL_NWK_INIT_DISC_REQUEST, responseVoid, WAKE_PARTIAL}, // 11023
+ {RIL_UNSOL_RTS_INDICATION, responseVoid, WAKE_PARTIAL}, // 11024
+ {RIL_UNSOL_OMADM_SEND_DATA, responseVoid, WAKE_PARTIAL}, // 11025
+ {RIL_UNSOL_DUN, responseVoid, WAKE_PARTIAL}, // 11026
+ {RIL_UNSOL_SYSTEM_REBOOT, responseVoid, WAKE_PARTIAL}, // 11027
+ {RIL_UNSOL_VOICE_PRIVACY_CHANGED, responseVoid, WAKE_PARTIAL}, // 11028
+ {RIL_UNSOL_UTS_GETSMSCOUNT, responseVoid, WAKE_PARTIAL}, // 11029
+ {RIL_UNSOL_UTS_GETSMSMSG, responseVoid, WAKE_PARTIAL}, // 11030
+ {RIL_UNSOL_UTS_GET_UNREAD_SMS_STATUS, responseVoid, WAKE_PARTIAL}, // 11031
+ {RIL_UNSOL_MIP_CONNECT_STATUS, responseVoid, WAKE_PARTIAL}, // 11032