summaryrefslogtreecommitdiffstats
path: root/reference-ril
diff options
context:
space:
mode:
authorJim Kaye <jameskaye@google.com>2017-10-06 14:17:47 -0700
committerJim Kaye <jameskaye@google.com>2017-10-11 12:22:10 -0700
commitd2d820161d534e3423dcc451f9dbb4eee8225131 (patch)
tree35f503119e7dc4e22a1929bfc9ddd2c1b802954f /reference-ril
parent3e8f2c80f439cc088c38de1679e4fcf3bb8c433e (diff)
downloadandroid_hardware_ril-d2d820161d534e3423dcc451f9dbb4eee8225131.tar.gz
android_hardware_ril-d2d820161d534e3423dcc451f9dbb4eee8225131.tar.bz2
android_hardware_ril-d2d820161d534e3423dcc451f9dbb4eee8225131.zip
Fix VTS HAL Radio tests
Get VTS HAL Radio tests working for Emulator. With this CL, 122 of 129 of these tests pass. (The remaining 7 tests still fail. These are related to SAP.) Bug: 62137708 Test: VTS tests: VtsHalRadioV1_0Target Merged from If8b100c448f7f6b605d28af6a2ac2f03197c0137 Change-Id: Ieab832ab1a836087ca0f6d542128520000fffc71
Diffstat (limited to 'reference-ril')
-rw-r--r--reference-ril/reference-ril.c161
1 files changed, 125 insertions, 36 deletions
diff --git a/reference-ril/reference-ril.c b/reference-ril/reference-ril.c
index ba92b76..f646b94 100644
--- a/reference-ril/reference-ril.c
+++ b/reference-ril/reference-ril.c
@@ -1168,11 +1168,6 @@ static void requestCdmaSubscription(int request __unused, void *data __unused,
responseStr[3] = "8587777777"; // MIN
responseStr[4] = "1"; // PRL Version
RIL_onRequestComplete(t, RIL_E_SUCCESS, responseStr, count*sizeof(char*));
-
- return;
-error:
- RLOGE("requestRegistrationState must never return an error when radio is on");
- RIL_onRequestComplete(t, RIL_E_GENERIC_FAILURE, NULL, 0);
}
static void requestCdmaGetRoamingPreference(int request __unused, void *data __unused,
@@ -2105,6 +2100,47 @@ static void requestGetHardwareConfig(void *data, size_t datalen, RIL_Token t)
RIL_onRequestComplete(t, RIL_E_SUCCESS, &hwCfg, sizeof(hwCfg));
}
+static void requestGetTtyMode(void *data, size_t datalen, RIL_Token t)
+{
+ int ttyModeResponse;
+
+ RIL_UNUSED_PARM(data);
+ RIL_UNUSED_PARM(datalen);
+
+ ttyModeResponse = (getSIMStatus() == SIM_READY) ? 1 // TTY Full
+ : 0; // TTY Off
+
+ RIL_onRequestComplete(t, RIL_E_SUCCESS, &ttyModeResponse, sizeof(ttyModeResponse));
+}
+
+static void requestGetRadioCapability(void *data, size_t datalen, RIL_Token t)
+{
+ RIL_RadioCapability radioCapability;
+
+ RIL_UNUSED_PARM(data);
+ RIL_UNUSED_PARM(datalen);
+
+ radioCapability.version = RIL_RADIO_CAPABILITY_VERSION;
+ radioCapability.session = 0;
+ radioCapability.phase = 0;
+ radioCapability.rat = 0;
+ radioCapability.logicalModemUuid[0] = '\0';
+ radioCapability.status = RC_STATUS_SUCCESS;
+
+ RIL_onRequestComplete(t, RIL_E_SUCCESS, &radioCapability, sizeof(radioCapability));
+}
+
+static void requestGetMute(void *data, size_t datalen, RIL_Token t)
+{
+ int muteResponse;
+
+ RIL_UNUSED_PARM(data);
+ RIL_UNUSED_PARM(datalen);
+
+ muteResponse = 0; // Mute disabled
+
+ RIL_onRequestComplete(t, RIL_E_SUCCESS, &muteResponse, sizeof(muteResponse));
+}
/*** Callback methods from the RIL library to us ***/
@@ -2141,12 +2177,47 @@ onRequest (int request, void *data, size_t datalen, RIL_Token t)
/* Ignore all non-power requests when RADIO_STATE_OFF
* (except RIL_REQUEST_GET_SIM_STATUS)
*/
- if (sState == RADIO_STATE_OFF
- && !(request == RIL_REQUEST_RADIO_POWER
- || request == RIL_REQUEST_GET_SIM_STATUS)
- ) {
- RIL_onRequestComplete(t, RIL_E_RADIO_NOT_AVAILABLE, NULL, 0);
- return;
+ if (sState == RADIO_STATE_OFF) {
+ switch(request) {
+ case RIL_REQUEST_BASEBAND_VERSION:
+ case RIL_REQUEST_CDMA_GET_SUBSCRIPTION_SOURCE:
+ case RIL_REQUEST_CDMA_QUERY_PREFERRED_VOICE_PRIVACY_MODE:
+ case RIL_REQUEST_CDMA_SET_PREFERRED_VOICE_PRIVACY_MODE:
+ case RIL_REQUEST_CDMA_SET_ROAMING_PREFERENCE:
+ case RIL_REQUEST_CDMA_SET_SUBSCRIPTION_SOURCE:
+ case RIL_REQUEST_CDMA_SUBSCRIPTION:
+ case RIL_REQUEST_DEVICE_IDENTITY:
+ case RIL_REQUEST_EXIT_EMERGENCY_CALLBACK_MODE:
+ case RIL_REQUEST_GET_ACTIVITY_INFO:
+ case RIL_REQUEST_GET_CARRIER_RESTRICTIONS:
+ case RIL_REQUEST_GET_CURRENT_CALLS:
+ case RIL_REQUEST_GET_IMEI:
+ case RIL_REQUEST_GET_MUTE:
+ case RIL_REQUEST_GET_NEIGHBORING_CELL_IDS:
+ case RIL_REQUEST_GET_PREFERRED_NETWORK_TYPE:
+ case RIL_REQUEST_GET_RADIO_CAPABILITY:
+ case RIL_REQUEST_GET_SIM_STATUS:
+ case RIL_REQUEST_NV_RESET_CONFIG:
+ case RIL_REQUEST_QUERY_AVAILABLE_BAND_MODE:
+ case RIL_REQUEST_QUERY_NETWORK_SELECTION_MODE:
+ case RIL_REQUEST_QUERY_TTY_MODE:
+ case RIL_REQUEST_RADIO_POWER:
+ case RIL_REQUEST_SET_BAND_MODE:
+ case RIL_REQUEST_SET_CARRIER_RESTRICTIONS:
+ case RIL_REQUEST_SET_LOCATION_UPDATES:
+ case RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE:
+ case RIL_REQUEST_SET_TTY_MODE:
+ case RIL_REQUEST_SET_UNSOL_CELL_INFO_LIST_RATE:
+ case RIL_REQUEST_STOP_LCE:
+ case RIL_REQUEST_VOICE_RADIO_TECH:
+ // Process all the above, even though the radio is off
+ break;
+
+ default:
+ // For all others, say NOT_AVAILABLE because the radio is off
+ RIL_onRequestComplete(t, RIL_E_RADIO_NOT_AVAILABLE, NULL, 0);
+ return;
+ }
}
switch (request) {
@@ -2470,37 +2541,55 @@ onRequest (int request, void *data, size_t datalen, RIL_Token t)
requestShutdown(t);
break;
- /* CDMA Specific Requests */
+ case RIL_REQUEST_QUERY_TTY_MODE:
+ requestGetTtyMode(data, datalen, t);
+ break;
+
+ case RIL_REQUEST_GET_RADIO_CAPABILITY:
+ requestGetRadioCapability(data, datalen, t);
+ break;
+
+ case RIL_REQUEST_GET_MUTE:
+ requestGetMute(data, datalen, t);
+ break;
+
+ case RIL_REQUEST_SET_INITIAL_ATTACH_APN:
+ case RIL_REQUEST_ALLOW_DATA:
+ case RIL_REQUEST_ENTER_NETWORK_DEPERSONALIZATION:
+ case RIL_REQUEST_SET_CLIR:
+ case RIL_REQUEST_SET_SUPP_SVC_NOTIFICATION:
+ case RIL_REQUEST_SET_BAND_MODE:
+ case RIL_REQUEST_QUERY_AVAILABLE_BAND_MODE:
+ case RIL_REQUEST_GET_NEIGHBORING_CELL_IDS:
+ case RIL_REQUEST_SET_LOCATION_UPDATES:
+ case RIL_REQUEST_SET_TTY_MODE:
+ case RIL_REQUEST_CDMA_SET_PREFERRED_VOICE_PRIVACY_MODE:
+ RIL_onRequestComplete(t, RIL_E_SUCCESS, NULL, 0);
+ break;
+
case RIL_REQUEST_BASEBAND_VERSION:
- if (TECH_BIT(sMdmInfo) == MDM_CDMA) {
- requestCdmaBaseBandVersion(request, data, datalen, t);
- break;
- } // Fall-through if tech is not cdma
+ requestCdmaBaseBandVersion(request, data, datalen, t);
+ break;
case RIL_REQUEST_DEVICE_IDENTITY:
- if (TECH_BIT(sMdmInfo) == MDM_CDMA) {
- requestCdmaDeviceIdentity(request, data, datalen, t);
- break;
- } // Fall-through if tech is not cdma
+ requestCdmaDeviceIdentity(request, data, datalen, t);
+ break;
case RIL_REQUEST_CDMA_SUBSCRIPTION:
- if (TECH_BIT(sMdmInfo) == MDM_CDMA) {
- requestCdmaSubscription(request, data, datalen, t);
- break;
- } // Fall-through if tech is not cdma
+ requestCdmaSubscription(request, data, datalen, t);
+ break;
+ case RIL_REQUEST_CDMA_GET_SUBSCRIPTION_SOURCE:
+ requestCdmaGetSubscriptionSource(request, data, datalen, t);
+ break;
+
+ /* CDMA Specific Requests */
case RIL_REQUEST_CDMA_SET_SUBSCRIPTION_SOURCE:
if (TECH_BIT(sMdmInfo) == MDM_CDMA) {
requestCdmaSetSubscriptionSource(request, data, datalen, t);
break;
} // Fall-through if tech is not cdma
- case RIL_REQUEST_CDMA_GET_SUBSCRIPTION_SOURCE:
- if (TECH_BIT(sMdmInfo) == MDM_CDMA) {
- requestCdmaGetSubscriptionSource(request, data, datalen, t);
- break;
- } // Fall-through if tech is not cdma
-
case RIL_REQUEST_CDMA_QUERY_ROAMING_PREFERENCE:
if (TECH_BIT(sMdmInfo) == MDM_CDMA) {
requestCdmaGetRoamingPreference(request, data, datalen, t);
@@ -2519,6 +2608,11 @@ onRequest (int request, void *data, size_t datalen, RIL_Token t)
break;
} // Fall-through if tech is not cdma
+ // Fall-through to here when the request is specific to CDMA, but
+ // our tech is not CDMA. VTS tests expect us to silently do nothing.
+ RIL_onRequestComplete(t, RIL_E_SUCCESS, NULL, 0);
+ break;
+
default:
RLOGD("Request not supported. Tech: %d",TECH(sMdmInfo));
RIL_onRequestComplete(t, RIL_E_REQUEST_NOT_SUPPORTED, NULL, 0);
@@ -2716,11 +2810,6 @@ getSIMStatus()
char *cpinResult;
RLOGD("getSIMStatus(). sState: %d",sState);
- if (sState == RADIO_STATE_OFF || sState == RADIO_STATE_UNAVAILABLE) {
- ret = SIM_NOT_READY;
- goto done;
- }
-
err = at_send_command_singleline("AT+CPIN?", "+CPIN:", &p_response);
if (err != 0) {
@@ -2776,7 +2865,7 @@ getSIMStatus()
p_response = NULL;
cpinResult = NULL;
- ret = SIM_READY;
+ ret = (sState == RADIO_STATE_ON) ? SIM_READY : SIM_NOT_READY;
done:
at_response_free(p_response);