OSDN Git Service

Teleca 090414 & 090423 patches for CDMA to complete phase1 work.
authorWink Saville <wink@google.com>
Fri, 24 Apr 2009 18:54:14 +0000 (11:54 -0700)
committerWink Saville <wink@google.com>
Fri, 24 Apr 2009 18:54:14 +0000 (11:54 -0700)
libril/ril.cpp
libril/ril_commands.h
libril/ril_unsol_commands.h

index ebc2f2d..b5749c3 100644 (file)
@@ -970,33 +970,44 @@ dispatchCdmaBrSmsCnf(Parcel &p, RequestInfo *pRI) {
     status_t status;
     int32_t digitCount;
 
-    memset(&rcbsc, 0, sizeof(rcbsc));
-
     status = p.readInt32(&t);
     rcbsc.size = (int) t;
 
-    status = p.readInt32(&t);
-    rcbsc.entries->uServiceCategory = (int) t;
+    LOGE("RIL_CPP: dispatchCdmaBrSmsCnf(), isize=%d", rcbsc.size);
 
-    status = p.readInt32(&t);
-    rcbsc.entries->uLanguage = (int) t;
+    if (rcbsc.size != 0) {
+        RIL_CDMA_BroadcastServiceInfo cdmaBsi[rcbsc.size];
+        for (int i = 0 ; i < rcbsc.size ; i++ ) {
+            status = p.readInt32(&t);
+            cdmaBsi[i].uServiceCategory = (int) t;
+
+            status = p.readInt32(&t);
+            cdmaBsi[i].uLanguage = (int) t;
+
+            status = p.readInt32(&t);
+            cdmaBsi[i].bSelected = (uint8_t) t;
 
-    status = p.read(&ut, sizeof(ut));
-    rcbsc.entries->bSelected = (uint8_t) ut;
+            startRequest;
+            appendPrintBuf("%sentries.uServicecategory=%d, entries.uLanguage =%d, \
+                entries.bSelected =%d, ", printBuf, cdmaBsi[i].uServiceCategory,
+                cdmaBsi[i].uLanguage, cdmaBsi[i].bSelected);
+            closeRequest;
+        }
+        rcbsc.entries = (RIL_CDMA_BroadcastServiceInfo *)calloc(rcbsc.size,
+                sizeof(RIL_CDMA_BroadcastServiceInfo));
+        memcpy(rcbsc.entries, cdmaBsi, (sizeof(RIL_CDMA_BroadcastServiceInfo) * rcbsc.size));
+    } else {
+        rcbsc.entries = NULL;
+    }
 
     if (status != NO_ERROR) {
         goto invalid;
     }
 
-    startRequest;
-    appendPrintBuf("%ssize=%d, entries.uServicecategory=%d, \
-            entries.uLanguage =%d, entries.bSelected =%d, ", printBuf, rcbsc.size,
-            rcbsc.entries->uServiceCategory,rcbsc.entries->uLanguage, rcbsc.entries->bSelected);
-    closeRequest;
-
-    printRequest(pRI->token, pRI->pCI->requestNumber);
-
-    s_callbacks.onRequest(pRI->pCI->requestNumber, &rcbsc, sizeof(rcbsc),pRI);
+    s_callbacks.onRequest(pRI->pCI->requestNumber,
+                          &rcbsc,
+                          (sizeof(RIL_CDMA_BroadcastServiceInfo) * rcbsc.size) + sizeof(int),
+                          pRI);
 
 #ifdef MEMSET_FREED
     memset(&rcbsc, 0, sizeof(rcbsc));
@@ -1643,9 +1654,9 @@ static int responseBrSmsCnf(Parcel &p, void *response, size_t responselen) {
         return RIL_ERRNO_INVALID_RESPONSE;
     }
 
-    if (responselen % sizeof(RIL_BroadcastSMSConfig *) != 0) {
+    if (responselen % sizeof(RIL_BroadcastSMSConfig) != 0) {
         LOGE("invalid response length %d expected multiple of %d", 
-                (int)responselen, (int)sizeof(RIL_BroadcastSMSConfig *));
+                (int)responselen, (int)sizeof(RIL_BroadcastSMSConfig));
         return RIL_ERRNO_INVALID_RESPONSE;
     }
 
@@ -1670,35 +1681,48 @@ static int responseBrSmsCnf(Parcel &p, void *response, size_t responselen) {
 }
 
 static int responseCdmaBrCnf(Parcel &p, void *response, size_t responselen) {
-    int num;
+    int numServiceCategories;
 
     if (response == NULL && responselen != 0) {
         LOGE("invalid response: NULL");
         return RIL_ERRNO_INVALID_RESPONSE;
     }
 
-    if (responselen % sizeof(RIL_CDMA_BroadcastSMSConfig*) != 0) {
-        LOGE("invalid response length %d expected multiple of %d", 
-                (int)responselen, (int)sizeof(RIL_CDMA_BroadcastSMSConfig *));
+    if (responselen == 0) {
+        LOGE("invalid response length %d expected >= of %d",
+                (int)responselen, (int)sizeof(RIL_BroadcastSMSConfig));
         return RIL_ERRNO_INVALID_RESPONSE;
     }
 
-    /* number of call info's */
-    num = responselen / sizeof(RIL_CDMA_BroadcastSMSConfig *);
-    p.writeInt32(num);
+    RIL_CDMA_BroadcastSMSConfig *p_cur = (RIL_CDMA_BroadcastSMSConfig *) response;
 
-    RIL_CDMA_BroadcastSMSConfig *p_cur = (RIL_CDMA_BroadcastSMSConfig * ) response;
+    numServiceCategories = p_cur->size;
     p.writeInt32(p_cur->size);
-    p.writeInt32(p_cur->entries->uServiceCategory);
-    p.writeInt32(p_cur->entries->uLanguage);
-    p.write(&(p_cur->entries->bSelected),sizeof(p_cur->entries->bSelected));
 
     startResponse;
-    appendPrintBuf("%ssize=%d, entries.uServicecategory=%d, entries.uLanguage =%d, \
-            entries.bSelected =%d, ", printBuf,p_cur->size, p_cur->entries->uServiceCategory,
-            p_cur->entries->uLanguage, p_cur->entries->bSelected);
+    appendPrintBuf("%ssize=%d ", printBuf,p_cur->size);
     closeResponse;
 
+    if (numServiceCategories != 0) {
+        RIL_CDMA_BroadcastServiceInfo cdmaBsi[numServiceCategories];
+        memcpy(cdmaBsi, p_cur->entries,
+                 sizeof(RIL_CDMA_BroadcastServiceInfo) * numServiceCategories);
+
+        for (int i = 0 ; i < numServiceCategories ; i++ ) {
+            p.writeInt32(cdmaBsi[i].uServiceCategory);
+            p.writeInt32(cdmaBsi[i].uLanguage);
+            p.writeInt32(cdmaBsi[i].bSelected);
+
+            startResponse;
+            appendPrintBuf("%sentries[%d].uServicecategory=%d, entries[%d].uLanguage =%d, \
+                entries[%d].bSelected =%d, ", printBuf, i, cdmaBsi[i].uServiceCategory, i,
+                cdmaBsi[i].uLanguage, i, cdmaBsi[i].bSelected);
+            closeResponse;
+        }
+    } else {
+        p.writeInt32(NULL);
+    }
+
     return 0;
 }
 
@@ -1709,14 +1733,16 @@ static int responseCdmaSms(Parcel &p, void *response, size_t responselen) {
     uint8_t uct;
     void* dest;
 
+    LOGD("Inside responseCdmaSms");
+
     if (response == NULL && responselen != 0) {
         LOGE("invalid response: NULL");
         return RIL_ERRNO_INVALID_RESPONSE;
     }
 
-    if (responselen != sizeof(RIL_CDMA_SMS_Message*)) {
+    if (responselen != sizeof(RIL_CDMA_SMS_Message)) {
         LOGE("invalid response length was %d expected %d",
-                (int)responselen, (int)sizeof(RIL_CDMA_SMS_Message *));
+                (int)responselen, (int)sizeof(RIL_CDMA_SMS_Message));
         return RIL_ERRNO_INVALID_RESPONSE;
     }
 
index 7ba209f..f22a868 100644 (file)
     {RIL_REQUEST_CDMA_QUERY_PREFERRED_VOICE_PRIVACY_MODE, dispatchVoid, responseInts},
     {RIL_REQUEST_CDMA_FLASH, dispatchString, responseVoid},
     {RIL_REQUEST_CDMA_BURST_DTMF, dispatchString, responseVoid},
-    {RIL_REQUEST_CDMA_SEND_SMS, dispatchCdmaSms, responseVoid}, //new DISPATCH function
+    {RIL_REQUEST_CDMA_VALIDATE_AKEY, dispatchString, responseVoid},
+    {RIL_REQUEST_CDMA_SEND_SMS, dispatchCdmaSms, responseSMS}, //new DISPATCH function
     {RIL_REQUEST_CDMA_SMS_ACKNOWLEDGE, dispatchCdmaSmsAck, responseVoid}, //new DISPATCH function
     {RIL_REQUEST_GET_BROADCAST_CONFIG, dispatchVoid, responseBrSmsCnf}, //new RESPONSE function
     {RIL_REQUEST_SET_BROADCAST_CONFIG, dispatchBrSmsCnf, responseVoid}, //new DISPATCH function
+    {RIL_REQUEST_BROADCAST_ACTIVATION, dispatchInts, responseVoid},
     {RIL_REQUEST_CDMA_GET_BROADCAST_CONFIG, dispatchVoid, responseCdmaBrCnf}, //new RESPONSE function
     {RIL_REQUEST_CDMA_SET_BROADCAST_CONFIG, dispatchCdmaBrSmsCnf, responseVoid}, //new DISPATCH unction
-    {RIL_REQUEST_BROADCAST_ACTIVATION, dispatchInts, responseVoid},
-    {RIL_REQUEST_CDMA_VALIDATE_AKEY, dispatchString, responseVoid},
     {RIL_REQUEST_CDMA_BROADCAST_ACTIVATION, dispatchInts, responseVoid},
     {RIL_REQUEST_CDMA_SUBSCRIPTION, dispatchVoid, responseStrings},//Assumption Made here to use DispatchVoid!
     {RIL_REQUEST_CDMA_WRITE_SMS_TO_RUIM, dispatchRilCdmaSmsWriteArgs, responseInts}, //new DISPATCH function
index f89082b..c01e40f 100644 (file)
     {RIL_UNSOL_SIM_SMS_STORAGE_FULL, responseVoid, WAKE_PARTIAL},
     {RIL_UNSOL_SIM_REFRESH, responseInts, WAKE_PARTIAL},
     {RIL_UNSOL_CALL_RING, responseVoid, WAKE_PARTIAL},
-
-    /* import unsolicited CDMA notifications, need change response type
-     * of CDMA_NEW_SMS when do real CDMA merge
-     */
     {RIL_UNSOL_RESPONSE_SIM_STATUS_CHANGED, responseVoid, WAKE_PARTIAL},
-    {RIL_UNSOL_RESPONSE_CDMA_NEW_SMS, responseVoid, WAKE_PARTIAL},
+    {RIL_UNSOL_RESPONSE_CDMA_NEW_SMS, responseCdmaSms, WAKE_PARTIAL},
     {RIL_UNSOL_RESPONSE_NEW_BROADCAST_SMS, responseString, WAKE_PARTIAL},
     {RIL_UNSOL_CDMA_RUIM_SMS_STORAGE_FULL, responseVoid, WAKE_PARTIAL},
-    /* end of import unsolicited CDMA notifications */
     {RIL_UNSOL_RESTRICTED_STATE_CHANGED, responseInts, WAKE_PARTIAL}
-