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));
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;
}
}
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;
}
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;
}
{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
{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}
-