Merge "Update cuttlefish IRadio with 1.5 methods"
diff --git a/guest/hals/ril/cuttlefish_ril.cpp b/guest/hals/ril/cuttlefish_ril.cpp
index cb7446f..47cb5c5 100644
--- a/guest/hals/ril/cuttlefish_ril.cpp
+++ b/guest/hals/ril/cuttlefish_ril.cpp
@@ -2264,13 +2264,6 @@
return;
}
-static void request_set_signal_strength_reporting_criteria_1_5(int /*request*/, void* /*data*/,
- size_t /*datalen*/, RIL_Token t) {
- ALOGV("request_set_signal_strength_reporting_criteria_1_5 - void");
- gce_ril_env->OnRequestComplete(t, RIL_E_SUCCESS, NULL, 0);
- return;
-}
-
static void request_enable_modem(int /*request*/, RIL_Token t) {
ALOGV("Enabling modem - void");
gce_ril_env->OnRequestComplete(t, RIL_E_SUCCESS, NULL, 0);
@@ -2283,6 +2276,26 @@
return;
}
+// New functions after Q
+static void request_set_signal_strength_reporting_criteria_1_5(int /*request*/, void* /*data*/,
+ size_t /*datalen*/, RIL_Token t) {
+ ALOGV("request_set_signal_strength_reporting_criteria_1_5 - void");
+ gce_ril_env->OnRequestComplete(t, RIL_E_SUCCESS, NULL, 0);
+ return;
+}
+
+static void request_set_system_selection_channels_1_5(int /*request*/, RIL_Token t) {
+ ALOGV("request_set_system_selection_channels_1_5 - void");
+ gce_ril_env->OnRequestComplete(t, RIL_E_SUCCESS, NULL, 0);
+ return;
+}
+
+static void request_start_network_scan_1_5(RIL_Token t) {
+ ALOGV("request_start_network_scan_1_5");
+ gce_ril_env->OnRequestComplete(t, RIL_E_SUCCESS, NULL, 0);
+ return;
+}
+
static void gce_ril_on_request(int request, void* data, size_t datalen,
RIL_Token t) {
// Ignore all requests except RIL_REQUEST_GET_SIM_STATUS
@@ -2502,7 +2515,6 @@
case RIL_REQUEST_IMS_SEND_SMS:
request_ims_send_SMS(data, datalen, t);
break;
-
case RIL_REQUEST_SET_INITIAL_ATTACH_APN:
ALOGW("INITIAL ATTACH APN");
gce_ril_env->OnRequestComplete(t, RIL_E_SUCCESS, NULL, 0);
@@ -2515,9 +2527,6 @@
case RIL_REQUEST_START_NETWORK_SCAN4:
request_start_network_scan4(t);
break;
- case RIL_REQUEST_SET_SIGNAL_STRENGTH_REPORTING_CRITERIA_1_5:
- request_set_signal_strength_reporting_criteria_1_5(request, data, datalen, t);
- break;
case RIL_REQUEST_GET_MODEM_STACK_STATUS:
request_get_modem_stack_status(request, t);
break;
@@ -2569,6 +2578,11 @@
case RIL_REQUEST_EXIT_EMERGENCY_CALLBACK_MODE:
request_exit_emergency_mode(data, datalen, t);
break;
+
+// New requests after Q.
+ case RIL_REQUEST_SET_SIGNAL_STRENGTH_REPORTING_CRITERIA_1_5:
+ request_set_signal_strength_reporting_criteria_1_5(request, data, datalen, t);
+ break;
case RIL_REQUEST_ENABLE_UICC_APPLICATIONS:
request_enable_uicc_applications(request, data, datalen, t);
break;
@@ -2578,6 +2592,12 @@
case RIL_REQUEST_CAN_TOGGLE_UICC_APPLICATIONS_ENABLEMENT:
request_can_toggle_uicc_applications_enablement(request, data, datalen, t);
break;
+ case RIL_REQUEST_SET_SYSTEM_SELECTION_CHANNELS_1_5:
+ request_set_system_selection_channels_1_5(request, t);
+ break;
+ case RIL_REQUEST_START_NETWORK_SCAN_1_5:
+ request_start_network_scan_1_5(t);
+ break;
default:
ALOGE("Request %d not supported.", request);
gce_ril_env->OnRequestComplete(t, RIL_E_REQUEST_NOT_SUPPORTED, NULL, 0);
diff --git a/guest/hals/ril/libril/ril.cpp b/guest/hals/ril/libril/ril.cpp
index ef77ed2..8d3497e 100644
--- a/guest/hals/ril/libril/ril.cpp
+++ b/guest/hals/ril/libril/ril.cpp
@@ -1072,8 +1072,11 @@
case RIL_REQUEST_SET_FACILITY_LOCK: return "SET_FACILITY_LOCK";
case RIL_REQUEST_CHANGE_BARRING_PASSWORD: return "CHANGE_BARRING_PASSWORD";
case RIL_REQUEST_QUERY_NETWORK_SELECTION_MODE: return "QUERY_NETWORK_SELECTION_MODE";
+ case RIL_REQUEST_SET_SYSTEM_SELECTION_CHANNELS: return "RIL_REQUEST_SET_SYSTEM_SELECTION_CHANNELS";
+ case RIL_REQUEST_SET_SYSTEM_SELECTION_CHANNELS_1_5: return "RIL_REQUEST_SET_SYSTEM_SELECTION_CHANNELS5";
case RIL_REQUEST_START_NETWORK_SCAN: return "RIL_REQUEST_START_NETWORK_SCAN";
case RIL_REQUEST_START_NETWORK_SCAN4: return "RIL_REQUEST_START_NETWORK_SCAN4";
+ case RIL_REQUEST_START_NETWORK_SCAN_1_5: return "RIL_REQUEST_START_NETWORK_SCAN5";
case RIL_REQUEST_SET_NETWORK_SELECTION_AUTOMATIC: return "SET_NETWORK_SELECTION_AUTOMATIC";
case RIL_REQUEST_SET_NETWORK_SELECTION_MANUAL: return "SET_NETWORK_SELECTION_MANUAL";
case RIL_REQUEST_QUERY_AVAILABLE_NETWORKS: return "QUERY_AVAILABLE_NETWORKS";
diff --git a/guest/hals/ril/libril/ril.h b/guest/hals/ril/libril/ril.h
index addf66b..80394ea 100644
--- a/guest/hals/ril/libril/ril.h
+++ b/guest/hals/ril/libril/ril.h
@@ -2101,6 +2101,7 @@
GERAN = 0x01, // GSM EDGE Radio Access Network
UTRAN = 0x02, // Universal Terrestrial Radio Access Network
EUTRAN = 0x03, // Evolved Universal Terrestrial Radio Access Network
+ NGRAN = 0x04, // Next-Generation Radio Access Network
} RIL_RadioAccessNetworks;
typedef enum {
@@ -2194,6 +2195,45 @@
EUTRAN_BAND_70 = 70,
} RIL_EutranBands;
+typedef enum {
+ NGRAN_BAND_1 = 1,
+ NGRAN_BAND_2 = 2,
+ NGRAN_BAND_3 = 3,
+ NGRAN_BAND_5 = 5,
+ NGRAN_BAND_7 = 7,
+ NGRAN_BAND_8 = 8,
+ NGRAN_BAND_12 = 12,
+ NGRAN_BAND_20 = 20,
+ NGRAN_BAND_25 = 25,
+ NGRAN_BAND_28 = 28,
+ NGRAN_BAND_34 = 34,
+ NGRAN_BAND_38 = 38,
+ NGRAN_BAND_39 = 39,
+ NGRAN_BAND_40 = 40,
+ NGRAN_BAND_41 = 41,
+ NGRAN_BAND_50 = 50,
+ NGRAN_BAND_51 = 51,
+ NGRAN_BAND_66 = 66,
+ NGRAN_BAND_70 = 70,
+ NGRAN_BAND_71 = 71,
+ NGRAN_BAND_74 = 74,
+ NGRAN_BAND_75 = 75,
+ NGRAN_BAND_76 = 76,
+ NGRAN_BAND_77 = 77,
+ NGRAN_BAND_78 = 78,
+ NGRAN_BAND_79 = 79,
+ NGRAN_BAND_80 = 80,
+ NGRAN_BAND_81 = 81,
+ NGRAN_BAND_82 = 82,
+ NGRAN_BAND_83 = 83,
+ NGRAN_BAND_84 = 84,
+ NGRAN_BAND_86 = 86,
+ NGRAN_BAND_257 = 257,
+ NGRAN_BAND_258 = 258,
+ NGRAN_BAND_260 = 260,
+ NGRAN_BAND_261 = 261,
+} RIL_NgranBands;
+
typedef struct {
RIL_RadioAccessNetworks radio_access_network; // The type of network to scan.
uint32_t bands_length; // Length of bands
@@ -2201,6 +2241,7 @@
RIL_GeranBands geran_bands[MAX_BANDS];
RIL_UtranBands utran_bands[MAX_BANDS];
RIL_EutranBands eutran_bands[MAX_BANDS];
+ RIL_NgranBands ngran_bands[MAX_BANDS];
} bands;
uint32_t channels_length; // Length of channels
uint32_t channels[MAX_CHANNELS]; // Frequency channels to scan
@@ -6643,6 +6684,45 @@
*/
#define RIL_REQUEST_CAN_TOGGLE_UICC_APPLICATIONS_ENABLEMENT 158
+/**
+ * Specify which bands modem's background scan must act on.
+ * If specifyChannels is true, it only scans bands specified in specifiers.
+ * If specifyChannels is false, it scans all bands.
+ *
+ * For example, CBRS is only on LTE band 48. By specifying this band,
+ * modem saves more power.
+ *
+ * Valid errors:
+ * SUCCESS
+ * RADIO_NOT_AVAILABLE
+ * INTERNAL_ERR
+ * INVALID_ARGUMENTS
+ *
+ */
+#define RIL_REQUEST_SET_SYSTEM_SELECTION_CHANNELS_1_5 159
+
+/**
+ * RIL_REQUEST_START_NETWORK_SCAN5
+ *
+ * Starts a new network scan
+ *
+ * Request to start a network scan with specified radio access networks with frequency bands and/or
+ * channels.
+ *
+ * "data" is a const RIL_NetworkScanRequest *.
+ * "response" is NULL
+ *
+ * Valid errors:
+ * SUCCESS
+ * RADIO_NOT_AVAILABLE
+ * DEVICE_IN_USE
+ * INTERNAL_ERR
+ * MODEM_ERR
+ * INVALID_ARGUMENTS
+ *
+ */
+#define RIL_REQUEST_START_NETWORK_SCAN_1_5 160
+
/***********************************************************************/
/**
diff --git a/guest/hals/ril/libril/ril_commands.h b/guest/hals/ril/libril/ril_commands.h
index 97183fd..17cb594 100644
--- a/guest/hals/ril/libril/ril_commands.h
+++ b/guest/hals/ril/libril/ril_commands.h
@@ -173,3 +173,5 @@
{RIL_REQUEST_ENABLE_UICC_APPLICATIONS, radio_1_5::enableUiccApplicationsResponse},
{RIL_REQUEST_ARE_UICC_APPLICATIONS_ENABLED, radio_1_5::areUiccApplicationsEnabledResponse},
{RIL_REQUEST_CAN_TOGGLE_UICC_APPLICATIONS_ENABLEMENT, radio_1_5::canToggleUiccApplicationsEnablementResponse},
+ {RIL_REQUEST_SET_SYSTEM_SELECTION_CHANNELS_1_5, radio_1_5::setSystemSelectionChannelsResponse_1_5},
+ {RIL_REQUEST_START_NETWORK_SCAN_1_5, radio_1_5::startNetworkScanResponse_1_5},
diff --git a/guest/hals/ril/libril/ril_service.cpp b/guest/hals/ril/libril/ril_service.cpp
index f7bb895..b7b02a6 100755
--- a/guest/hals/ril/libril/ril_service.cpp
+++ b/guest/hals/ril/libril/ril_service.cpp
@@ -500,8 +500,7 @@
// Methods from ::android::hardware::radio::V1_3::IRadio follow.
Return<void> setSystemSelectionChannels(int32_t serial, bool specifyChannels,
- const hidl_vec<::android::hardware::radio::V1_1::RadioAccessSpecifier>& specifiers)
- ;
+ const hidl_vec<::android::hardware::radio::V1_1::RadioAccessSpecifier>& specifiers);
Return<void> enableModem(int32_t serial, bool on);
Return<void> getModemStackStatus(int32_t serial);
@@ -539,6 +538,10 @@
Return<void> enableUiccApplications(int32_t serial, bool detach);
Return<void> areUiccApplicationsEnabled(int32_t serial);
Return<void> canToggleUiccApplicationsEnablement(int32_t serial);
+ Return<void> setSystemSelectionChannels_1_5(int32_t serial, bool specifyChannels,
+ const hidl_vec<::android::hardware::radio::V1_5::RadioAccessSpecifier>& specifiers);
+ Return<void> startNetworkScan_1_5(int32_t serial,
+ const ::android::hardware::radio::V1_5::NetworkScanRequest& request);
};
struct OemHookImpl : public IOemHook {
@@ -3167,6 +3170,98 @@
return 0;
}
+int prepareNetworkScanRequest_1_5(RIL_NetworkScanRequest &scan_request,
+ const ::android::hardware::radio::V1_5::NetworkScanRequest& request,
+ RequestInfo *pRI) {
+
+ scan_request.type = (RIL_ScanType) request.type;
+ scan_request.interval = request.interval;
+ scan_request.specifiers_length = request.specifiers.size();
+
+ int intervalLow = static_cast<int>(::android::hardware::radio::V1_2::ScanIntervalRange::MIN);
+ int intervalHigh = static_cast<int>(::android::hardware::radio::V1_2::ScanIntervalRange::MAX);
+ int maxSearchTimeLow =
+ static_cast<int>(::android::hardware::radio::V1_2::MaxSearchTimeRange::MIN);
+ int maxSearchTimeHigh =
+ static_cast<int>(::android::hardware::radio::V1_2::MaxSearchTimeRange::MAX);
+ int incrementalResultsPeriodicityRangeLow =
+ static_cast<int>(::android::hardware::radio::V1_2::IncrementalResultsPeriodicityRange::MIN);
+ int incrementalResultsPeriodicityRangeHigh =
+ static_cast<int>(::android::hardware::radio::V1_2::IncrementalResultsPeriodicityRange::MAX);
+ uint maxSpecifierSize =
+ static_cast<uint>(::android::hardware::radio::V1_2::RadioConst
+ ::RADIO_ACCESS_SPECIFIER_MAX_SIZE);
+
+ if (request.interval < intervalLow || request.interval > intervalHigh) {
+ sendErrorResponse(pRI, RIL_E_INVALID_ARGUMENTS);
+ return -1;
+ }
+ // If defined, must fall in correct range.
+ if (request.maxSearchTime != 0
+ && (request.maxSearchTime < maxSearchTimeLow
+ || request.maxSearchTime > maxSearchTimeHigh)) {
+ sendErrorResponse(pRI, RIL_E_INVALID_ARGUMENTS);
+ return -1;
+ }
+ if (request.maxSearchTime != 0
+ && (request.incrementalResultsPeriodicity < incrementalResultsPeriodicityRangeLow
+ || request.incrementalResultsPeriodicity > incrementalResultsPeriodicityRangeHigh
+ || request.incrementalResultsPeriodicity > request.maxSearchTime)) {
+ sendErrorResponse(pRI, RIL_E_INVALID_ARGUMENTS);
+ return -1;
+ }
+ if (request.specifiers.size() == 0 || request.specifiers.size() > maxSpecifierSize) {
+ sendErrorResponse(pRI, RIL_E_INVALID_ARGUMENTS);
+ return -1;
+ }
+
+ for (size_t i = 0; i < request.specifiers.size(); ++i) {
+ if (request.specifiers[i].bands.geranBands().size() > MAX_BANDS ||
+ request.specifiers[i].bands.utranBands().size() > MAX_BANDS ||
+ request.specifiers[i].bands.eutranBands().size() > MAX_BANDS ||
+ request.specifiers[i].bands.ngranBands().size() > MAX_BANDS ||
+ request.specifiers[i].channels.size() > MAX_CHANNELS) {
+ sendErrorResponse(pRI, RIL_E_INVALID_ARGUMENTS);
+ return -1;
+ }
+ const V1_5::RadioAccessSpecifier& ras_from = request.specifiers[i];
+ RIL_RadioAccessSpecifier& ras_to = scan_request.specifiers[i];
+
+ ras_to.radio_access_network = (RIL_RadioAccessNetworks) ras_from.radioAccessNetwork;
+ ras_to.channels_length = ras_from.channels.size();
+
+ std::copy(ras_from.channels.begin(), ras_from.channels.end(), ras_to.channels);
+ const std::vector<uint32_t> * bands = nullptr;
+ switch (request.specifiers[i].radioAccessNetwork) {
+ case V1_5::RadioAccessNetworks::GERAN:
+ ras_to.bands_length = ras_from.bands.geranBands().size();
+ bands = (std::vector<uint32_t> *) &ras_from.bands;
+ break;
+ case V1_5::RadioAccessNetworks::UTRAN:
+ ras_to.bands_length = ras_from.bands.utranBands().size();
+ bands = (std::vector<uint32_t> *) &ras_from.bands;
+ break;
+ case V1_5::RadioAccessNetworks::EUTRAN:
+ ras_to.bands_length = ras_from.bands.eutranBands().size();
+ bands = (std::vector<uint32_t> *) &ras_from.bands;
+ break;
+ case V1_5::RadioAccessNetworks::NGRAN:
+ ras_to.bands_length = ras_from.bands.ngranBands().size();
+ bands = (std::vector<uint32_t> *) &ras_from.bands;
+ break;
+ default:
+ sendErrorResponse(pRI, RIL_E_INVALID_ARGUMENTS);
+ return -1;
+ }
+ // safe to copy to geran_bands because it's a union member
+ for (size_t idx = 0; idx < ras_to.bands_length; ++idx) {
+ ras_to.bands.geran_bands[idx] = (RIL_GeranBands) (*bands)[idx];
+ }
+ }
+
+ return 0;
+}
+
// Methods from ::android::hardware::radio::V1_2::IRadio follow.
Return<void> RadioImpl_1_5::startNetworkScan_1_2(int32_t serial,
const ::android::hardware::radio::V1_2::NetworkScanRequest& request) {
@@ -3215,16 +3310,6 @@
return Void();
}
-Return<void> RadioImpl_1_5::setSignalStrengthReportingCriteria_1_5(int32_t /* serial */,
- const ::android::hardware::radio::V1_5::SignalThresholdInfo& /* signalThresholdInfo */,
- const ::android::hardware::radio::V1_5::AccessNetwork /* accessNetwork */) {
- // TODO implement
-#if VDBG
- RLOGE("[%04d]< %s", serial, "Method is not implemented");
-#endif
- return Void();
-}
-
Return<void> RadioImpl_1_5::setLinkCapacityReportingCriteria(int32_t /* serial */,
int32_t /* hysteresisMs */, int32_t /* hysteresisDlKbps */, int32_t /* hysteresisUlKbps */,
const hidl_vec<int32_t>& /* thresholdsDownlinkKbps */,
@@ -3495,7 +3580,17 @@
return Void();
}
-// radio::V1_5::IRadio methods:
+// Methods from ::android::hardware::radio::IRadio::V1_5 follow.
+Return<void> RadioImpl_1_5::setSignalStrengthReportingCriteria_1_5(int32_t /* serial */,
+ const ::android::hardware::radio::V1_5::SignalThresholdInfo& /* signalThresholdInfo */,
+ const ::android::hardware::radio::V1_5::AccessNetwork /* accessNetwork */) {
+ // TODO implement
+#if VDBG
+ RLOGE("[%04d]< %s", serial, "Method is not implemented");
+#endif
+ return Void();
+}
+
Return<void> RadioImpl_1_5::enableUiccApplications(int32_t serial, bool enable) {
#if VDBG
RLOGD("enableUiccApplications: serial %d enable %d", serial, enable);
@@ -3520,6 +3615,42 @@
return Void();
}
+Return<void> RadioImpl_1_5::setSystemSelectionChannels_1_5(int32_t serial, bool /* specifyChannels */,
+ const hidl_vec<::android::hardware::radio::V1_5::RadioAccessSpecifier>& /* specifiers */) {
+#if VDBG
+ RLOGD("setSystemSelectionChannels_1_5: serial %d", serial);
+#endif
+ dispatchVoid(serial, mSlotId, RIL_REQUEST_SET_SYSTEM_SELECTION_CHANNELS_1_5);
+ return Void();
+}
+
+Return<void> RadioImpl_1_5::startNetworkScan_1_5(int32_t serial,
+ const ::android::hardware::radio::V1_5::NetworkScanRequest& request) {
+#if VDBG
+ RLOGD("startNetworkScan_1_5: serial %d", serial);
+#endif
+
+ RequestInfo *pRI = android::addRequestToList(serial, mSlotId, RIL_REQUEST_START_NETWORK_SCAN_1_5);
+ if (pRI == NULL) {
+ return Void();
+ }
+
+ // TODO: implement checks for new fields.
+ // NetworkScanRequest added maxSearchTime, incrementalResults, incrementalResultsPeriodicity and
+ // mccMncs, could add more validations using request2 here.
+
+ RIL_NetworkScanRequest scan_request = {};
+
+ if (prepareNetworkScanRequest_1_5(scan_request, request, pRI) < 0) {
+ return Void();
+ }
+
+ CALL_ONREQUEST(RIL_REQUEST_START_NETWORK_SCAN_1_5, &scan_request, sizeof(scan_request), pRI,
+ mSlotId);
+
+ return Void();
+}
+
// OEM hook methods:
Return<void> OemHookImpl::setResponseFunctions(
const ::android::sp<IOemHookResponse>& oemHookResponseParam,
@@ -7793,6 +7924,44 @@
return 0;
}
+int radio_1_5::setSystemSelectionChannelsResponse_1_5(int slotId, int responseType, int serial,
+ RIL_Errno e, void* /* response */, size_t responseLen) {
+#if VDBG
+ RLOGD("%s(): %d", __FUNCTION__, serial);
+#endif
+ RadioResponseInfo responseInfo = {};
+ populateResponseInfo(responseInfo, serial, responseType, e);
+
+ // If we don't have a radio service, there's nothing we can do
+ if (radioService[slotId]->mRadioResponseV1_5 == NULL) {
+ RLOGE("%s: radioService[%d]->mRadioResponseV1_5 == NULL", __FUNCTION__, slotId);
+ return 0;
+ }
+
+ Return<void> retStatus =
+ radioService[slotId]->mRadioResponseV1_5->setSystemSelectionChannelsResponse_1_5(
+ responseInfo);
+ radioService[slotId]->checkReturnStatus(retStatus);
+ return 0;
+}
+
+int radio_1_5::startNetworkScanResponse_1_5(int slotId, int responseType, int serial, RIL_Errno e,
+ void *response, size_t responseLen) {
+#if VDBG
+ RLOGD("startNetworkScanResponse_1_5: serial %d", serial);
+#endif
+ if (radioService[slotId]->mRadioResponseV1_5 != NULL) {
+ RadioResponseInfo responseInfo = {};
+ populateResponseInfo(responseInfo, serial, responseType, e);
+ Return<void> retStatus
+ = radioService[slotId]->mRadioResponseV1_5->startNetworkScanResponse_1_5(responseInfo);
+ radioService[slotId]->checkReturnStatus(retStatus);
+ } else {
+ RLOGE("startNetworkScanResponse: radioService[%d]->mRadioResponseV1_5 == NULL", slotId);
+ }
+ return 0;
+}
+
/***************************************************************************************************
* INDICATION FUNCTIONS
* The below function handle unsolicited messages coming from the Radio
@@ -9583,7 +9752,7 @@
radioService[i] = new RadioImpl_1_5;
radioService[i]->mSlotId = i;
- RLOGD("registerService: starting android::hardware::radio::V1_4::IRadio %s for slot %d",
+ RLOGD("registerService: starting android::hardware::radio::V1_5::IRadio %s for slot %d",
serviceNames[i], i);
android::status_t status = radioService[i]->registerAsService(serviceNames[i]);
assert(status == android::OK);
diff --git a/guest/hals/ril/libril/ril_service.h b/guest/hals/ril/libril/ril_service.h
index 8caaaee..814768c 100644
--- a/guest/hals/ril/libril/ril_service.h
+++ b/guest/hals/ril/libril/ril_service.h
@@ -207,6 +207,10 @@
int responseType, int serial, RIL_Errno e, void *response,
size_t responselen);
+int startNetworkScanResponse_1_5(int slotId,
+ int responseType, int serial, RIL_Errno e, void *response,
+ size_t responselen);
+
int stopNetworkScanResponse(int slotId,
int responseType, int serial, RIL_Errno e, void *response,
size_t responselen);
@@ -768,6 +772,10 @@
int responseType, int serial, RIL_Errno e,
void *response, size_t responseLen);
+int setSystemSelectionChannelsResponse_1_5(int slotId,
+ int responseType, int serial, RIL_Errno e,
+ void *response, size_t responseLen);
+
int setAllowedCarriersResponse4(int slotId,
int responseType, int serial, RIL_Errno e,
void *response,