Added two new RIL commands support
Added RIL_REQUEST_SEND_DEVICE_STATE and
RIL_REQUEST_SET_UNSOLICITED_RESPONSE_FILTER RIL requests support.
Test: telephony sanity tests
bug: 32223897, 20125037, 28294587
Merged-In: I55adc30b11eac269331c54ff08947dd5eefc463b
Change-Id: I55adc30b11eac269331c54ff08947dd5eefc463b
diff --git a/libril/ril_commands.h b/libril/ril_commands.h
index 08a4428..95ea491 100644
--- a/libril/ril_commands.h
+++ b/libril/ril_commands.h
@@ -75,7 +75,7 @@
{RIL_REQUEST_RESET_RADIO, dispatchVoid, responseVoid},
{RIL_REQUEST_OEM_HOOK_RAW, dispatchRaw, radio::sendRequestRawResponse},
{RIL_REQUEST_OEM_HOOK_STRINGS, dispatchStrings, radio::sendRequestStringsResponse},
- {RIL_REQUEST_SCREEN_STATE, dispatchInts, radio::sendScreenStateResponse},
+ {RIL_REQUEST_SCREEN_STATE, dispatchInts, radio::sendDeviceStateResponse}, // Note the response function is different.
{RIL_REQUEST_SET_SUPP_SVC_NOTIFICATION, dispatchInts, radio::setSuppServiceNotificationsResponse},
{RIL_REQUEST_WRITE_SMS_TO_SIM, dispatchSmsWrite, radio::writeSmsToSimResponse},
{RIL_REQUEST_DELETE_SMS_ON_SIM, dispatchInts, radio::deleteSmsOnSimResponse},
@@ -152,6 +152,6 @@
{RIL_REQUEST_GET_ACTIVITY_INFO, dispatchVoid, radio::getModemActivityInfoResponse},
{RIL_REQUEST_SET_CARRIER_RESTRICTIONS, dispatchCarrierRestrictions, radio::setAllowedCarriersResponse},
{RIL_REQUEST_GET_CARRIER_RESTRICTIONS, dispatchVoid, radio::getAllowedCarriersResponse},
- {RIL_REQUEST_SEND_DEVICE_STATE, dispatchVoid, NULL},
- {RIL_REQUEST_SET_UNSOLICITED_RESPONSE_FILTER, dispatchVoid, NULL},
+ {RIL_REQUEST_SEND_DEVICE_STATE, dispatchInts, radio::sendDeviceStateResponse},
+ {RIL_REQUEST_SET_UNSOLICITED_RESPONSE_FILTER, dispatchInts, radio::setIndicationFilterResponse},
{RIL_REQUEST_SET_SIM_CARD_POWER, dispatchInts, radio::setSimCardPowerResponse},
diff --git a/libril/ril_service.cpp b/libril/ril_service.cpp
index 59a0fd5..5aad65e 100644
--- a/libril/ril_service.cpp
+++ b/libril/ril_service.cpp
@@ -1251,8 +1251,9 @@
}
Return<void> RadioImpl::sendScreenState(int32_t serial, bool enable) {
- RLOGD("RadioImpl::sendScreenState: serial %d", serial);
- dispatchInts(serial, mSlotId, RIL_REQUEST_SCREEN_STATE, 1, BOOL_TO_INT(enable));
+ // TODO: Completely remove this from HIDL intreface
+ RequestInfo *pRI = android::addRequestToList(serial, mSlotId, RIL_REQUEST_SCREEN_STATE);
+ sendErrorResponse(pRI, RIL_E_REQUEST_NOT_SUPPORTED);
return Void();
}
@@ -2256,8 +2257,8 @@
}
RIL_CarrierRestrictions cr = {};
- RIL_Carrier * allowedCarriers = NULL;
- RIL_Carrier * excludedCarriers = NULL;
+ RIL_Carrier *allowedCarriers = NULL;
+ RIL_Carrier *excludedCarriers = NULL;
cr.len_allowed_carriers = carriers.allowedCarriers.size();
allowedCarriers = (RIL_Carrier *)calloc(cr.len_allowed_carriers, sizeof(RIL_Carrier));
@@ -2315,16 +2316,43 @@
return Void();
}
+Return<void> RadioImpl::sendDeviceState(int32_t serial, DeviceStateType deviceStateType,
+ bool state) {
+ RLOGD("RadioImpl::sendDeviceState: serial %d", serial);
+ if (s_vendorFunctions->version < 15) {
+ if (deviceStateType == DeviceStateType::LOW_DATA_EXPECTED) {
+ RLOGD("RadioImpl::sendDeviceState: calling screen state %d", BOOL_TO_INT(!state));
+ dispatchInts(serial, mSlotId, RIL_REQUEST_SCREEN_STATE, 1, BOOL_TO_INT(!state));
+ } else {
+ RequestInfo *pRI = android::addRequestToList(serial, mSlotId,
+ RIL_REQUEST_SEND_DEVICE_STATE);
+ sendErrorResponse(pRI, RIL_E_REQUEST_NOT_SUPPORTED);
+ }
+ return Void();
+ }
+ dispatchInts(serial, mSlotId, RIL_REQUEST_SEND_DEVICE_STATE, 2, (int) deviceStateType,
+ BOOL_TO_INT(state));
+ return Void();
+}
+
+Return<void> RadioImpl::setIndicationFilter(int32_t serial, int32_t indicationFilter) {
+ RLOGD("RadioImpl::setIndicationFilter: serial %d", serial);
+ if (s_vendorFunctions->version < 15) {
+ RequestInfo *pRI = android::addRequestToList(serial, mSlotId,
+ RIL_REQUEST_SET_UNSOLICITED_RESPONSE_FILTER);
+ sendErrorResponse(pRI, RIL_E_REQUEST_NOT_SUPPORTED);
+ return Void();
+ }
+ dispatchInts(serial, mSlotId, RIL_REQUEST_SET_UNSOLICITED_RESPONSE_FILTER, 1, indicationFilter);
+ return Void();
+}
+
Return<void> RadioImpl::setSimCardPower(int32_t serial, bool powerUp) {
RLOGD("RadioImpl::setSimCardPower: serial %d", serial);
dispatchInts(serial, mSlotId, RIL_REQUEST_SET_SIM_CARD_POWER, 1, BOOL_TO_INT(powerUp));
return Void();
}
-Return<void> RadioImpl::sendDeviceState(int32_t serial, DeviceStateType deviceStateType, bool state) {return Status::ok();}
-
-Return<void> RadioImpl::setIndicationFilter(int32_t serial, int32_t indicationFilter) {return Status::ok();}
-
Return<void> RadioImpl::responseAcknowledgement() {
android::releaseWakeLock();
return Void();
@@ -4012,24 +4040,6 @@
return 0;
}
-int radio::sendScreenStateResponse(android::Parcel &p, int slotId, int requestNumber,
- int responseType, int serial, RIL_Errno e,
- void *response, size_t responseLen) {
- RLOGD("radio::sendScreenStateResponse: serial %d", serial);
-
- if (radioService[slotId]->mRadioResponse != NULL) {
- RadioResponseInfo responseInfo = {};
- populateResponseInfo(responseInfo, serial, responseType, e);
- Return<void> retStatus
- = radioService[slotId]->mRadioResponse->sendScreenStateResponse(responseInfo);
- radioService[slotId]->checkReturnStatus(retStatus);
- } else {
- RLOGE("radio::sendScreenStateResponse: radioService[%d]->mRadioResponse == NULL", slotId);
- }
-
- return 0;
-}
-
int radio::setSuppServiceNotificationsResponse(android::Parcel &p, int slotId, int requestNumber,
int responseType, int serial, RIL_Errno e,
void *response, size_t responseLen) {
@@ -5652,6 +5662,44 @@
return 0;
}
+int radio::sendDeviceStateResponse(android::Parcel &p, int slotId, int requestNumber,
+ int responseType, int serial, RIL_Errno e,
+ void *response, size_t responselen) {
+ RLOGD("radio::sendDeviceStateResponse: serial %d", serial);
+
+ if (radioService[slotId]->mRadioResponse != NULL) {
+ RadioResponseInfo responseInfo = {};
+ populateResponseInfo(responseInfo, serial, responseType, e);
+ Return<void> retStatus
+ = radioService[slotId]->mRadioResponse->sendDeviceStateResponse(responseInfo);
+ radioService[slotId]->checkReturnStatus(retStatus);
+ } else {
+ RLOGE("radio::sendDeviceStateResponse: radioService[%d]->mRadioResponse == NULL", slotId);
+ }
+
+ return 0;
+}
+
+int radio::setIndicationFilterResponse(android::Parcel &p, int slotId, int requestNumber,
+ int responseType, int serial, RIL_Errno e,
+ void *response, size_t responselen) {
+ RLOGD("radio::setIndicationFilterResponse: serial %d", serial);
+
+ if (radioService[slotId]->mRadioResponse != NULL) {
+ RadioResponseInfo responseInfo = {};
+ populateResponseInfo(responseInfo, serial, responseType, e);
+ Return<void> retStatus
+ = radioService[slotId]->mRadioResponse->setIndicationFilterResponse(responseInfo);
+ radioService[slotId]->checkReturnStatus(retStatus);
+ } else {
+ RLOGE("radio::setIndicationFilterResponse: radioService[%d]->mRadioResponse == NULL",
+ slotId);
+ }
+
+ return 0;
+}
+
+
int radio::setSimCardPowerResponse(android::Parcel &p, int slotId, int requestNumber,
int responseType, int serial, RIL_Errno e,
void *response, size_t responseLen) {
diff --git a/libril/ril_service.h b/libril/ril_service.h
index 7ee5faf..6e8e79c 100644
--- a/libril/ril_service.h
+++ b/libril/ril_service.h
@@ -230,10 +230,6 @@
int responseType, int serial, RIL_Errno e,
void *response, size_t responseLen);
-int sendScreenStateResponse(android::Parcel &p, int slotId, int requestNumber,
- int responseType, int serial, RIL_Errno e, void *response,
- size_t responselen);
-
int setSuppServiceNotificationsResponse(android::Parcel &p, int slotId, int requestNumber,
int responseType, int serial, RIL_Errno e, void *response,
size_t responselen);
@@ -524,6 +520,14 @@
int responseType, int serial, RIL_Errno e,
void *response, size_t responselen);
+int sendDeviceStateResponse(android::Parcel &p, int slotId, int requestNumber,
+ int responseType, int serial, RIL_Errno e,
+ void *response, size_t responselen);
+
+int setIndicationFilterResponse(android::Parcel &p, int slotId, int requestNumber,
+ int responseType, int serial, RIL_Errno e,
+ void *response, size_t responselen);
+
int setSimCardPowerResponse(android::Parcel &p, int slotId, int requestNumber,
int responseType, int serial, RIL_Errno e,
void *response, size_t responselen);