• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2016 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.internal.telephony;
18 
19 import android.content.Context;
20 import android.hardware.radio.V1_0.ActivityStatsInfo;
21 import android.hardware.radio.V1_0.CardStatus;
22 import android.hardware.radio.V1_0.CarrierRestrictions;
23 import android.hardware.radio.V1_0.CdmaBroadcastSmsConfigInfo;
24 import android.hardware.radio.V1_0.DataRegStateResult;
25 import android.hardware.radio.V1_0.GsmBroadcastSmsConfigInfo;
26 import android.hardware.radio.V1_0.LastCallFailCauseInfo;
27 import android.hardware.radio.V1_0.LceDataInfo;
28 import android.hardware.radio.V1_0.LceStatusInfo;
29 import android.hardware.radio.V1_0.NeighboringCell;
30 import android.hardware.radio.V1_0.RadioError;
31 import android.hardware.radio.V1_0.RadioResponseInfo;
32 import android.hardware.radio.V1_0.RadioTechnologyFamily;
33 import android.hardware.radio.V1_0.SendSmsResult;
34 import android.hardware.radio.V1_0.VoiceRegStateResult;
35 import android.hardware.radio.V1_4.CarrierRestrictionsWithPriority;
36 import android.hardware.radio.V1_4.SimLockMultiSimPolicy;
37 import android.hardware.radio.V1_6.IRadioResponse;
38 import android.hardware.radio.V1_6.SetupDataCallResult;
39 import android.os.AsyncResult;
40 import android.os.Message;
41 import android.os.SystemClock;
42 import android.telephony.AnomalyReporter;
43 import android.telephony.BarringInfo;
44 import android.telephony.CarrierRestrictionRules;
45 import android.telephony.CellInfo;
46 import android.telephony.ModemActivityInfo;
47 import android.telephony.NeighboringCellInfo;
48 import android.telephony.NetworkScanRequest;
49 import android.telephony.RadioAccessSpecifier;
50 import android.telephony.SignalStrength;
51 import android.telephony.SubscriptionManager;
52 import android.telephony.TelephonyManager;
53 import android.telephony.data.DataCallResponse;
54 import android.telephony.data.NetworkSlicingConfig;
55 import android.text.TextUtils;
56 
57 import com.android.internal.telephony.data.KeepaliveStatus;
58 import com.android.internal.telephony.gsm.SmsBroadcastConfigInfo;
59 import com.android.internal.telephony.uicc.AdnCapacity;
60 import com.android.internal.telephony.uicc.IccCardStatus;
61 import com.android.internal.telephony.uicc.IccIoResult;
62 import com.android.internal.telephony.uicc.IccSlotPortMapping;
63 
64 import java.util.ArrayList;
65 import java.util.Collections;
66 import java.util.List;
67 import java.util.UUID;
68 
69 public class RadioResponse extends IRadioResponse.Stub {
70     RIL mRil;
71 
RadioResponse(RIL ril)72     public RadioResponse(RIL ril) {
73         mRil = ril;
74     }
75 
76     /**
77      * Helper function to send response msg
78      * @param msg Response message to be sent
79      * @param ret Return object to be included in the response message
80      */
sendMessageResponse(Message msg, Object ret)81     static void sendMessageResponse(Message msg, Object ret) {
82         if (msg != null) {
83             AsyncResult.forMessage(msg, ret, null);
84             msg.sendToTarget();
85         }
86     }
87 
88     /**
89      * Acknowledge the receipt of radio request sent to the vendor. This must be sent only for
90      * radio request which take long time to respond.
91      * For more details, refer https://source.android.com/devices/tech/connect/ril.html
92      *
93      * @param serial Serial no. of the request whose acknowledgement is sent.
94      */
acknowledgeRequest(int serial)95     public void acknowledgeRequest(int serial) {
96         mRil.processRequestAck(serial);
97     }
98 
99     /**
100      * @param responseInfo Response info struct containing response type, serial no. and error
101      * @param cardStatus ICC card status as defined by CardStatus in types.hal
102      */
getIccCardStatusResponse(RadioResponseInfo responseInfo, CardStatus cardStatus)103     public void getIccCardStatusResponse(RadioResponseInfo responseInfo, CardStatus cardStatus) {
104         responseNotSupported(responseInfo);
105     }
106 
107     /**
108      * @param responseInfo Response info struct containing response type, serial no. and error
109      * @param cardStatus ICC card status as defined by CardStatus in 1.2/types.hal
110      */
getIccCardStatusResponse_1_2(RadioResponseInfo responseInfo, android.hardware.radio.V1_2.CardStatus cardStatus)111     public void getIccCardStatusResponse_1_2(RadioResponseInfo responseInfo,
112             android.hardware.radio.V1_2.CardStatus cardStatus) {
113         responseNotSupported(responseInfo);
114     }
115 
116     /**
117      * @param responseInfo Response info struct containing response type, serial no. and error
118      * @param cardStatus ICC card status as defined by CardStatus in 1.4/types.hal
119      */
getIccCardStatusResponse_1_4(RadioResponseInfo responseInfo, android.hardware.radio.V1_4.CardStatus cardStatus)120     public void getIccCardStatusResponse_1_4(RadioResponseInfo responseInfo,
121             android.hardware.radio.V1_4.CardStatus cardStatus) {
122         responseIccCardStatus(responseInfo, cardStatus);
123     }
124 
125     /**
126      * @param responseInfo Response info struct containing response type, serial no. and error
127      * @param cardStatus ICC card status as defined by CardStatus in 1.5/types.hal
128      */
getIccCardStatusResponse_1_5(RadioResponseInfo responseInfo, android.hardware.radio.V1_5.CardStatus cardStatus)129     public void getIccCardStatusResponse_1_5(RadioResponseInfo responseInfo,
130             android.hardware.radio.V1_5.CardStatus cardStatus) {
131         responseIccCardStatus_1_5(responseInfo, cardStatus);
132     }
133 
134     /**
135      * @param responseInfo Response info struct containing response type, serial no. and error
136      * @param remainingAttempts Number of retries remaining, must be equal to -1 if unknown.
137      */
supplyIccPinForAppResponse(RadioResponseInfo responseInfo, int remainingAttempts)138     public void supplyIccPinForAppResponse(RadioResponseInfo responseInfo, int remainingAttempts) {
139         responseInts(responseInfo, remainingAttempts);
140     }
141 
142     /**
143      * @param responseInfo Response info struct containing response type, serial no. and error
144      * @param remainingAttempts Number of retries remaining, must be equal to -1 if unknown.
145      */
supplyIccPukForAppResponse(RadioResponseInfo responseInfo, int remainingAttempts)146     public void supplyIccPukForAppResponse(RadioResponseInfo responseInfo, int remainingAttempts) {
147         responseInts(responseInfo, remainingAttempts);
148     }
149 
150     /**
151      * @param responseInfo Response info struct containing response type, serial no. and error
152      * @param remainingAttempts Number of retries remaining, must be equal to -1 if unknown.
153      */
supplyIccPin2ForAppResponse(RadioResponseInfo responseInfo, int remainingAttempts)154     public void supplyIccPin2ForAppResponse(RadioResponseInfo responseInfo, int remainingAttempts) {
155         responseInts(responseInfo, remainingAttempts);
156     }
157 
158     /**
159      * @param responseInfo Response info struct containing response type, serial no. and error
160      * @param remainingAttempts Number of retries remaining, must be equal to -1 if unknown.
161      */
supplyIccPuk2ForAppResponse(RadioResponseInfo responseInfo, int remainingAttempts)162     public void supplyIccPuk2ForAppResponse(RadioResponseInfo responseInfo, int remainingAttempts) {
163         responseInts(responseInfo, remainingAttempts);
164     }
165 
166     /**
167      * @param responseInfo Response info struct containing response type, serial no. and error
168      * @param remainingAttempts Number of retries remaining, must be equal to -1 if unknown.
169      */
changeIccPinForAppResponse(RadioResponseInfo responseInfo, int remainingAttempts)170     public void changeIccPinForAppResponse(RadioResponseInfo responseInfo, int remainingAttempts) {
171         responseInts(responseInfo, remainingAttempts);
172     }
173 
174     /**
175      * @param responseInfo Response info struct containing response type, serial no. and error
176      * @param remainingAttempts Number of retries remaining, must be equal to -1 if unknown.
177      */
changeIccPin2ForAppResponse(RadioResponseInfo responseInfo, int remainingAttempts)178     public void changeIccPin2ForAppResponse(RadioResponseInfo responseInfo, int remainingAttempts) {
179         responseInts(responseInfo, remainingAttempts);
180     }
181 
182     /**
183      * @param responseInfo Response info struct containing response type, serial no. and error
184      * @param retriesRemaining Number of retries remaining, must be equal to -1 if unknown.
185      */
supplyNetworkDepersonalizationResponse(RadioResponseInfo responseInfo, int retriesRemaining)186     public void supplyNetworkDepersonalizationResponse(RadioResponseInfo responseInfo,
187             int retriesRemaining) {
188         responseInts(responseInfo, retriesRemaining);
189     }
190 
191 
192     /**
193      * @param info Response info struct containing response type, serial no. and error
194      * @param persoType SIM Personalisation type
195      * @param remainingRetries postiive values indicates number of retries remaining,
196      * must be equal to -1 if number of retries is infinite.
197      */
supplySimDepersonalizationResponse(RadioResponseInfo info, int persoType, int remainingRetries)198     public void supplySimDepersonalizationResponse(RadioResponseInfo info,
199             int persoType, int remainingRetries) {
200         responseInts(info, persoType, remainingRetries);
201     }
202 
203     /**
204      * @param responseInfo Response info struct containing response type, serial no. and error
205      * @param calls Current call list
206      */
getCurrentCallsResponse(RadioResponseInfo responseInfo, ArrayList<android.hardware.radio.V1_0.Call> calls)207     public void getCurrentCallsResponse(RadioResponseInfo responseInfo,
208             ArrayList<android.hardware.radio.V1_0.Call> calls) {
209         responseNotSupported(responseInfo);
210     }
211 
212     /**
213      * @param responseInfo Response info struct containing response type, serial no. and error
214      * @param calls Current call list
215      */
getCurrentCallsResponse_1_2(RadioResponseInfo responseInfo, ArrayList<android.hardware.radio.V1_2.Call> calls)216     public void getCurrentCallsResponse_1_2(RadioResponseInfo responseInfo,
217             ArrayList<android.hardware.radio.V1_2.Call> calls) {
218         responseCurrentCalls(responseInfo, calls);
219     }
220 
221     /**
222      * @param responseInfo Response info struct containing response type, serial no. and error
223      * @param calls Current call list
224      */
getCurrentCallsResponse_1_6( android.hardware.radio.V1_6.RadioResponseInfo responseInfo, ArrayList<android.hardware.radio.V1_6.Call> calls)225     public void getCurrentCallsResponse_1_6(
226             android.hardware.radio.V1_6.RadioResponseInfo responseInfo,
227             ArrayList<android.hardware.radio.V1_6.Call> calls) {
228         responseCurrentCalls_1_6(responseInfo, calls);
229     }
230 
231     /**
232      * @param responseInfo Response info struct containing response type, serial no. and error
233      */
dialResponse(RadioResponseInfo responseInfo)234     public void dialResponse(RadioResponseInfo responseInfo) {
235         responseVoid(responseInfo);
236     }
237 
238     /**
239      * @param responseInfo Response info struct containing response type, serial no. and error
240      * @param imsi String containing the IMSI
241      */
getIMSIForAppResponse(RadioResponseInfo responseInfo, String imsi)242     public void getIMSIForAppResponse(RadioResponseInfo responseInfo, String imsi) {
243         responseString(responseInfo, imsi);
244     }
245 
246     /**
247      * @param responseInfo Response info struct containing response type, serial no. and error
248      */
hangupConnectionResponse(RadioResponseInfo responseInfo)249     public void hangupConnectionResponse(RadioResponseInfo responseInfo) {
250         responseVoid(responseInfo);
251     }
252 
253     /**
254      * @param responseInfo Response info struct containing response type, serial no. and error
255      */
hangupWaitingOrBackgroundResponse(RadioResponseInfo responseInfo)256     public void hangupWaitingOrBackgroundResponse(RadioResponseInfo responseInfo) {
257         responseVoid(responseInfo);
258     }
259 
260     /**
261      * @param responseInfo Response info struct containing response type, serial no. and error
262      */
hangupForegroundResumeBackgroundResponse(RadioResponseInfo responseInfo)263     public void hangupForegroundResumeBackgroundResponse(RadioResponseInfo responseInfo) {
264         responseVoid(responseInfo);
265     }
266 
267     /**
268      * @param responseInfo Response info struct containing response type, serial no. and error
269      */
switchWaitingOrHoldingAndActiveResponse(RadioResponseInfo responseInfo)270     public void switchWaitingOrHoldingAndActiveResponse(RadioResponseInfo responseInfo) {
271         responseVoid(responseInfo);
272     }
273 
274     /**
275      * @param responseInfo Response info struct containing response type, serial no. and error
276      */
conferenceResponse(RadioResponseInfo responseInfo)277     public void conferenceResponse(RadioResponseInfo responseInfo) {
278         responseVoid(responseInfo);
279     }
280 
281     /**
282      * @param responseInfo Response info struct containing response type, serial no. and error
283      */
rejectCallResponse(RadioResponseInfo responseInfo)284     public void rejectCallResponse(RadioResponseInfo responseInfo) {
285         responseVoid(responseInfo);
286     }
287 
288     /**
289      * @param responseInfo Response info struct containing response type, serial no. and error
290      * @param fcInfo Contains LastCallFailCause and vendor cause code. GSM failure reasons
291      *        are mapped to cause codes defined in TS 24.008 Annex H where possible. CDMA
292      *        failure reasons are derived from the possible call failure scenarios
293      *        described in the "CDMA IS-2000 Release A (C.S0005-A v6.0)" standard.
294      */
getLastCallFailCauseResponse(RadioResponseInfo responseInfo, LastCallFailCauseInfo fcInfo)295     public void getLastCallFailCauseResponse(RadioResponseInfo responseInfo,
296             LastCallFailCauseInfo fcInfo) {
297         responseLastCallFailCauseInfo(responseInfo, fcInfo);
298     }
299 
getSignalStrengthResponse(RadioResponseInfo responseInfo, android.hardware.radio.V1_0.SignalStrength sigStrength)300     public void getSignalStrengthResponse(RadioResponseInfo responseInfo,
301             android.hardware.radio.V1_0.SignalStrength sigStrength) {
302         responseNotSupported(responseInfo);
303     }
304 
305     /**
306      * @param responseInfo Response info struct containing response type, serial no. and error
307      * @param signalStrength Current signal strength of camped/connected cells
308      */
getSignalStrengthResponse_1_2(RadioResponseInfo responseInfo, android.hardware.radio.V1_2.SignalStrength signalStrength)309     public void getSignalStrengthResponse_1_2(RadioResponseInfo responseInfo,
310             android.hardware.radio.V1_2.SignalStrength signalStrength) {
311         responseNotSupported(responseInfo);
312     }
313 
314     /**
315      * @param responseInfo Response info struct containing response type, serial no. and error
316      * @param signalStrength Current signal strength of camped/connected cells
317      */
getSignalStrengthResponse_1_4(RadioResponseInfo responseInfo, android.hardware.radio.V1_4.SignalStrength signalStrength)318     public void getSignalStrengthResponse_1_4(RadioResponseInfo responseInfo,
319             android.hardware.radio.V1_4.SignalStrength signalStrength) {
320         responseSignalStrength(responseInfo, signalStrength);
321     }
322 
323     /**
324      * @param responseInfo Response info struct containing response type, serial no. and error
325      * @param signalStrength Current signal strength of camped/connected cells
326      */
getSignalStrengthResponse_1_6( android.hardware.radio.V1_6.RadioResponseInfo responseInfo, android.hardware.radio.V1_6.SignalStrength signalStrength)327     public void getSignalStrengthResponse_1_6(
328             android.hardware.radio.V1_6.RadioResponseInfo responseInfo,
329             android.hardware.radio.V1_6.SignalStrength signalStrength) {
330         responseSignalStrength_1_6(responseInfo, signalStrength);
331     }
332 
333     /**
334      * @param responseInfo Response info struct containing response type, serial no. and error
335      * @param voiceRegResponse Current Voice registration response as defined by VoiceRegStateResult
336      *        in types.hal
337      */
getVoiceRegistrationStateResponse(RadioResponseInfo responseInfo, VoiceRegStateResult voiceRegResponse)338     public void getVoiceRegistrationStateResponse(RadioResponseInfo responseInfo,
339             VoiceRegStateResult voiceRegResponse) {
340         responseNotSupported(responseInfo);
341     }
342 
343     /**
344      * @param responseInfo Response info struct containing response type, serial no. and error
345      * @param voiceRegResponse Current Voice registration response as defined by VoiceRegStateResult
346      *        in 1.2/types.hal
347      */
getVoiceRegistrationStateResponse_1_2(RadioResponseInfo responseInfo, android.hardware.radio.V1_2.VoiceRegStateResult voiceRegResponse)348     public void getVoiceRegistrationStateResponse_1_2(RadioResponseInfo responseInfo,
349             android.hardware.radio.V1_2.VoiceRegStateResult voiceRegResponse) {
350         RILRequest rr = mRil.processResponse(responseInfo);
351 
352         if (rr != null) {
353             if (responseInfo.error == RadioError.NONE) {
354                 sendMessageResponse(rr.mResult, voiceRegResponse);
355             }
356             mRil.processResponseDone(rr, responseInfo, voiceRegResponse);
357         }
358     }
359 
360     /**
361      * @param responseInfo Response info struct containing response type, serial no. and error
362      * @param voiceRegResponse Current Voice registration response as defined by VoiceRegStateResult
363      *        in 1.5/types.hal
364      */
getVoiceRegistrationStateResponse_1_5(RadioResponseInfo responseInfo, android.hardware.radio.V1_5.RegStateResult voiceRegResponse)365     public void getVoiceRegistrationStateResponse_1_5(RadioResponseInfo responseInfo,
366             android.hardware.radio.V1_5.RegStateResult voiceRegResponse) {
367         RILRequest rr = mRil.processResponse(responseInfo);
368         if (rr == null) {
369             return;
370         }
371 
372         if (responseInfo.error == RadioError.REQUEST_NOT_SUPPORTED) {
373             // Move the data needed for fallback call from rr which will be released soon
374             final int request = rr.getRequest();
375             final Message result = rr.getResult();
376 
377             mRil.mRilHandler.post(() -> {
378                 mRil.setCompatVersion(request, RIL.RADIO_HAL_VERSION_1_4);
379                 mRil.getVoiceRegistrationState(result);
380             });
381 
382             mRil.processResponseFallback(rr, responseInfo, voiceRegResponse);
383             return;
384         } else if (responseInfo.error == RadioError.NONE) {
385             sendMessageResponse(rr.mResult, voiceRegResponse);
386         }
387         mRil.processResponseDone(rr, responseInfo, voiceRegResponse);
388     }
389 
390     /**
391      * @param responseInfo Response info struct containing response type, serial no. and error
392      * @param voiceRegResponse Current Voice registration response as defined by VoiceRegStateResult
393      *        in 1.6/types.hal
394      */
getVoiceRegistrationStateResponse_1_6( android.hardware.radio.V1_6.RadioResponseInfo responseInfo, android.hardware.radio.V1_6.RegStateResult voiceRegResponse)395     public void getVoiceRegistrationStateResponse_1_6(
396             android.hardware.radio.V1_6.RadioResponseInfo responseInfo,
397             android.hardware.radio.V1_6.RegStateResult voiceRegResponse) {
398         RILRequest rr = mRil.processResponse_1_6(responseInfo);
399         if (rr != null) {
400             if (responseInfo.error == RadioError.NONE) {
401                 sendMessageResponse(rr.mResult, voiceRegResponse);
402             }
403             mRil.processResponseDone_1_6(rr, responseInfo, voiceRegResponse);
404         }
405     }
406 
407     /**
408      * @param responseInfo Response info struct containing response type, serial no. and error
409      * @param dataRegResponse Current Data registration response as defined by DataRegStateResult in
410      *        types.hal
411      */
getDataRegistrationStateResponse(RadioResponseInfo responseInfo, DataRegStateResult dataRegResponse)412     public void getDataRegistrationStateResponse(RadioResponseInfo responseInfo,
413             DataRegStateResult dataRegResponse) {
414         responseNotSupported(responseInfo);
415     }
416 
417     /**
418      * @param responseInfo Response info struct containing response type, serial no. and error
419      * @param dataRegResponse Current Data registration response as defined by DataRegStateResult in
420      *        1.2/types.hal
421      */
getDataRegistrationStateResponse_1_2(RadioResponseInfo responseInfo, android.hardware.radio.V1_2.DataRegStateResult dataRegResponse)422     public void getDataRegistrationStateResponse_1_2(RadioResponseInfo responseInfo,
423             android.hardware.radio.V1_2.DataRegStateResult dataRegResponse) {
424         responseNotSupported(responseInfo);
425     }
426 
427     /**
428      * @param responseInfo Response info struct containing response type, serial no. and error
429      * @param dataRegResponse Current Data registration response as defined by DataRegStateResult in
430      *        1.4/types.hal
431      */
getDataRegistrationStateResponse_1_4(RadioResponseInfo responseInfo, android.hardware.radio.V1_4.DataRegStateResult dataRegResponse)432     public void getDataRegistrationStateResponse_1_4(RadioResponseInfo responseInfo,
433             android.hardware.radio.V1_4.DataRegStateResult dataRegResponse) {
434         RILRequest rr = mRil.processResponse(responseInfo);
435 
436         if (rr != null) {
437             if (responseInfo.error == RadioError.NONE) {
438                 sendMessageResponse(rr.mResult, dataRegResponse);
439             }
440             mRil.processResponseDone(rr, responseInfo, dataRegResponse);
441         }
442     }
443 
444     /**
445      * @param responseInfo Response info struct containing response type, serial no. and error
446      * @param dataRegResponse Current Data registration response as defined by DataRegStateResult in
447      *        1.5/types.hal
448      */
getDataRegistrationStateResponse_1_5(RadioResponseInfo responseInfo, android.hardware.radio.V1_5.RegStateResult dataRegResponse)449     public void getDataRegistrationStateResponse_1_5(RadioResponseInfo responseInfo,
450             android.hardware.radio.V1_5.RegStateResult dataRegResponse) {
451         RILRequest rr = mRil.processResponse(responseInfo);
452         if (rr == null) {
453             return;
454         }
455 
456         if (responseInfo.error == RadioError.REQUEST_NOT_SUPPORTED) {
457             // Move the data needed for fallback call from rr which will be released soon
458             final int request = rr.getRequest();
459             final Message result = rr.getResult();
460 
461             mRil.mRilHandler.post(() -> {
462                 mRil.setCompatVersion(request, RIL.RADIO_HAL_VERSION_1_4);
463                 mRil.getDataRegistrationState(result);
464             });
465 
466             mRil.processResponseFallback(rr, responseInfo, dataRegResponse);
467             return;
468         } else if (responseInfo.error == RadioError.NONE) {
469             sendMessageResponse(rr.mResult, dataRegResponse);
470         }
471         mRil.processResponseDone(rr, responseInfo, dataRegResponse);
472     }
473 
474     /**
475      * @param responseInfo Response info struct containing response type, serial no. and error
476      * @param dataRegResponse Current Data registration response as defined by DataRegStateResult in
477      *        1.6/types.hal
478      */
getDataRegistrationStateResponse_1_6( android.hardware.radio.V1_6.RadioResponseInfo responseInfo, android.hardware.radio.V1_6.RegStateResult dataRegResponse)479     public void getDataRegistrationStateResponse_1_6(
480             android.hardware.radio.V1_6.RadioResponseInfo responseInfo,
481             android.hardware.radio.V1_6.RegStateResult dataRegResponse) {
482         RILRequest rr = mRil.processResponse_1_6(responseInfo);
483 
484         if (rr != null) {
485             if (responseInfo.error == RadioError.NONE) {
486                 sendMessageResponse(rr.mResult, dataRegResponse);
487             }
488             mRil.processResponseDone_1_6(rr, responseInfo, dataRegResponse);
489         }
490     }
491 
492     /**
493      * @param responseInfo Response info struct containing response type, serial no. and error
494      * @param longName is long alpha ONS or EONS or empty string if unregistered
495      * @param shortName is short alpha ONS or EONS or empty string if unregistered
496      * @param numeric is 5 or 6 digit numeric code (MCC + MNC) or empty string if unregistered
497      */
getOperatorResponse(RadioResponseInfo responseInfo, String longName, String shortName, String numeric)498     public void getOperatorResponse(RadioResponseInfo responseInfo,
499             String longName, String shortName, String numeric) {
500         responseStrings(responseInfo, longName, shortName, numeric);
501     }
502 
503     /**
504      * @param responseInfo Response info struct containing response type, serial no. and error
505      */
setRadioPowerResponse(RadioResponseInfo responseInfo)506     public void setRadioPowerResponse(RadioResponseInfo responseInfo) {
507         responseVoid(responseInfo);
508         mRil.mLastRadioPowerResult = responseInfo.error;
509     }
510 
511     /**
512      * @param responseInfo Response info struct containing response type, serial no. and error
513      */
sendDtmfResponse(RadioResponseInfo responseInfo)514     public void sendDtmfResponse(RadioResponseInfo responseInfo) {
515         responseVoid(responseInfo);
516     }
517 
518     /**
519      * @param responseInfo Response info struct containing response type, serial no. and error
520      * @param sms Response to sms sent as defined by SendSmsResult in types.hal
521      */
sendSmsResponse(RadioResponseInfo responseInfo, SendSmsResult sms)522     public void sendSmsResponse(RadioResponseInfo responseInfo, SendSmsResult sms) {
523         responseSms(responseInfo, sms);
524     }
525 
526     /**
527      * @param responseInfo Response info struct containing response type, serial no. and error which
528      *                     is defined in 1.6/types.hal
529      * @param sms Response to sms sent as defined by SendSmsResult in types.hal
530      */
sendSmsResponse_1_6(android.hardware.radio.V1_6.RadioResponseInfo responseInfo, SendSmsResult sms)531     public void sendSmsResponse_1_6(android.hardware.radio.V1_6.RadioResponseInfo responseInfo,
532             SendSmsResult sms) {
533         responseSms_1_6(responseInfo, sms);
534     }
535 
536     /**
537      * @param responseInfo Response info struct containing response type, serial no. and error
538      * @param sms Response to sms sent as defined by SendSmsResult in types.hal
539      */
sendSMSExpectMoreResponse(RadioResponseInfo responseInfo, SendSmsResult sms)540     public void sendSMSExpectMoreResponse(RadioResponseInfo responseInfo,
541             SendSmsResult sms) {
542         responseSms(responseInfo, sms);
543     }
544 
545     /**
546      * @param responseInfo Response info struct containing response type, serial no. and error which
547      *                     is defined in 1.6/types.hal
548      * @param sms Response to sms sent as defined by SendSmsResult in 1.6/types.hal
549      */
sendSmsExpectMoreResponse_1_6( android.hardware.radio.V1_6.RadioResponseInfo responseInfo, SendSmsResult sms)550     public void sendSmsExpectMoreResponse_1_6(
551             android.hardware.radio.V1_6.RadioResponseInfo responseInfo, SendSmsResult sms) {
552         responseSms_1_6(responseInfo, sms);
553     }
554 
555     /**
556      * @param responseInfo Response info struct containing response type, serial no. and error
557      * @param setupDataCallResult Response to data call setup as defined by setupDataCallResult in
558      *                            types.hal
559      */
setupDataCallResponse(RadioResponseInfo responseInfo, android.hardware.radio.V1_0.SetupDataCallResult setupDataCallResult)560     public void setupDataCallResponse(RadioResponseInfo responseInfo,
561             android.hardware.radio.V1_0.SetupDataCallResult setupDataCallResult) {
562         responseNotSupported(responseInfo);
563     }
564 
565     /**
566      * @param responseInfo Response info struct containing response type, serial no. and error
567      * @param setupDataCallResult Response to data call setup as defined by setupDataCallResult in
568      *                            1.4/types.hal
569      */
setupDataCallResponse_1_4(RadioResponseInfo responseInfo, android.hardware.radio.V1_4.SetupDataCallResult setupDataCallResult)570     public void setupDataCallResponse_1_4(RadioResponseInfo responseInfo,
571             android.hardware.radio.V1_4.SetupDataCallResult setupDataCallResult) {
572         responseSetupDataCall(responseInfo, setupDataCallResult);
573     }
574 
575     /**
576      * @param responseInfo Response info struct containing response type, serial no. and error
577      * @param setupDataCallResult Response to data call setup as defined by setupDataCallResult in
578      *                            1.5/types.hal
579      */
setupDataCallResponse_1_5(RadioResponseInfo responseInfo, android.hardware.radio.V1_5.SetupDataCallResult setupDataCallResult)580     public void setupDataCallResponse_1_5(RadioResponseInfo responseInfo,
581             android.hardware.radio.V1_5.SetupDataCallResult setupDataCallResult) {
582         responseSetupDataCall(responseInfo, setupDataCallResult);
583     }
584 
585 
586     /**
587      * @param responseInfo Response info struct containing response type, serial no. and error
588      * @param setupDataCallResult Response to data call setup as defined by setupDataCallResult in
589      *                            1.6/types.hal
590      */
setupDataCallResponse_1_6( android.hardware.radio.V1_6.RadioResponseInfo responseInfo, android.hardware.radio.V1_6.SetupDataCallResult setupDataCallResult)591     public void setupDataCallResponse_1_6(
592             android.hardware.radio.V1_6.RadioResponseInfo responseInfo,
593             android.hardware.radio.V1_6.SetupDataCallResult setupDataCallResult) {
594         responseSetupDataCall_1_6(responseInfo, setupDataCallResult);
595     }
596 
597     @Override
getDataCallListResponse_1_6(android.hardware.radio.V1_6.RadioResponseInfo info, ArrayList<SetupDataCallResult> dcResponse)598     public void getDataCallListResponse_1_6(android.hardware.radio.V1_6.RadioResponseInfo info,
599             ArrayList<SetupDataCallResult> dcResponse) {
600         responseDataCallList(info, dcResponse);
601     }
602 
603     @Override
setSimCardPowerResponse_1_6(android.hardware.radio.V1_6.RadioResponseInfo info)604     public void setSimCardPowerResponse_1_6(android.hardware.radio.V1_6.RadioResponseInfo info) {
605         responseVoid_1_6(info);
606     }
607 
608     @Override
setAllowedNetworkTypesBitmapResponse( android.hardware.radio.V1_6.RadioResponseInfo info)609     public void setAllowedNetworkTypesBitmapResponse(
610             android.hardware.radio.V1_6.RadioResponseInfo info) {
611         responseVoid_1_6(info);
612     }
613 
614     @Override
getAllowedNetworkTypesBitmapResponse( android.hardware.radio.V1_6.RadioResponseInfo info, int halRadioAccessFamilyBitmap)615     public void getAllowedNetworkTypesBitmapResponse(
616             android.hardware.radio.V1_6.RadioResponseInfo info, int halRadioAccessFamilyBitmap) {
617         int networkTypeBitmask = RILUtils.convertHalNetworkTypeBitMask(halRadioAccessFamilyBitmap);
618         mRil.mAllowedNetworkTypesBitmask = networkTypeBitmask;
619         responseInts_1_6(info, networkTypeBitmask);
620     }
621 
622     /**
623      * @param responseInfo Response info struct containing response type, serial no. and error
624      * @param iccIo ICC io operation response as defined by IccIoResult in types.hal
625      */
iccIOForAppResponse(RadioResponseInfo responseInfo, android.hardware.radio.V1_0.IccIoResult iccIo)626     public void iccIOForAppResponse(RadioResponseInfo responseInfo,
627             android.hardware.radio.V1_0.IccIoResult iccIo) {
628         responseIccIo(responseInfo, iccIo);
629     }
630 
631     /**
632      * @param responseInfo Response info struct containing response type, serial no. and error
633      */
sendUssdResponse(RadioResponseInfo responseInfo)634     public void sendUssdResponse(RadioResponseInfo responseInfo) {
635         responseVoid(responseInfo);
636     }
637 
638     /**
639      * @param responseInfo Response info struct containing response type, serial no. and error
640      */
cancelPendingUssdResponse(RadioResponseInfo responseInfo)641     public void cancelPendingUssdResponse(RadioResponseInfo responseInfo) {
642         responseVoid(responseInfo);
643     }
644 
645     /**
646      * @param responseInfo Response info struct containing response type, serial no. and error
647      * @param n is "n" parameter from TS 27.007 7.7
648      * @param m is "m" parameter from TS 27.007 7.7
649      */
getClirResponse(RadioResponseInfo responseInfo, int n, int m)650     public void getClirResponse(RadioResponseInfo responseInfo, int n, int m) {
651         responseInts(responseInfo, n, m);
652     }
653 
654     /**
655      * @param responseInfo Response info struct containing response type, serial no. and error
656      */
setClirResponse(RadioResponseInfo responseInfo)657     public void setClirResponse(RadioResponseInfo responseInfo) {
658         responseVoid(responseInfo);
659     }
660 
661     /**
662      * @param responseInfo Response info struct containing response type, serial no. and error
663      * @param callForwardInfos points to a vector of CallForwardInfo, one for
664      *        each distinct registered phone number.
665      */
getCallForwardStatusResponse(RadioResponseInfo responseInfo, ArrayList<android.hardware.radio.V1_0.CallForwardInfo> callForwardInfos)666     public void getCallForwardStatusResponse(RadioResponseInfo responseInfo,
667             ArrayList<android.hardware.radio.V1_0.CallForwardInfo> callForwardInfos) {
668         responseCallForwardInfo(responseInfo, callForwardInfos);
669     }
670 
671     /**
672      * @param responseInfo Response info struct containing response type, serial no. and error
673      */
setCallForwardResponse(RadioResponseInfo responseInfo)674     public void setCallForwardResponse(RadioResponseInfo responseInfo) {
675         responseVoid(responseInfo);
676     }
677 
678     /**
679      * @param responseInfo Response info struct containing response type, serial no. and error
680      * @param enable If current call waiting state is disabled, enable = false else true
681      * @param serviceClass If enable, then callWaitingResp[1]
682      *        must follow, with the TS 27.007 service class bit vector of services
683      *        for which call waiting is enabled.
684      *        For example, if callWaitingResp[0] is 1 and
685      *        callWaitingResp[1] is 3, then call waiting is enabled for data
686      *        and voice and disabled for everything else.
687      */
getCallWaitingResponse(RadioResponseInfo responseInfo, boolean enable, int serviceClass)688     public void getCallWaitingResponse(RadioResponseInfo responseInfo,
689             boolean enable, int serviceClass) {
690         responseInts(responseInfo, enable ? 1 : 0, serviceClass);
691     }
692 
693     /**
694      * @param responseInfo Response info struct containing response type, serial no. and error
695      */
setCallWaitingResponse(RadioResponseInfo responseInfo)696     public void setCallWaitingResponse(RadioResponseInfo responseInfo) {
697         responseVoid(responseInfo);
698     }
699 
700     /**
701      * @param responseInfo Response info struct containing response type, serial no. and error
702      */
acknowledgeLastIncomingGsmSmsResponse(RadioResponseInfo responseInfo)703     public void acknowledgeLastIncomingGsmSmsResponse(RadioResponseInfo responseInfo) {
704         responseVoid(responseInfo);
705     }
706 
707     /**
708      * @param responseInfo Response info struct containing response type, serial no. and error
709      */
acceptCallResponse(RadioResponseInfo responseInfo)710     public void acceptCallResponse(RadioResponseInfo responseInfo) {
711         responseVoid(responseInfo);
712     }
713 
714     /**
715      * @param responseInfo Response info struct containing response type, serial no. and error
716      */
deactivateDataCallResponse(RadioResponseInfo responseInfo)717     public void deactivateDataCallResponse(RadioResponseInfo responseInfo) {
718         responseVoid(responseInfo);
719     }
720 
721     /**
722      * @param responseInfo Response info struct containing response type, serial no. and error
723      * @param response 0 is the TS 27.007 service class bit vector of
724      *        services for which the specified barring facility
725      *        is active. "0" means "disabled for all"
726      */
getFacilityLockForAppResponse(RadioResponseInfo responseInfo, int response)727     public void getFacilityLockForAppResponse(RadioResponseInfo responseInfo, int response) {
728         responseInts(responseInfo, response);
729     }
730 
731     /**
732      * @param responseInfo Response info struct containing response type, serial no. and error
733      * @param retry 0 is the number of retries remaining, or -1 if unknown
734      */
setFacilityLockForAppResponse(RadioResponseInfo responseInfo, int retry)735     public void setFacilityLockForAppResponse(RadioResponseInfo responseInfo, int retry) {
736         responseInts(responseInfo, retry);
737     }
738 
739     /**
740      * @param responseInfo Response info struct containing response type, serial no. and error
741      */
setBarringPasswordResponse(RadioResponseInfo responseInfo)742     public void setBarringPasswordResponse(RadioResponseInfo responseInfo) {
743         responseVoid(responseInfo);
744     }
745 
746     /**
747      * @param responseInfo Response info struct containing response type, serial no. and error
748      * @param selection false for automatic selection, true for manual selection
749      */
getNetworkSelectionModeResponse(RadioResponseInfo responseInfo, boolean selection)750     public void getNetworkSelectionModeResponse(RadioResponseInfo responseInfo, boolean selection) {
751         responseInts(responseInfo, selection ? 1 : 0);
752     }
753 
754     /**
755      * @param responseInfo Response info struct containing response type, serial no. and error
756      */
setNetworkSelectionModeAutomaticResponse(RadioResponseInfo responseInfo)757     public void setNetworkSelectionModeAutomaticResponse(RadioResponseInfo responseInfo) {
758         responseVoid(responseInfo);
759     }
760 
761     /**
762      * @param responseInfo Response info struct containing response type, serial no. and error
763      */
setNetworkSelectionModeManualResponse(RadioResponseInfo responseInfo)764     public void setNetworkSelectionModeManualResponse(RadioResponseInfo responseInfo) {
765         responseVoid(responseInfo);
766     }
767 
768     /**
769      * @param responseInfo Response info struct containing response type, serial no. and error
770      */
setNetworkSelectionModeManualResponse_1_5(RadioResponseInfo responseInfo)771     public void setNetworkSelectionModeManualResponse_1_5(RadioResponseInfo responseInfo) {
772         responseVoid(responseInfo);
773     }
774 
775     /**
776      * @param responseInfo Response info struct containing response type, serial no. and error
777      * @param networkInfos List of network operator information as OperatorInfos defined in
778      *                     types.hal
779      */
getAvailableNetworksResponse(RadioResponseInfo responseInfo, ArrayList<android.hardware.radio.V1_0.OperatorInfo> networkInfos)780     public void getAvailableNetworksResponse(RadioResponseInfo responseInfo,
781             ArrayList<android.hardware.radio.V1_0.OperatorInfo> networkInfos) {
782         responseOperatorInfos(responseInfo, networkInfos);
783     }
784 
785     /**
786      *
787      * @param responseInfo Response info struct containing response type, serial no. and error
788      */
startNetworkScanResponse(RadioResponseInfo responseInfo)789     public void startNetworkScanResponse(RadioResponseInfo responseInfo) {
790         responseNotSupported(responseInfo);
791     }
792 
793     /**
794      * The same method as startNetworkScanResponse, except disallowing error codes
795      * OPERATION_NOT_ALLOWED.
796      *
797      * @param responseInfo Response info struct containing response type, serial no. and error
798      */
startNetworkScanResponse_1_4(RadioResponseInfo responseInfo)799     public void startNetworkScanResponse_1_4(RadioResponseInfo responseInfo) {
800         responseScanStatus(responseInfo, null /*fallbackHalVersion*/);
801     }
802 
803     /**
804      * The same method as startNetworkScanResponse_1_4.
805      *
806      * @param responseInfo Response info struct containing response type, serial no. and error
807      */
startNetworkScanResponse_1_5(RadioResponseInfo responseInfo)808     public void startNetworkScanResponse_1_5(RadioResponseInfo responseInfo) {
809         responseScanStatus(responseInfo, RIL.RADIO_HAL_VERSION_1_4);
810     }
811 
812     /**
813      * @param responseInfo Response info struct containing response type, serial no. and error
814      */
stopNetworkScanResponse(RadioResponseInfo responseInfo)815     public void stopNetworkScanResponse(RadioResponseInfo responseInfo) {
816         responseScanStatus(responseInfo, null /*fallbackHalVersion*/);
817     }
818 
819     /**
820      * @param responseInfo Response info struct containing response type, serial no. and error
821      */
startDtmfResponse(RadioResponseInfo responseInfo)822     public void startDtmfResponse(RadioResponseInfo responseInfo) {
823         responseVoid(responseInfo);
824     }
825 
826     /**
827      * @param responseInfo Response info struct containing response type, serial no. and error
828      */
stopDtmfResponse(RadioResponseInfo responseInfo)829     public void stopDtmfResponse(RadioResponseInfo responseInfo) {
830         responseVoid(responseInfo);
831     }
832 
833     /**
834      * @param responseInfo Response info struct containing response type, serial no. and error
835      * @param version string containing version string for log reporting
836      */
getBasebandVersionResponse(RadioResponseInfo responseInfo, String version)837     public void getBasebandVersionResponse(RadioResponseInfo responseInfo, String version) {
838         responseString(responseInfo, version);
839     }
840 
841     /**
842      * @param responseInfo Response info struct containing response type, serial no. and error
843      */
separateConnectionResponse(RadioResponseInfo responseInfo)844     public void separateConnectionResponse(RadioResponseInfo responseInfo) {
845         responseVoid(responseInfo);
846     }
847 
848     /**
849      * @param responseInfo Response info struct containing response type, serial no. and error
850      */
setMuteResponse(RadioResponseInfo responseInfo)851     public void setMuteResponse(RadioResponseInfo responseInfo) {
852         responseVoid(responseInfo);
853     }
854 
855     /**
856      * @param responseInfo Response info struct containing response type, serial no. and error
857      * @param enable true for "mute enabled" and false for "mute disabled"
858      */
getMuteResponse(RadioResponseInfo responseInfo, boolean enable)859     public void getMuteResponse(RadioResponseInfo responseInfo, boolean enable) {
860         responseInts(responseInfo, enable ? 1 : 0);
861     }
862 
863     /**
864      * @param responseInfo Response info struct containing response type, serial no. and error
865      * @param status indicates CLIP status
866      */
getClipResponse(RadioResponseInfo responseInfo, int status)867     public void getClipResponse(RadioResponseInfo responseInfo, int status) {
868         responseInts(responseInfo, status);
869     }
870 
871     /**
872      * @param responseInfo Response info struct containing response type, serial no. and error
873      * @param dataCallResultList Response to get data call list as defined by setupDataCallResult in
874      *                           types.hal
875      */
getDataCallListResponse(RadioResponseInfo responseInfo, ArrayList<android.hardware.radio.V1_0.SetupDataCallResult> dataCallResultList)876     public void getDataCallListResponse(RadioResponseInfo responseInfo,
877             ArrayList<android.hardware.radio.V1_0.SetupDataCallResult> dataCallResultList) {
878         responseNotSupported(responseInfo);
879     }
880 
881     /**
882      * @param responseInfo Response info struct containing response type, serial no. and error
883      * @param dataCallResultList Response to get data call list as defined by setupDataCallResult in
884      *                           1.4/types.hal
885      */
getDataCallListResponse_1_4(RadioResponseInfo responseInfo, ArrayList<android.hardware.radio.V1_4.SetupDataCallResult> dataCallResultList)886     public void getDataCallListResponse_1_4(RadioResponseInfo responseInfo,
887             ArrayList<android.hardware.radio.V1_4.SetupDataCallResult> dataCallResultList) {
888         responseDataCallList(responseInfo, dataCallResultList);
889     }
890 
891     /**
892      * @param responseInfo Response info struct containing response type, serial no. and error
893      * @param dataCallResultList Response to get data call list as defined by setupDataCallResult in
894      *                           1.5/types.hal
895      */
getDataCallListResponse_1_5(RadioResponseInfo responseInfo, ArrayList<android.hardware.radio.V1_5.SetupDataCallResult> dataCallResultList)896     public void getDataCallListResponse_1_5(RadioResponseInfo responseInfo,
897             ArrayList<android.hardware.radio.V1_5.SetupDataCallResult> dataCallResultList) {
898         responseDataCallList(responseInfo, dataCallResultList);
899     }
900 
901     /**
902      * @param responseInfo Response info struct containing response type, serial no. and error
903      */
setSuppServiceNotificationsResponse(RadioResponseInfo responseInfo)904     public void setSuppServiceNotificationsResponse(RadioResponseInfo responseInfo) {
905         responseVoid(responseInfo);
906     }
907 
908     /**
909      * @param responseInfo Response info struct containing response type, serial no. and error
910      * @param index record index where the message is stored
911      */
writeSmsToSimResponse(RadioResponseInfo responseInfo, int index)912     public void writeSmsToSimResponse(RadioResponseInfo responseInfo, int index) {
913         responseInts(responseInfo, index);
914     }
915 
916     /**
917      * @param responseInfo Response info struct containing response type, serial no. and error
918      */
deleteSmsOnSimResponse(RadioResponseInfo responseInfo)919     public void deleteSmsOnSimResponse(RadioResponseInfo responseInfo) {
920         responseVoid(responseInfo);
921     }
922 
923     /**
924      * @param responseInfo Response info struct containing response type, serial no. and error
925      */
setBandModeResponse(RadioResponseInfo responseInfo)926     public void setBandModeResponse(RadioResponseInfo responseInfo) {
927         responseVoid(responseInfo);
928     }
929 
930     /**
931      * @param responseInfo Response info struct containing response type, serial no. and error
932      * @param bandModes List of RadioBandMode listing supported modes
933      */
getAvailableBandModesResponse(RadioResponseInfo responseInfo, ArrayList<Integer> bandModes)934     public void getAvailableBandModesResponse(RadioResponseInfo responseInfo,
935             ArrayList<Integer> bandModes) {
936         responseIntArrayList(responseInfo, bandModes);
937     }
938 
939     /**
940      * @param responseInfo Response info struct containing response type, serial no. and error
941      * @param commandResponse SAT/USAT response in hexadecimal format
942      *        string starting with first byte of response
943      */
sendEnvelopeResponse(RadioResponseInfo responseInfo, String commandResponse)944     public void sendEnvelopeResponse(RadioResponseInfo responseInfo, String commandResponse) {
945         responseString(responseInfo, commandResponse);
946     }
947 
948     /**
949      * @param responseInfo Response info struct containing response type, serial no. and error
950      */
sendTerminalResponseToSimResponse(RadioResponseInfo responseInfo)951     public void sendTerminalResponseToSimResponse(RadioResponseInfo responseInfo) {
952         responseVoid(responseInfo);
953     }
954 
955     /**
956      * @param responseInfo Response info struct containing response type, serial no. and error
957      */
handleStkCallSetupRequestFromSimResponse(RadioResponseInfo responseInfo)958     public void handleStkCallSetupRequestFromSimResponse(RadioResponseInfo responseInfo) {
959         responseVoid(responseInfo);
960     }
961 
962     /**
963      * @param responseInfo Response info struct containing response type, serial no. and error
964      */
explicitCallTransferResponse(RadioResponseInfo responseInfo)965     public void explicitCallTransferResponse(RadioResponseInfo responseInfo) {
966         responseVoid(responseInfo);
967     }
968 
969     /**
970      * @param responseInfo Response info struct containing response type, serial no. and error
971      */
setPreferredNetworkTypeResponse(RadioResponseInfo responseInfo)972     public void setPreferredNetworkTypeResponse(RadioResponseInfo responseInfo) {
973         responseNotSupported(responseInfo);
974     }
975 
976     /**
977      * Callback of setPreferredNetworkTypeBitmap defined in IRadio.hal.
978      * @param responseInfo Response info struct containing response type, serial no. and error
979      */
setPreferredNetworkTypeBitmapResponse(RadioResponseInfo responseInfo)980     public void setPreferredNetworkTypeBitmapResponse(RadioResponseInfo responseInfo) {
981         responseVoid(responseInfo);
982     }
983 
984     /**
985      * @param responseInfo Response info struct containing response type, serial no. and error
986      * @param nwType RadioPreferredNetworkType defined in types.hal
987      */
getPreferredNetworkTypeResponse(RadioResponseInfo responseInfo, int nwType)988     public void getPreferredNetworkTypeResponse(RadioResponseInfo responseInfo, int nwType) {
989         responseNotSupported(responseInfo);
990     }
991 
992     /**
993      * Callback of the getPreferredNetworkTypeBitmap defined in the IRadio.hal.
994      * @param responseInfo Response info struct containing response type, serial no. and error
995      * @param halRadioAccessFamilyBitmap a 32-bit bitmap of
996      * {@link android.hardware.radio.V1_0.RadioAccessFamily}.
997      */
getPreferredNetworkTypeBitmapResponse( RadioResponseInfo responseInfo, int halRadioAccessFamilyBitmap)998     public void getPreferredNetworkTypeBitmapResponse(
999             RadioResponseInfo responseInfo, int halRadioAccessFamilyBitmap) {
1000         int networkTypeBitmask = RILUtils.convertHalNetworkTypeBitMask(halRadioAccessFamilyBitmap);
1001         mRil.mAllowedNetworkTypesBitmask = networkTypeBitmask;
1002         responseInts(responseInfo, networkTypeBitmask);
1003     }
1004 
1005     /**
1006      * @param responseInfo Response info struct containing response type, serial no. and error
1007      * @param cells Vector of neighboring radio cell information
1008      */
getNeighboringCidsResponse(RadioResponseInfo responseInfo, ArrayList<NeighboringCell> cells)1009     public void getNeighboringCidsResponse(RadioResponseInfo responseInfo,
1010             ArrayList<NeighboringCell> cells) {
1011         responseCellList(responseInfo, cells);
1012     }
1013 
1014     /**
1015      * @param responseInfo Response info struct containing response type, serial no. and error
1016      */
setLocationUpdatesResponse(RadioResponseInfo responseInfo)1017     public void setLocationUpdatesResponse(RadioResponseInfo responseInfo) {
1018         responseVoid(responseInfo);
1019     }
1020 
1021     /**
1022      * @param responseInfo Response info struct containing response type, serial no. and error
1023      */
setCdmaSubscriptionSourceResponse(RadioResponseInfo responseInfo)1024     public void setCdmaSubscriptionSourceResponse(RadioResponseInfo responseInfo) {
1025         responseVoid(responseInfo);
1026     }
1027 
1028     /**
1029      * @param responseInfo Response info struct containing response type, serial no. and error
1030      */
setCdmaRoamingPreferenceResponse(RadioResponseInfo responseInfo)1031     public void setCdmaRoamingPreferenceResponse(RadioResponseInfo responseInfo) {
1032         responseVoid(responseInfo);
1033     }
1034 
1035     /**
1036      * @param responseInfo Response info struct containing response type, serial no. and error
1037      * @param type CdmaRoamingType defined in types.hal
1038      */
getCdmaRoamingPreferenceResponse(RadioResponseInfo responseInfo, int type)1039     public void getCdmaRoamingPreferenceResponse(RadioResponseInfo responseInfo, int type) {
1040         responseInts(responseInfo, type);
1041     }
1042 
1043     /**
1044      * @param responseInfo Response info struct containing response type, serial no. and error
1045      */
setTTYModeResponse(RadioResponseInfo responseInfo)1046     public void setTTYModeResponse(RadioResponseInfo responseInfo) {
1047         responseVoid(responseInfo);
1048     }
1049 
1050     /**
1051      * @param responseInfo Response info struct containing response type, serial no. and error
1052      * @param mode TTY mode
1053      */
getTTYModeResponse(RadioResponseInfo responseInfo, int mode)1054     public void getTTYModeResponse(RadioResponseInfo responseInfo, int mode) {
1055         responseInts(responseInfo, mode);
1056     }
1057 
1058     /**
1059      * @param responseInfo Response info struct containing response type, serial no. and error
1060      */
setPreferredVoicePrivacyResponse(RadioResponseInfo responseInfo)1061     public void setPreferredVoicePrivacyResponse(RadioResponseInfo responseInfo) {
1062         responseVoid(responseInfo);
1063     }
1064 
1065     /**
1066      * @param responseInfo Response info struct containing response type, serial no. and error
1067      * @param enable false for Standard Privacy Mode (Public Long Code Mask)
1068      *        true for Enhanced Privacy Mode (Private Long Code Mask)
1069      */
getPreferredVoicePrivacyResponse(RadioResponseInfo responseInfo, boolean enable)1070     public void getPreferredVoicePrivacyResponse(RadioResponseInfo responseInfo, boolean enable) {
1071         responseInts(responseInfo, enable ? 1 : 0);
1072     }
1073 
1074     /**
1075      * @param responseInfo Response info struct containing response type, serial no. and error
1076      */
sendCDMAFeatureCodeResponse(RadioResponseInfo responseInfo)1077     public void sendCDMAFeatureCodeResponse(RadioResponseInfo responseInfo) {
1078         responseVoid(responseInfo);
1079     }
1080 
1081     /**
1082      * @param responseInfo Response info struct containing response type, serial no. and error
1083      */
sendBurstDtmfResponse(RadioResponseInfo responseInfo)1084     public void sendBurstDtmfResponse(RadioResponseInfo responseInfo) {
1085         responseVoid(responseInfo);
1086     }
1087 
1088     /**
1089      * @param responseInfo Response info struct containing response type, serial no. and error
1090      * @param sms Sms result struct as defined by SendSmsResult in types.hal
1091      */
sendCdmaSmsResponse(RadioResponseInfo responseInfo, SendSmsResult sms)1092     public void sendCdmaSmsResponse(RadioResponseInfo responseInfo, SendSmsResult sms) {
1093         responseSms(responseInfo, sms);
1094     }
1095 
1096     /**
1097      * @param responseInfo Response info struct containing response type, serial no. and error which
1098      *                     is defined in 1.6/types.hal
1099      * @param sms Sms result struct as defined by SendSmsResult in types.hal
1100      */
sendCdmaSmsResponse_1_6(android.hardware.radio.V1_6.RadioResponseInfo responseInfo, SendSmsResult sms)1101     public void sendCdmaSmsResponse_1_6(android.hardware.radio.V1_6.RadioResponseInfo responseInfo,
1102             SendSmsResult sms) {
1103         responseSms_1_6(responseInfo, sms);
1104     }
1105 
1106     /**
1107      * @param responseInfo Response info struct containing response type, serial no. and error
1108      * @param sms Response to sms sent as defined by SendSmsResult in types.hal
1109      */
sendCdmaSmsExpectMoreResponse(RadioResponseInfo responseInfo, SendSmsResult sms)1110     public void sendCdmaSmsExpectMoreResponse(RadioResponseInfo responseInfo,
1111             SendSmsResult sms) {
1112         responseSms(responseInfo, sms);
1113     }
1114 
1115     /**
1116      * @param responseInfo Response info struct containing response type, serial no. and error which
1117      *                     is defined in 1.6/types.hal
1118      * @param sms Sms result struct as defined by SendSmsResult in types.hal
1119      */
sendCdmaSmsExpectMoreResponse_1_6( android.hardware.radio.V1_6.RadioResponseInfo responseInfo, SendSmsResult sms)1120     public void sendCdmaSmsExpectMoreResponse_1_6(
1121             android.hardware.radio.V1_6.RadioResponseInfo responseInfo, SendSmsResult sms) {
1122         responseSms_1_6(responseInfo, sms);
1123     }
1124 
1125     /**
1126      * @param responseInfo Response info struct containing response type, serial no. and error
1127      */
setDataThrottlingResponse( android.hardware.radio.V1_6.RadioResponseInfo responseInfo)1128     public void setDataThrottlingResponse(
1129             android.hardware.radio.V1_6.RadioResponseInfo responseInfo) {
1130         responseVoid_1_6(responseInfo);
1131     }
1132 
1133     /**
1134      * @param responseInfo Response info struct containing response type, serial no. and error
1135      */
acknowledgeLastIncomingCdmaSmsResponse(RadioResponseInfo responseInfo)1136     public void acknowledgeLastIncomingCdmaSmsResponse(RadioResponseInfo responseInfo) {
1137         responseVoid(responseInfo);
1138     }
1139 
1140     /**
1141      * @param responseInfo Response info struct containing response type, serial no. and error
1142      * @param configs Vector of GSM/WCDMA Cell broadcast configs
1143      */
getGsmBroadcastConfigResponse(RadioResponseInfo responseInfo, ArrayList<GsmBroadcastSmsConfigInfo> configs)1144     public void getGsmBroadcastConfigResponse(RadioResponseInfo responseInfo,
1145             ArrayList<GsmBroadcastSmsConfigInfo> configs) {
1146         responseGmsBroadcastConfig(responseInfo, configs);
1147     }
1148 
1149     /**
1150      * @param responseInfo Response info struct containing response type, serial no. and error
1151      */
setGsmBroadcastConfigResponse(RadioResponseInfo responseInfo)1152     public void setGsmBroadcastConfigResponse(RadioResponseInfo responseInfo) {
1153         responseVoid(responseInfo);
1154     }
1155 
1156     /**
1157      * @param responseInfo Response info struct containing response type, serial no. and error
1158      */
setGsmBroadcastActivationResponse(RadioResponseInfo responseInfo)1159     public void setGsmBroadcastActivationResponse(RadioResponseInfo responseInfo) {
1160         responseVoid(responseInfo);
1161     }
1162 
1163     /**
1164      * @param responseInfo Response info struct containing response type, serial no. and error
1165      * @param configs Vector of CDMA Broadcast SMS configs.
1166      */
getCdmaBroadcastConfigResponse(RadioResponseInfo responseInfo, ArrayList<CdmaBroadcastSmsConfigInfo> configs)1167     public void getCdmaBroadcastConfigResponse(RadioResponseInfo responseInfo,
1168             ArrayList<CdmaBroadcastSmsConfigInfo> configs) {
1169         responseCdmaBroadcastConfig(responseInfo, configs);
1170     }
1171 
1172     /**
1173      * @param responseInfo Response info struct containing response type, serial no. and error
1174      */
setCdmaBroadcastConfigResponse(RadioResponseInfo responseInfo)1175     public void setCdmaBroadcastConfigResponse(RadioResponseInfo responseInfo) {
1176         responseVoid(responseInfo);
1177     }
1178 
1179     /**
1180      * @param responseInfo Response info struct containing response type, serial no. and error
1181      */
setCdmaBroadcastActivationResponse(RadioResponseInfo responseInfo)1182     public void setCdmaBroadcastActivationResponse(RadioResponseInfo responseInfo) {
1183         responseVoid(responseInfo);
1184     }
1185 
1186     /**
1187      * @param responseInfo Response info struct containing response type, serial no. and error
1188      * @param mdn MDN if CDMA subscription is available
1189      * @param hSid is a comma separated list of H_SID (Home SID) if
1190      *        CDMA subscription is available, in decimal format
1191      * @param hNid is a comma separated list of H_NID (Home NID) if
1192      *        CDMA subscription is available, in decimal format
1193      * @param min MIN (10 digits, MIN2+MIN1) if CDMA subscription is available
1194      * @param prl PRL version if CDMA subscription is available
1195      */
getCDMASubscriptionResponse(RadioResponseInfo responseInfo, String mdn, String hSid, String hNid, String min, String prl)1196     public void getCDMASubscriptionResponse(RadioResponseInfo responseInfo, String mdn,
1197             String hSid, String hNid, String min, String prl) {
1198         responseStrings(responseInfo, mdn, hSid, hNid, min, prl);
1199     }
1200 
1201     /**
1202      * @param responseInfo Response info struct containing response type, serial no. and error
1203      * @param index record index where the cmda sms message is stored
1204      */
writeSmsToRuimResponse(RadioResponseInfo responseInfo, int index)1205     public void writeSmsToRuimResponse(RadioResponseInfo responseInfo, int index) {
1206         responseInts(responseInfo, index);
1207     }
1208 
1209     /**
1210      * @param responseInfo Response info struct containing response type, serial no. and error
1211      */
deleteSmsOnRuimResponse(RadioResponseInfo responseInfo)1212     public void deleteSmsOnRuimResponse(RadioResponseInfo responseInfo) {
1213         responseVoid(responseInfo);
1214     }
1215 
1216     /**
1217      * @param responseInfo Response info struct containing response type, serial no. and error
1218      * @param imei IMEI if GSM subscription is available
1219      * @param imeisv IMEISV if GSM subscription is available
1220      * @param esn ESN if CDMA subscription is available
1221      * @param meid MEID if CDMA subscription is available
1222      */
getDeviceIdentityResponse(RadioResponseInfo responseInfo, String imei, String imeisv, String esn, String meid)1223     public void getDeviceIdentityResponse(RadioResponseInfo responseInfo, String imei,
1224             String imeisv, String esn, String meid) {
1225         responseStrings(responseInfo, imei, imeisv, esn, meid);
1226     }
1227 
1228     /**
1229      * @param responseInfo Response info struct containing response type, serial no. and error
1230      */
exitEmergencyCallbackModeResponse(RadioResponseInfo responseInfo)1231     public void exitEmergencyCallbackModeResponse(RadioResponseInfo responseInfo) {
1232         responseVoid(responseInfo);
1233     }
1234 
1235     /**
1236      * @param responseInfo Response info struct containing response type, serial no. and error
1237      * @param smsc Short Message Service Center address on the device
1238      */
getSmscAddressResponse(RadioResponseInfo responseInfo, String smsc)1239     public void getSmscAddressResponse(RadioResponseInfo responseInfo, String smsc) {
1240         responseString(responseInfo, smsc);
1241     }
1242 
1243     /**
1244      * @param responseInfo Response info struct containing response type, serial no. and error
1245      */
setSmscAddressResponse(RadioResponseInfo responseInfo)1246     public void setSmscAddressResponse(RadioResponseInfo responseInfo) {
1247         responseVoid(responseInfo);
1248     }
1249 
1250     /**
1251      * @param responseInfo Response info struct containing response type, serial no. and error
1252      */
reportSmsMemoryStatusResponse(RadioResponseInfo responseInfo)1253     public void reportSmsMemoryStatusResponse(RadioResponseInfo responseInfo) {
1254         responseVoid(responseInfo);
1255     }
1256 
1257     /**
1258      * @param responseInfo Response info struct containing response type, serial no. and error
1259      */
reportStkServiceIsRunningResponse(RadioResponseInfo responseInfo)1260     public void reportStkServiceIsRunningResponse(RadioResponseInfo responseInfo) {
1261         responseVoid(responseInfo);
1262     }
1263 
1264     /**
1265      * @param responseInfo Response info struct containing response type, serial no. and error
1266      * @param source CDMA subscription source
1267      */
getCdmaSubscriptionSourceResponse(RadioResponseInfo responseInfo, int source)1268     public void getCdmaSubscriptionSourceResponse(RadioResponseInfo responseInfo, int source) {
1269         responseInts(responseInfo, source);
1270     }
1271 
1272     /**
1273      * This method is deprecated and should not be used.
1274      *
1275      * @param responseInfo Response info struct containing response type, serial no. and error
1276      * @param response response string of the challenge/response algo for ISIM auth in base64 format
1277      */
requestIsimAuthenticationResponse(RadioResponseInfo responseInfo, String response)1278     public void requestIsimAuthenticationResponse(RadioResponseInfo responseInfo, String response) {
1279         throw new RuntimeException("Inexplicable response received for requestIsimAuthentication");
1280     }
1281 
1282     /**
1283      * @param responseInfo Response info struct containing response type, serial no. and error
1284      */
acknowledgeIncomingGsmSmsWithPduResponse(RadioResponseInfo responseInfo)1285     public void acknowledgeIncomingGsmSmsWithPduResponse(RadioResponseInfo responseInfo) {
1286         responseVoid(responseInfo);
1287     }
1288 
1289     /**
1290      * @param responseInfo Response info struct containing response type, serial no. and error
1291      * @param iccIo IccIoResult as defined in types.hal corresponding to ICC IO response
1292      */
sendEnvelopeWithStatusResponse(RadioResponseInfo responseInfo, android.hardware.radio.V1_0.IccIoResult iccIo)1293     public void sendEnvelopeWithStatusResponse(RadioResponseInfo responseInfo,
1294             android.hardware.radio.V1_0.IccIoResult iccIo) {
1295         responseIccIo(responseInfo, iccIo);
1296     }
1297 
1298     /**
1299      * @param responseInfo Response info struct containing response type, serial no. and error
1300      * @param rat Current voice RAT
1301      */
getVoiceRadioTechnologyResponse(RadioResponseInfo responseInfo, int rat)1302     public void getVoiceRadioTechnologyResponse(RadioResponseInfo responseInfo, int rat) {
1303         responseInts(responseInfo, rat);
1304     }
1305 
getCellInfoListResponse(RadioResponseInfo responseInfo, ArrayList<android.hardware.radio.V1_0.CellInfo> cellInfo)1306     public void getCellInfoListResponse(RadioResponseInfo responseInfo,
1307             ArrayList<android.hardware.radio.V1_0.CellInfo> cellInfo) {
1308         responseNotSupported(responseInfo);
1309     }
1310 
1311     /**
1312      * @param responseInfo Response info struct containing response type, serial no. and error
1313      * @param cellInfo List of current cell information known to radio
1314      */
getCellInfoListResponse_1_2(RadioResponseInfo responseInfo, ArrayList<android.hardware.radio.V1_2.CellInfo> cellInfo)1315     public void getCellInfoListResponse_1_2(RadioResponseInfo responseInfo,
1316             ArrayList<android.hardware.radio.V1_2.CellInfo> cellInfo) {
1317         responseNotSupported(responseInfo);
1318     }
1319 
1320     /**
1321      * @param responseInfo Response info struct containing response type, serial no. and error.
1322      * @param cellInfo List of current cell information known to radio.
1323      */
getCellInfoListResponse_1_4(RadioResponseInfo responseInfo, ArrayList<android.hardware.radio.V1_4.CellInfo> cellInfo)1324     public void getCellInfoListResponse_1_4(RadioResponseInfo responseInfo,
1325             ArrayList<android.hardware.radio.V1_4.CellInfo> cellInfo) {
1326         responseCellInfoList(responseInfo, cellInfo);
1327     }
1328 
1329     /**
1330      * @param responseInfo Response info struct containing response type, serial no. and error.
1331      * @param cellInfo List of current cell information known to radio.
1332      */
getCellInfoListResponse_1_5(RadioResponseInfo responseInfo, ArrayList<android.hardware.radio.V1_5.CellInfo> cellInfo)1333     public void getCellInfoListResponse_1_5(RadioResponseInfo responseInfo,
1334             ArrayList<android.hardware.radio.V1_5.CellInfo> cellInfo) {
1335         responseCellInfoList(responseInfo, cellInfo);
1336     }
1337 
1338     /**
1339      * @param responseInfo Response info struct containing response type, serial no. and error.
1340      * @param cellInfo List of current cell information known to radio.
1341      */
getCellInfoListResponse_1_6( android.hardware.radio.V1_6.RadioResponseInfo responseInfo, ArrayList<android.hardware.radio.V1_6.CellInfo> cellInfo)1342     public void getCellInfoListResponse_1_6(
1343             android.hardware.radio.V1_6.RadioResponseInfo responseInfo,
1344             ArrayList<android.hardware.radio.V1_6.CellInfo> cellInfo) {
1345         responseCellInfoList_1_6(responseInfo, cellInfo);
1346     }
1347 
1348     /**
1349      * @param responseInfo Response info struct containing response type, serial no. and error
1350      */
setCellInfoListRateResponse(RadioResponseInfo responseInfo)1351     public void setCellInfoListRateResponse(RadioResponseInfo responseInfo) {
1352         responseVoid(responseInfo);
1353     }
1354 
1355     /**
1356      * @param responseInfo Response info struct containing response type, serial no. and error
1357      */
setInitialAttachApnResponse(RadioResponseInfo responseInfo)1358     public void setInitialAttachApnResponse(RadioResponseInfo responseInfo) {
1359         responseVoid(responseInfo);
1360     }
1361 
1362     /**
1363      * @param responseInfo Response info struct containing response type, serial no. and error
1364      */
setInitialAttachApnResponse_1_5(RadioResponseInfo responseInfo)1365     public void setInitialAttachApnResponse_1_5(RadioResponseInfo responseInfo) {
1366         responseVoid(responseInfo);
1367     }
1368 
1369     /**
1370      * @param responseInfo Response info struct containing response type, serial no. and error
1371      * @param isRegistered false = not registered, true = registered
1372      * @param ratFamily RadioTechnologyFamily as defined in types.hal. This value is valid only if
1373      *        isRegistered is true.
1374      */
getImsRegistrationStateResponse(RadioResponseInfo responseInfo, boolean isRegistered, int ratFamily)1375     public void getImsRegistrationStateResponse(RadioResponseInfo responseInfo,
1376             boolean isRegistered, int ratFamily) {
1377         responseInts(responseInfo, isRegistered ? 1 : 0,
1378                 ratFamily == RadioTechnologyFamily.THREE_GPP ? PhoneConstants.PHONE_TYPE_GSM
1379                         : PhoneConstants.PHONE_TYPE_CDMA);
1380     }
1381 
1382     /**
1383      * @param responseInfo Response info struct containing response type, serial no. and error
1384      * @param sms Response to sms sent as defined by SendSmsResult in types.hal
1385      */
sendImsSmsResponse(RadioResponseInfo responseInfo, SendSmsResult sms)1386     public void sendImsSmsResponse(RadioResponseInfo responseInfo, SendSmsResult sms) {
1387         responseSms(responseInfo, sms);
1388     }
1389 
1390     /**
1391      * @param responseInfo Response info struct containing response type, serial no. and error
1392      * @param result IccIoResult as defined in types.hal
1393      */
iccTransmitApduBasicChannelResponse(RadioResponseInfo responseInfo, android.hardware.radio.V1_0.IccIoResult result)1394     public void iccTransmitApduBasicChannelResponse(RadioResponseInfo responseInfo,
1395             android.hardware.radio.V1_0.IccIoResult result) {
1396         responseIccIo(responseInfo, result);
1397     }
1398 
1399     /**
1400      * @param responseInfo Response info struct containing response type, serial no. and error
1401      * @param channelId session id of the logical channel.
1402      * @param selectResponse Contains the select response for the open channel command with one
1403      *        byte per integer
1404      */
iccOpenLogicalChannelResponse(RadioResponseInfo responseInfo, int channelId, ArrayList<Byte> selectResponse)1405     public void iccOpenLogicalChannelResponse(RadioResponseInfo responseInfo, int channelId,
1406             ArrayList<Byte> selectResponse) {
1407         ArrayList<Integer> arr = new ArrayList<>();
1408         arr.add(channelId);
1409         for (int i = 0; i < selectResponse.size(); i++) {
1410             arr.add((int) selectResponse.get(i));
1411         }
1412         responseIntArrayList(responseInfo, arr);
1413     }
1414 
1415     /**
1416      * @param responseInfo Response info struct containing response type, serial no. and error
1417      */
iccCloseLogicalChannelResponse(RadioResponseInfo responseInfo)1418     public void iccCloseLogicalChannelResponse(RadioResponseInfo responseInfo) {
1419         responseVoid(responseInfo);
1420     }
1421 
1422     /**
1423      * @param responseInfo Response info struct containing response type, serial no. and error
1424      * @param result IccIoResult as defined in types.hal
1425      */
iccTransmitApduLogicalChannelResponse(RadioResponseInfo responseInfo, android.hardware.radio.V1_0.IccIoResult result)1426     public void iccTransmitApduLogicalChannelResponse(RadioResponseInfo responseInfo,
1427             android.hardware.radio.V1_0.IccIoResult result) {
1428         responseIccIo(responseInfo, result);
1429     }
1430 
1431     /**
1432      * @param responseInfo Response info struct containing response type, serial no. and error
1433      * @param result string containing the contents of the NV item
1434      */
nvReadItemResponse(RadioResponseInfo responseInfo, String result)1435     public void nvReadItemResponse(RadioResponseInfo responseInfo, String result) {
1436         responseString(responseInfo, result);
1437     }
1438 
1439     /**
1440      * @param responseInfo Response info struct containing response type, serial no. and error
1441      */
nvWriteItemResponse(RadioResponseInfo responseInfo)1442     public void nvWriteItemResponse(RadioResponseInfo responseInfo) {
1443         responseVoid(responseInfo);
1444     }
1445 
1446     /**
1447      * @param responseInfo Response info struct containing response type, serial no. and error
1448      */
nvWriteCdmaPrlResponse(RadioResponseInfo responseInfo)1449     public void nvWriteCdmaPrlResponse(RadioResponseInfo responseInfo) {
1450         responseVoid(responseInfo);
1451     }
1452 
1453     /**
1454      * @param responseInfo Response info struct containing response type, serial no. and error
1455      */
nvResetConfigResponse(RadioResponseInfo responseInfo)1456     public void nvResetConfigResponse(RadioResponseInfo responseInfo) {
1457         responseVoid(responseInfo);
1458     }
1459 
1460     /**
1461      * @param responseInfo Response info struct containing response type, serial no. and error
1462      */
setUiccSubscriptionResponse(RadioResponseInfo responseInfo)1463     public void setUiccSubscriptionResponse(RadioResponseInfo responseInfo) {
1464         responseVoid(responseInfo);
1465     }
1466 
1467     /**
1468      * @param responseInfo Response info struct containing response type, serial no. and error
1469      */
setDataAllowedResponse(RadioResponseInfo responseInfo)1470     public void setDataAllowedResponse(RadioResponseInfo responseInfo) {
1471         responseVoid(responseInfo);
1472     }
1473 
1474     /**
1475      * @param responseInfo Response info struct containing response type, serial no. and error
1476      */
getHardwareConfigResponse(RadioResponseInfo responseInfo, ArrayList<android.hardware.radio.V1_0.HardwareConfig> config)1477     public void getHardwareConfigResponse(RadioResponseInfo responseInfo,
1478             ArrayList<android.hardware.radio.V1_0.HardwareConfig> config) {
1479         responseHardwareConfig(responseInfo, config);
1480     }
1481 
1482     /**
1483      * @param responseInfo Response info struct containing response type, serial no. and error
1484      * @param result IccIoResult as defined in types.hal
1485      */
requestIccSimAuthenticationResponse(RadioResponseInfo responseInfo, android.hardware.radio.V1_0.IccIoResult result)1486     public void requestIccSimAuthenticationResponse(RadioResponseInfo responseInfo,
1487             android.hardware.radio.V1_0.IccIoResult result) {
1488         RILRequest rr = mRil.processResponse(responseInfo);
1489 
1490         if (rr != null) {
1491             IccIoResult ret = new IccIoResult(result.sw1, result.sw2,
1492                     TextUtils.isEmpty(result.simResponse) ? null : result.simResponse.getBytes());
1493             if (responseInfo.error == RadioError.NONE) {
1494                 sendMessageResponse(rr.mResult, ret);
1495             }
1496             mRil.processResponseDone(rr, responseInfo, ret);
1497         }
1498     }
1499 
1500     /**
1501      * @param responseInfo Response info struct containing response type, serial no. and error
1502      */
setDataProfileResponse(RadioResponseInfo responseInfo)1503     public void setDataProfileResponse(RadioResponseInfo responseInfo) {
1504         responseVoid(responseInfo);
1505     }
1506 
1507     /**
1508      * @param responseInfo Response info struct containing response type, serial no. and error
1509      */
setDataProfileResponse_1_5(RadioResponseInfo responseInfo)1510     public void setDataProfileResponse_1_5(RadioResponseInfo responseInfo) {
1511         responseVoid(responseInfo);
1512     }
1513 
1514     /**
1515      * @param responseInfo Response info struct containing response type, serial no. and error
1516      */
requestShutdownResponse(RadioResponseInfo responseInfo)1517     public void requestShutdownResponse(RadioResponseInfo responseInfo) {
1518         responseVoid(responseInfo);
1519     }
1520 
getRadioCapabilityResponse(RadioResponseInfo responseInfo, android.hardware.radio.V1_0.RadioCapability rc)1521     public void getRadioCapabilityResponse(RadioResponseInfo responseInfo,
1522             android.hardware.radio.V1_0.RadioCapability rc) {
1523         RILRequest rr = mRil.processResponse(responseInfo);
1524 
1525         if (rr != null) {
1526             RadioCapability ret = RILUtils.convertHalRadioCapability(rc, mRil);
1527             if (responseInfo.error == RadioError.REQUEST_NOT_SUPPORTED
1528                     || responseInfo.error == RadioError.GENERIC_FAILURE) {
1529                 // we should construct the RAF bitmask the radio
1530                 // supports based on preferred network bitmasks
1531                 ret = mRil.makeStaticRadioCapability();
1532                 responseInfo.error = RadioError.NONE;
1533             }
1534             if (responseInfo.error == RadioError.NONE) {
1535                 sendMessageResponse(rr.mResult, ret);
1536             }
1537             mRil.processResponseDone(rr, responseInfo, ret);
1538         }
1539     }
1540 
setRadioCapabilityResponse(RadioResponseInfo responseInfo, android.hardware.radio.V1_0.RadioCapability rc)1541     public void setRadioCapabilityResponse(RadioResponseInfo responseInfo,
1542             android.hardware.radio.V1_0.RadioCapability rc) {
1543         responseRadioCapability(responseInfo, rc);
1544     }
1545 
1546     /**
1547      * @param responseInfo Response info struct containing response type, serial no. and error
1548      * @param statusInfo LceStatusInfo indicating LCE status
1549      */
startLceServiceResponse(RadioResponseInfo responseInfo, LceStatusInfo statusInfo)1550     public void startLceServiceResponse(RadioResponseInfo responseInfo, LceStatusInfo statusInfo) {
1551         responseNotSupported(responseInfo);
1552     }
1553 
1554     /**
1555      * @param responseInfo Response info struct containing response type, serial no. and error
1556      * @param statusInfo LceStatusInfo indicating LCE status
1557      */
stopLceServiceResponse(RadioResponseInfo responseInfo, LceStatusInfo statusInfo)1558     public void stopLceServiceResponse(RadioResponseInfo responseInfo, LceStatusInfo statusInfo) {
1559         responseNotSupported(responseInfo);
1560     }
1561 
pullLceDataResponse(RadioResponseInfo responseInfo, LceDataInfo lceInfo)1562     public void pullLceDataResponse(RadioResponseInfo responseInfo, LceDataInfo lceInfo) {
1563         responseNotSupported(responseInfo);
1564     }
1565 
1566     /**
1567      * @param responseInfo Response info struct containing response type, serial no. and error
1568      * @param activityInfo modem activity information
1569      */
getModemActivityInfoResponse(RadioResponseInfo responseInfo, ActivityStatsInfo activityInfo)1570     public void getModemActivityInfoResponse(RadioResponseInfo responseInfo,
1571             ActivityStatsInfo activityInfo) {
1572         responseActivityData(responseInfo, activityInfo);
1573     }
1574 
1575     /**
1576      * @param responseInfo Response info struct containing response type, serial no. and error
1577      * @param isEnabled Indicates whether NR dual connectivity is enabled or not, True if enabled
1578      *               else false.
1579      */
isNrDualConnectivityEnabledResponse( android.hardware.radio.V1_6.RadioResponseInfo responseInfo, boolean isEnabled)1580     public void isNrDualConnectivityEnabledResponse(
1581             android.hardware.radio.V1_6.RadioResponseInfo  responseInfo,
1582             boolean isEnabled) {
1583         RILRequest rr = mRil.processResponse_1_6(responseInfo);
1584 
1585         if (rr != null) {
1586             if (responseInfo.error == RadioError.NONE) {
1587                 sendMessageResponse(rr.mResult, isEnabled);
1588             }
1589             mRil.processResponseDone_1_6(rr, responseInfo, isEnabled);
1590         }
1591     }
1592 
1593     /**
1594      * @param info Response info struct containing response type, serial no. and error
1595      */
setNrDualConnectivityStateResponse( android.hardware.radio.V1_6.RadioResponseInfo info)1596     public void setNrDualConnectivityStateResponse(
1597             android.hardware.radio.V1_6.RadioResponseInfo info) {
1598         responseVoid_1_6(info);
1599     }
1600 
1601     /**
1602      * @param responseInfo Response info struct containing response type, serial no. and error
1603      * @param numAllowed number of allowed carriers which have been set correctly.
1604      *        On success, it must match the length of list Carriers->allowedCarriers.
1605      *        if Length of allowed carriers list is 0, numAllowed = 0.
1606      */
setAllowedCarriersResponse(RadioResponseInfo responseInfo, int numAllowed)1607     public void setAllowedCarriersResponse(RadioResponseInfo responseInfo, int numAllowed) {
1608         responseNotSupported(responseInfo);
1609     }
1610 
1611     /**
1612      * @param responseInfo Response info struct containing response type, serial no. and error
1613      */
setAllowedCarriersResponse_1_4(RadioResponseInfo responseInfo)1614     public void setAllowedCarriersResponse_1_4(RadioResponseInfo responseInfo) {
1615         int ret = TelephonyManager.SET_CARRIER_RESTRICTION_ERROR;
1616         RILRequest rr = mRil.processResponse(responseInfo);
1617         if (rr != null) {
1618             mRil.riljLog("setAllowedCarriersResponse_1_4 - error = " + responseInfo.error);
1619 
1620             if (responseInfo.error == RadioError.NONE) {
1621                 ret = TelephonyManager.SET_CARRIER_RESTRICTION_SUCCESS;
1622                 sendMessageResponse(rr.mResult, ret);
1623             }
1624             mRil.processResponseDone(rr, responseInfo, ret);
1625         }
1626     }
1627 
1628     /**
1629      * @param responseInfo Response info struct containing response type, serial no. and error
1630      * @param allAllowed true only when all carriers are allowed. Ignore "carriers" struct.
1631      *                   If false, consider "carriers" struct
1632      * @param carriers Carrier restriction information.
1633      */
getAllowedCarriersResponse(RadioResponseInfo responseInfo, boolean allAllowed, CarrierRestrictions carriers)1634     public void getAllowedCarriersResponse(RadioResponseInfo responseInfo, boolean allAllowed,
1635             CarrierRestrictions carriers) {
1636         responseNotSupported(responseInfo);
1637     }
1638 
1639     /**
1640      * @param responseInfo Response info struct containing response type, serial no. and error
1641      * @param carrierRestrictions Carrier restriction information.
1642      * @param multiSimPolicy Policy for multi-sim devices.
1643      */
getAllowedCarriersResponse_1_4(RadioResponseInfo responseInfo, CarrierRestrictionsWithPriority carrierRestrictions, int multiSimPolicy)1644     public void getAllowedCarriersResponse_1_4(RadioResponseInfo responseInfo,
1645             CarrierRestrictionsWithPriority carrierRestrictions, int multiSimPolicy) {
1646         RILRequest rr = mRil.processResponse(responseInfo);
1647         if (rr == null) {
1648             return;
1649         }
1650 
1651         int policy = CarrierRestrictionRules.MULTISIM_POLICY_NONE;
1652         if (multiSimPolicy == SimLockMultiSimPolicy.ONE_VALID_SIM_MUST_BE_PRESENT) {
1653             policy = CarrierRestrictionRules.MULTISIM_POLICY_ONE_VALID_SIM_MUST_BE_PRESENT;
1654         }
1655 
1656         int carrierRestrictionDefault =
1657                 CarrierRestrictionRules.CARRIER_RESTRICTION_DEFAULT_NOT_ALLOWED;
1658         if (!carrierRestrictions.allowedCarriersPrioritized) {
1659             carrierRestrictionDefault = CarrierRestrictionRules.CARRIER_RESTRICTION_DEFAULT_ALLOWED;
1660         }
1661 
1662         CarrierRestrictionRules ret = CarrierRestrictionRules.newBuilder()
1663                 .setAllowedCarriers(RILUtils.convertHalCarrierList(
1664                         carrierRestrictions.allowedCarriers))
1665                 .setExcludedCarriers(RILUtils.convertHalCarrierList(
1666                         carrierRestrictions.excludedCarriers))
1667                 .setDefaultCarrierRestriction(carrierRestrictionDefault)
1668                 .setMultiSimPolicy(policy)
1669                 .build();
1670 
1671         if (responseInfo.error == RadioError.NONE) {
1672             sendMessageResponse(rr.mResult, ret);
1673         }
1674         mRil.processResponseDone(rr, responseInfo, ret);
1675     }
1676 
1677     /**
1678      * @param responseInfo Response info struct containing response type, serial no. and error
1679      */
sendDeviceStateResponse(RadioResponseInfo responseInfo)1680     public void sendDeviceStateResponse(RadioResponseInfo responseInfo) {
1681         responseVoid(responseInfo);
1682     }
1683 
1684     /**
1685      * @param responseInfo Response info struct containing response type, serial no. and error
1686      */
setCarrierInfoForImsiEncryptionResponse(RadioResponseInfo responseInfo)1687     public void setCarrierInfoForImsiEncryptionResponse(RadioResponseInfo responseInfo) {
1688         responseVoid(responseInfo);
1689     }
1690 
1691     /**
1692      * @param responseInfo Response info struct containing response type, serial no. and error
1693      */
setIndicationFilterResponse(RadioResponseInfo responseInfo)1694     public void setIndicationFilterResponse(RadioResponseInfo responseInfo) {
1695         responseVoid(responseInfo);
1696     }
1697 
1698     /**
1699      * @param responseInfo Response info struct containing response type, serial no. and error
1700      */
setIndicationFilterResponse_1_5(RadioResponseInfo responseInfo)1701     public void setIndicationFilterResponse_1_5(RadioResponseInfo responseInfo) {
1702         responseVoid(responseInfo);
1703     }
1704 
1705     /**
1706      * @param responseInfo Response info struct containing response type, serial no. and error
1707      */
setSimCardPowerResponse(RadioResponseInfo responseInfo)1708     public void setSimCardPowerResponse(RadioResponseInfo responseInfo) {
1709         responseNotSupported(responseInfo);
1710     }
1711 
1712     /**
1713      * @param responseInfo Response info struct containing response type, serial no. and error
1714      */
setSignalStrengthReportingCriteriaResponse(RadioResponseInfo responseInfo)1715     public void setSignalStrengthReportingCriteriaResponse(RadioResponseInfo responseInfo) {
1716         responseVoid(responseInfo);
1717     }
1718 
1719     /**
1720      * @param responseInfo Response info struct containing response type, serial no. and error
1721      */
setSignalStrengthReportingCriteriaResponse_1_5(RadioResponseInfo responseInfo)1722     public void setSignalStrengthReportingCriteriaResponse_1_5(RadioResponseInfo responseInfo) {
1723         responseVoid(responseInfo);
1724     }
1725 
1726     /**
1727      * @param responseInfo Response info struct containing response type, serial no. and error
1728      */
setLinkCapacityReportingCriteriaResponse(RadioResponseInfo responseInfo)1729     public void setLinkCapacityReportingCriteriaResponse(RadioResponseInfo responseInfo) {
1730         responseVoid(responseInfo);
1731     }
1732 
1733     /**
1734      * @param responseInfo Response info struct containing response type, serial no. and error
1735      */
setLinkCapacityReportingCriteriaResponse_1_5(RadioResponseInfo responseInfo)1736     public void setLinkCapacityReportingCriteriaResponse_1_5(RadioResponseInfo responseInfo) {
1737         responseVoid(responseInfo);
1738     }
1739 
1740     /**
1741      * @param responseInfo Response info struct containing response type, serial no. and error
1742      */
setSimCardPowerResponse_1_1(RadioResponseInfo responseInfo)1743     public void setSimCardPowerResponse_1_1(RadioResponseInfo responseInfo) {
1744         responseVoid(responseInfo);
1745     }
1746 
1747     /**
1748      * @param responseInfo Response info struct containing response type, serial no. and error
1749      * @param keepaliveStatus status of the keepalive with a handle for the session
1750      */
startKeepaliveResponse(RadioResponseInfo responseInfo, android.hardware.radio.V1_1.KeepaliveStatus keepaliveStatus)1751     public void startKeepaliveResponse(RadioResponseInfo responseInfo,
1752             android.hardware.radio.V1_1.KeepaliveStatus keepaliveStatus) {
1753 
1754         RILRequest rr = mRil.processResponse(responseInfo);
1755         if (rr == null) return;
1756 
1757         KeepaliveStatus ret = null;
1758         try {
1759             switch(responseInfo.error) {
1760                 case RadioError.NONE:
1761                     int convertedStatus = RILUtils.convertHalKeepaliveStatusCode(
1762                             keepaliveStatus.code);
1763                     if (convertedStatus < 0) {
1764                         ret = new KeepaliveStatus(KeepaliveStatus.ERROR_UNSUPPORTED);
1765                     } else {
1766                         ret = new KeepaliveStatus(
1767                                 keepaliveStatus.sessionHandle, convertedStatus);
1768                     }
1769                     // If responseInfo.error is NONE, response function sends the response message
1770                     // even if result is actually an error.
1771                     sendMessageResponse(rr.mResult, ret);
1772                     break;
1773                 case RadioError.REQUEST_NOT_SUPPORTED:
1774                     ret = new KeepaliveStatus(KeepaliveStatus.ERROR_UNSUPPORTED);
1775                     break;
1776                 case RadioError.NO_RESOURCES:
1777                     ret = new KeepaliveStatus(KeepaliveStatus.ERROR_NO_RESOURCES);
1778                     break;
1779                 default:
1780                     ret = new KeepaliveStatus(KeepaliveStatus.ERROR_UNKNOWN);
1781                     break;
1782             }
1783         } finally {
1784             // If responseInfo.error != NONE, the processResponseDone sends the response message.
1785             mRil.processResponseDone(rr, responseInfo, ret);
1786         }
1787     }
1788 
1789     /**
1790      * @param responseInfo Response info struct containing response type, serial no. and error
1791      */
stopKeepaliveResponse(RadioResponseInfo responseInfo)1792     public void stopKeepaliveResponse(RadioResponseInfo responseInfo) {
1793         RILRequest rr = mRil.processResponse(responseInfo);
1794         if (rr == null) return;
1795 
1796         try {
1797             if (responseInfo.error == RadioError.NONE) {
1798                 sendMessageResponse(rr.mResult, null);
1799             } else {
1800                 //TODO: Error code translation
1801             }
1802         } finally {
1803             mRil.processResponseDone(rr, responseInfo, null);
1804         }
1805     }
1806 
1807     /**
1808      * @param responseInfo Response info struct containing response type, serial no. and error.
1809      */
getSimPhonebookRecordsResponse( android.hardware.radio.V1_6.RadioResponseInfo responseInfo)1810     public void getSimPhonebookRecordsResponse(
1811             android.hardware.radio.V1_6.RadioResponseInfo responseInfo) {
1812         responseVoid_1_6(responseInfo);
1813     }
1814 
1815     /**
1816      * @param responseInfo Response info struct containing response type, serial no. and error.
1817      * @param pbCapacity Contains the adn, email, anr capacities in the sim card.
1818      */
getSimPhonebookCapacityResponse( android.hardware.radio.V1_6.RadioResponseInfo responseInfo, android.hardware.radio.V1_6.PhonebookCapacity pbCapacity)1819     public void getSimPhonebookCapacityResponse(
1820             android.hardware.radio.V1_6.RadioResponseInfo responseInfo,
1821             android.hardware.radio.V1_6.PhonebookCapacity pbCapacity) {
1822         AdnCapacity capacity = RILUtils.convertHalPhonebookCapacity(pbCapacity);
1823         responseAdnCapacity(responseInfo, capacity);
1824     }
1825 
1826     /**
1827      * @param responseInfo Response info struct containing response type, serial no. and error.
1828      * @param updatedRecordIndex The index of the updated record.
1829      */
updateSimPhonebookRecordsResponse( android.hardware.radio.V1_6.RadioResponseInfo responseInfo, int updatedRecordIndex)1830     public void updateSimPhonebookRecordsResponse(
1831             android.hardware.radio.V1_6.RadioResponseInfo responseInfo,
1832             int updatedRecordIndex) {
1833         responseInts_1_6(responseInfo, updatedRecordIndex);
1834     }
1835 
responseAdnCapacity( android.hardware.radio.V1_6.RadioResponseInfo responseInfo, AdnCapacity capacity)1836     private void responseAdnCapacity(
1837             android.hardware.radio.V1_6.RadioResponseInfo responseInfo,
1838             AdnCapacity capacity) {
1839         RILRequest rr = mRil.processResponse_1_6(responseInfo);
1840         if (rr != null) {
1841             if (responseInfo.error == RadioError.NONE) {
1842                 sendMessageResponse(rr.mResult, capacity);
1843             }
1844             mRil.processResponseDone_1_6(rr, responseInfo, capacity);
1845         }
1846     }
1847 
responseIccCardStatus(RadioResponseInfo responseInfo, android.hardware.radio.V1_4.CardStatus cardStatus)1848     private void responseIccCardStatus(RadioResponseInfo responseInfo,
1849             android.hardware.radio.V1_4.CardStatus cardStatus) {
1850         RILRequest rr = mRil.processResponse(responseInfo);
1851 
1852         if (rr != null) {
1853             IccCardStatus iccCardStatus = RILUtils.convertHalCardStatus(cardStatus.base.base);
1854             IccSlotPortMapping slotPortMapping = new IccSlotPortMapping();
1855             slotPortMapping.mPhysicalSlotIndex = cardStatus.base.physicalSlotId;
1856             iccCardStatus.mSlotPortMapping = slotPortMapping;
1857             iccCardStatus.atr = cardStatus.base.atr;
1858             iccCardStatus.iccid = cardStatus.base.iccid;
1859             iccCardStatus.eid = cardStatus.eid;
1860             mRil.riljLog("responseIccCardStatus: from HIDL: " + iccCardStatus);
1861             if (responseInfo.error == RadioError.NONE) {
1862                 sendMessageResponse(rr.mResult, iccCardStatus);
1863             }
1864             mRil.processResponseDone(rr, responseInfo, iccCardStatus);
1865         }
1866     }
1867 
responseIccCardStatus_1_5(RadioResponseInfo responseInfo, android.hardware.radio.V1_5.CardStatus cardStatus)1868     private void responseIccCardStatus_1_5(RadioResponseInfo responseInfo,
1869             android.hardware.radio.V1_5.CardStatus cardStatus) {
1870         RILRequest rr = mRil.processResponse(responseInfo);
1871 
1872         if (rr != null) {
1873             IccCardStatus iccCardStatus = RILUtils.convertHalCardStatus(cardStatus);
1874             mRil.riljLog("responseIccCardStatus: from HIDL: " + iccCardStatus);
1875             if (responseInfo.error == RadioError.NONE) {
1876                 sendMessageResponse(rr.mResult, iccCardStatus);
1877             }
1878             mRil.processResponseDone(rr, responseInfo, iccCardStatus);
1879         }
1880     }
1881 
1882     /**
1883      * @param responseInfo Response info struct containing response type, serial no. and error
1884      */
emergencyDialResponse(RadioResponseInfo responseInfo)1885     public void emergencyDialResponse(RadioResponseInfo responseInfo) {
1886         responseVoid(responseInfo);
1887     }
1888 
responseInts(RadioResponseInfo responseInfo, int ...var)1889     private void responseInts(RadioResponseInfo responseInfo, int ...var) {
1890         final ArrayList<Integer> ints = new ArrayList<>();
1891         for (int i = 0; i < var.length; i++) {
1892             ints.add(var[i]);
1893         }
1894         responseIntArrayList(responseInfo, ints);
1895     }
1896 
responseInts_1_6(android.hardware.radio.V1_6.RadioResponseInfo responseInfo, int ...var)1897     private void responseInts_1_6(android.hardware.radio.V1_6.RadioResponseInfo responseInfo,
1898             int ...var) {
1899         final ArrayList<Integer> ints = new ArrayList<>();
1900         for (int i = 0; i < var.length; i++) {
1901             ints.add(var[i]);
1902         }
1903         responseIntArrayList_1_6(responseInfo, ints);
1904     }
1905 
1906     /**
1907      * Send int array response
1908      * @param service radio service that received the response
1909      * @param ril RIL to send response
1910      * @param responseInfo responseInfo
1911      * @param var response int array
1912      */
responseInts(int service, RIL ril, android.hardware.radio.RadioResponseInfo responseInfo, int ...var)1913     public static void responseInts(int service, RIL ril,
1914             android.hardware.radio.RadioResponseInfo responseInfo, int ...var) {
1915         final ArrayList<Integer> ints = new ArrayList<>();
1916         for (int i = 0; i < var.length; i++) {
1917             ints.add(var[i]);
1918         }
1919         responseIntArrayList(service, ril, responseInfo, ints);
1920     }
1921 
responseIntArrayList(RadioResponseInfo responseInfo, ArrayList<Integer> var)1922     private void responseIntArrayList(RadioResponseInfo responseInfo, ArrayList<Integer> var) {
1923         RILRequest rr = mRil.processResponse(responseInfo);
1924 
1925         if (rr != null) {
1926             int[] ret = new int[var.size()];
1927             for (int i = 0; i < var.size(); i++) {
1928                 ret[i] = var.get(i);
1929             }
1930             if (responseInfo.error == RadioError.NONE) {
1931                 sendMessageResponse(rr.mResult, ret);
1932             }
1933             mRil.processResponseDone(rr, responseInfo, ret);
1934         }
1935     }
1936 
responseIntArrayList_1_6( android.hardware.radio.V1_6.RadioResponseInfo responseInfo, ArrayList<Integer> var)1937     private void responseIntArrayList_1_6(
1938             android.hardware.radio.V1_6.RadioResponseInfo responseInfo, ArrayList<Integer> var) {
1939         RILRequest rr = mRil.processResponse_1_6(responseInfo);
1940 
1941         if (rr != null) {
1942             int[] ret = new int[var.size()];
1943             for (int i = 0; i < var.size(); i++) {
1944                 ret[i] = var.get(i);
1945             }
1946             if (responseInfo.error == RadioError.NONE) {
1947                 sendMessageResponse(rr.mResult, ret);
1948             }
1949             mRil.processResponseDone_1_6(rr, responseInfo, ret);
1950         }
1951     }
1952 
1953     /**
1954      * Send int array list response
1955      * @param service radio service that received the response
1956      * @param ril RIL to send response
1957      * @param responseInfo responseInfo
1958      * @param var response int array list
1959      */
responseIntArrayList(int service, RIL ril, android.hardware.radio.RadioResponseInfo responseInfo, ArrayList<Integer> var)1960     public static void responseIntArrayList(int service, RIL ril,
1961             android.hardware.radio.RadioResponseInfo responseInfo, ArrayList<Integer> var) {
1962         RILRequest rr = ril.processResponse(service, responseInfo);
1963 
1964         if (rr != null) {
1965             int[] ret = new int[var.size()];
1966             for (int i = 0; i < var.size(); i++) {
1967                 ret[i] = var.get(i);
1968             }
1969             if (responseInfo.error == RadioError.NONE) {
1970                 sendMessageResponse(rr.mResult, ret);
1971             }
1972             ril.processResponseDone(rr, responseInfo, ret);
1973         }
1974     }
1975 
responseCurrentCalls(RadioResponseInfo responseInfo, ArrayList<android.hardware.radio.V1_2.Call> calls)1976     private void responseCurrentCalls(RadioResponseInfo responseInfo,
1977             ArrayList<android.hardware.radio.V1_2.Call> calls) {
1978         RILRequest rr = mRil.processResponse(responseInfo);
1979 
1980         if (rr != null) {
1981             int num = calls.size();
1982             ArrayList<DriverCall> dcCalls = new ArrayList<>(num);
1983             DriverCall dc;
1984 
1985             for (int i = 0; i < num; i++) {
1986                 dc = RILUtils.convertToDriverCall(calls.get(i));
1987 
1988                 dcCalls.add(dc);
1989 
1990                 if (dc.isVoicePrivacy) {
1991                     mRil.mVoicePrivacyOnRegistrants.notifyRegistrants();
1992                     mRil.riljLog("InCall VoicePrivacy is enabled");
1993                 } else {
1994                     mRil.mVoicePrivacyOffRegistrants.notifyRegistrants();
1995                     mRil.riljLog("InCall VoicePrivacy is disabled");
1996                 }
1997             }
1998 
1999             Collections.sort(dcCalls);
2000 
2001             if ((num == 0) && mRil.mTestingEmergencyCall.getAndSet(false)) {
2002                 if (mRil.mEmergencyCallbackModeRegistrant != null) {
2003                     mRil.riljLog("responseCurrentCalls: call ended, testing emergency call,"
2004                             + " notify ECM Registrants");
2005                     mRil.mEmergencyCallbackModeRegistrant.notifyRegistrant();
2006                 }
2007             }
2008 
2009             if (responseInfo.error == RadioError.NONE) {
2010                 sendMessageResponse(rr.mResult, dcCalls);
2011             }
2012             mRil.processResponseDone(rr, responseInfo, dcCalls);
2013         }
2014     }
2015 
responseCurrentCalls_1_6( android.hardware.radio.V1_6.RadioResponseInfo responseInfo, ArrayList<android.hardware.radio.V1_6.Call> calls)2016     private void responseCurrentCalls_1_6(
2017             android.hardware.radio.V1_6.RadioResponseInfo responseInfo,
2018             ArrayList<android.hardware.radio.V1_6.Call> calls) {
2019         RILRequest rr = mRil.processResponse_1_6(responseInfo);
2020 
2021         if (rr != null) {
2022             int num = calls.size();
2023             ArrayList<DriverCall> dcCalls = new ArrayList<DriverCall>(num);
2024             DriverCall dc;
2025 
2026             for (int i = 0; i < num; i++) {
2027                 dc = RILUtils.convertToDriverCall(calls.get(i));
2028 
2029                 dcCalls.add(dc);
2030 
2031                 if (dc.isVoicePrivacy) {
2032                     mRil.mVoicePrivacyOnRegistrants.notifyRegistrants();
2033                     mRil.riljLog("InCall VoicePrivacy is enabled");
2034                 } else {
2035                     mRil.mVoicePrivacyOffRegistrants.notifyRegistrants();
2036                     mRil.riljLog("InCall VoicePrivacy is disabled");
2037                 }
2038             }
2039 
2040             Collections.sort(dcCalls);
2041 
2042             if ((num == 0) && mRil.mTestingEmergencyCall.getAndSet(false)) {
2043                 if (mRil.mEmergencyCallbackModeRegistrant != null) {
2044                     mRil.riljLog("responseCurrentCalls: call ended, testing emergency call,"
2045                             + " notify ECM Registrants");
2046                     mRil.mEmergencyCallbackModeRegistrant.notifyRegistrant();
2047                 }
2048             }
2049 
2050             if (responseInfo.error == RadioError.NONE) {
2051                 sendMessageResponse(rr.mResult, dcCalls);
2052             }
2053             mRil.processResponseDone_1_6(rr, responseInfo, dcCalls);
2054         }
2055     }
2056 
responseNotSupported(RadioResponseInfo responseInfo)2057     private void responseNotSupported(RadioResponseInfo responseInfo) {
2058         RILRequest rr = mRil.processResponse(responseInfo);
2059         if (rr != null) {
2060             mRil.riljLog(RILUtils.requestToString(rr.mRequest) + "not supported on IRadio < 1.4");
2061             responseInfo.error = RadioError.REQUEST_NOT_SUPPORTED;
2062             mRil.processResponseDone(rr, responseInfo, null);
2063         }
2064     }
2065 
responseVoid(RadioResponseInfo responseInfo)2066     private void responseVoid(RadioResponseInfo responseInfo) {
2067         RILRequest rr = mRil.processResponse(responseInfo);
2068 
2069         if (rr != null) {
2070             Object ret = null;
2071             if (responseInfo.error == RadioError.NONE) {
2072                 sendMessageResponse(rr.mResult, ret);
2073             }
2074             mRil.processResponseDone(rr, responseInfo, ret);
2075         }
2076     }
2077 
responseVoid_1_6(android.hardware.radio.V1_6.RadioResponseInfo responseInfo)2078     private void responseVoid_1_6(android.hardware.radio.V1_6.RadioResponseInfo responseInfo) {
2079         RILRequest rr = mRil.processResponse_1_6(responseInfo);
2080 
2081         if (rr != null) {
2082             Object ret = null;
2083             if (responseInfo.error == RadioError.NONE) {
2084                 sendMessageResponse(rr.mResult, ret);
2085             }
2086             mRil.processResponseDone_1_6(rr, responseInfo, ret);
2087         }
2088     }
2089 
2090     /**
2091      * Send void response
2092      * @param service radio service that received the response
2093      * @param ril RIL to send response
2094      * @param responseInfo response void
2095      */
responseVoid(int service, RIL ril, android.hardware.radio.RadioResponseInfo responseInfo)2096     public static void responseVoid(int service, RIL ril,
2097             android.hardware.radio.RadioResponseInfo responseInfo) {
2098         RILRequest rr = ril.processResponse(service, responseInfo);
2099 
2100         if (rr != null) {
2101             Object ret = null;
2102             if (responseInfo.error == RadioError.NONE) {
2103                 sendMessageResponse(rr.mResult, ret);
2104             }
2105             ril.processResponseDone(rr, responseInfo, ret);
2106         }
2107     }
2108 
responseString(RadioResponseInfo responseInfo, String str)2109     private void responseString(RadioResponseInfo responseInfo, String str) {
2110         RILRequest rr = mRil.processResponse(responseInfo);
2111 
2112         if (rr != null) {
2113             if (responseInfo.error == RadioError.NONE) {
2114                 sendMessageResponse(rr.mResult, str);
2115             }
2116             mRil.processResponseDone(rr, responseInfo, str);
2117         }
2118     }
2119 
2120     /**
2121      * Send string response
2122      * @param service radio service that received the response
2123      * @param ril RIL to send response
2124      * @param responseInfo responseInfo
2125      * @param str response string
2126      */
responseString(int service, RIL ril, android.hardware.radio.RadioResponseInfo responseInfo, String str)2127     public static void responseString(int service, RIL ril,
2128             android.hardware.radio.RadioResponseInfo responseInfo, String str) {
2129         RILRequest rr = ril.processResponse(service, responseInfo);
2130 
2131         if (rr != null) {
2132             if (responseInfo.error == RadioError.NONE) {
2133                 sendMessageResponse(rr.mResult, str);
2134             }
2135             ril.processResponseDone(rr, responseInfo, str);
2136         }
2137     }
2138 
responseStrings(RadioResponseInfo responseInfo, String ...str)2139     private void responseStrings(RadioResponseInfo responseInfo, String ...str) {
2140         ArrayList<String> strings = new ArrayList<>();
2141         for (int i = 0; i < str.length; i++) {
2142             strings.add(str[i]);
2143         }
2144         responseStringArrayList(mRil, responseInfo, strings);
2145     }
2146 
2147     /**
2148      * Send String array response
2149      * @param service radio service that received the response
2150      * @param ril RIL to send response
2151      * @param responseInfo responseInfo
2152      * @param str String array
2153      */
responseStrings(int service, RIL ril, android.hardware.radio.RadioResponseInfo responseInfo, String ...str)2154     public static void responseStrings(int service, RIL ril,
2155             android.hardware.radio.RadioResponseInfo responseInfo, String ...str) {
2156         ArrayList<String> strings = new ArrayList<>();
2157         for (int i = 0; i < str.length; i++) {
2158             strings.add(str[i]);
2159         }
2160         responseStringArrayList(service, ril, responseInfo, strings);
2161     }
2162 
responseStringArrayList(RIL ril, RadioResponseInfo responseInfo, ArrayList<String> strings)2163     static void responseStringArrayList(RIL ril, RadioResponseInfo responseInfo,
2164             ArrayList<String> strings) {
2165         RILRequest rr = ril.processResponse(responseInfo);
2166 
2167         if (rr != null) {
2168             String[] ret = new String[strings.size()];
2169             for (int i = 0; i < strings.size(); i++) {
2170                 ret[i] = strings.get(i);
2171             }
2172             if (responseInfo.error == RadioError.NONE) {
2173                 sendMessageResponse(rr.mResult, ret);
2174             }
2175             ril.processResponseDone(rr, responseInfo, ret);
2176         }
2177     }
2178 
responseStringArrayList(int service, RIL ril, android.hardware.radio.RadioResponseInfo responseInfo, ArrayList<String> strings)2179     private static void responseStringArrayList(int service, RIL ril,
2180             android.hardware.radio.RadioResponseInfo responseInfo, ArrayList<String> strings) {
2181         RILRequest rr = ril.processResponse(service, responseInfo);
2182 
2183         if (rr != null) {
2184             String[] ret = new String[strings.size()];
2185             for (int i = 0; i < strings.size(); i++) {
2186                 ret[i] = strings.get(i);
2187             }
2188             if (responseInfo.error == RadioError.NONE) {
2189                 sendMessageResponse(rr.mResult, ret);
2190             }
2191             ril.processResponseDone(rr, responseInfo, ret);
2192         }
2193     }
2194 
responseLastCallFailCauseInfo(RadioResponseInfo responseInfo, LastCallFailCauseInfo fcInfo)2195     private void responseLastCallFailCauseInfo(RadioResponseInfo responseInfo,
2196             LastCallFailCauseInfo fcInfo) {
2197         RILRequest rr = mRil.processResponse(responseInfo);
2198 
2199         if (rr != null) {
2200             LastCallFailCause ret = new LastCallFailCause();
2201             ret.causeCode = fcInfo.causeCode;
2202             ret.vendorCause = fcInfo.vendorCause;
2203             if (responseInfo.error == RadioError.NONE) {
2204                 sendMessageResponse(rr.mResult, ret);
2205             }
2206             mRil.processResponseDone(rr, responseInfo, ret);
2207         }
2208     }
2209 
responseSignalStrength( RadioResponseInfo responseInfo, android.hardware.radio.V1_4.SignalStrength signalStrength)2210     private void responseSignalStrength(
2211             RadioResponseInfo responseInfo,
2212             android.hardware.radio.V1_4.SignalStrength signalStrength) {
2213         RILRequest rr = mRil.processResponse(responseInfo);
2214 
2215         if (rr != null) {
2216             SignalStrength ret = RILUtils.convertHalSignalStrength(signalStrength);
2217             if (responseInfo.error == RadioError.NONE) {
2218                 sendMessageResponse(rr.mResult, ret);
2219             }
2220             mRil.processResponseDone(rr, responseInfo, ret);
2221         }
2222     }
2223 
responseSignalStrength_1_6( android.hardware.radio.V1_6.RadioResponseInfo responseInfo, android.hardware.radio.V1_6.SignalStrength signalStrength)2224     private void responseSignalStrength_1_6(
2225             android.hardware.radio.V1_6.RadioResponseInfo responseInfo,
2226             android.hardware.radio.V1_6.SignalStrength signalStrength) {
2227         RILRequest rr = mRil.processResponse_1_6(responseInfo);
2228 
2229         if (rr != null) {
2230             SignalStrength ret = RILUtils.convertHalSignalStrength(signalStrength);
2231             if (responseInfo.error == RadioError.NONE) {
2232                 sendMessageResponse(rr.mResult, ret);
2233             }
2234             mRil.processResponseDone_1_6(rr, responseInfo, ret);
2235         }
2236     }
2237 
responseSms(RadioResponseInfo responseInfo, SendSmsResult sms)2238     private void responseSms(RadioResponseInfo responseInfo, SendSmsResult sms) {
2239         RILRequest rr = mRil.processResponse(responseInfo);
2240 
2241         if (rr != null) {
2242             long messageId = RIL.getOutgoingSmsMessageId(rr.mResult);
2243             SmsResponse ret = new SmsResponse(sms.messageRef, sms.ackPDU, sms.errorCode, messageId);
2244             if (responseInfo.error == RadioError.NONE) {
2245                 sendMessageResponse(rr.mResult, ret);
2246             }
2247             mRil.processResponseDone(rr, responseInfo, ret);
2248         }
2249     }
2250 
responseSms_1_6(android.hardware.radio.V1_6.RadioResponseInfo responseInfo, SendSmsResult sms)2251     private void responseSms_1_6(android.hardware.radio.V1_6.RadioResponseInfo responseInfo,
2252             SendSmsResult sms) {
2253         RILRequest rr = mRil.processResponse_1_6(responseInfo);
2254 
2255         if (rr != null) {
2256             long messageId = RIL.getOutgoingSmsMessageId(rr.mResult);
2257             SmsResponse ret = new SmsResponse(sms.messageRef, sms.ackPDU, sms.errorCode, messageId);
2258             if (responseInfo.error == RadioError.NONE) {
2259                 sendMessageResponse(rr.mResult, ret);
2260             }
2261             mRil.processResponseDone_1_6(rr, responseInfo, ret);
2262         }
2263     }
2264 
responseSetupDataCall(RadioResponseInfo responseInfo, Object setupDataCallResult)2265     private void responseSetupDataCall(RadioResponseInfo responseInfo,
2266             Object setupDataCallResult) {
2267         RILRequest rr = mRil.processResponse(responseInfo);
2268 
2269         if (rr != null) {
2270             DataCallResponse response = RILUtils.convertHalDataCallResult(setupDataCallResult);
2271             if (responseInfo.error == RadioError.NONE) {
2272                 sendMessageResponse(rr.mResult, response);
2273             }
2274             mRil.processResponseDone(rr, responseInfo, response);
2275         }
2276     }
2277 
responseSetupDataCall_1_6( android.hardware.radio.V1_6.RadioResponseInfo responseInfo, Object setupDataCallResult)2278     private void responseSetupDataCall_1_6(
2279             android.hardware.radio.V1_6.RadioResponseInfo responseInfo,
2280             Object setupDataCallResult) {
2281         RILRequest rr = mRil.processResponse_1_6(responseInfo);
2282 
2283         if (rr != null) {
2284             DataCallResponse response = RILUtils.convertHalDataCallResult(setupDataCallResult);
2285             if (responseInfo.error == RadioError.NONE) {
2286                 sendMessageResponse(rr.mResult, response);
2287             }
2288             mRil.processResponseDone_1_6(rr, responseInfo, response);
2289         }
2290     }
2291 
responseIccIo(RadioResponseInfo responseInfo, android.hardware.radio.V1_0.IccIoResult result)2292     private void responseIccIo(RadioResponseInfo responseInfo,
2293             android.hardware.radio.V1_0.IccIoResult result) {
2294         RILRequest rr = mRil.processResponse(responseInfo);
2295 
2296         if (rr != null) {
2297             IccIoResult ret = new IccIoResult(result.sw1, result.sw2, result.simResponse);
2298             if (responseInfo.error == RadioError.NONE) {
2299                 sendMessageResponse(rr.mResult, ret);
2300             }
2301             mRil.processResponseDone(rr, responseInfo, ret);
2302         }
2303     }
2304 
responseCallForwardInfo(RadioResponseInfo responseInfo, ArrayList<android.hardware.radio.V1_0.CallForwardInfo> callForwardInfos)2305     private void responseCallForwardInfo(RadioResponseInfo responseInfo,
2306             ArrayList<android.hardware.radio.V1_0.CallForwardInfo> callForwardInfos) {
2307         RILRequest rr = mRil.processResponse(responseInfo);
2308         if (rr != null) {
2309             CallForwardInfo[] ret = new CallForwardInfo[callForwardInfos.size()];
2310             for (int i = 0; i < callForwardInfos.size(); i++) {
2311                 ret[i] = new CallForwardInfo();
2312                 ret[i].status = callForwardInfos.get(i).status;
2313                 ret[i].reason = callForwardInfos.get(i).reason;
2314                 ret[i].serviceClass = callForwardInfos.get(i).serviceClass;
2315                 ret[i].toa = callForwardInfos.get(i).toa;
2316                 ret[i].number = callForwardInfos.get(i).number;
2317                 ret[i].timeSeconds = callForwardInfos.get(i).timeSeconds;
2318             }
2319             if (responseInfo.error == RadioError.NONE) {
2320                 sendMessageResponse(rr.mResult, ret);
2321             }
2322             mRil.processResponseDone(rr, responseInfo, ret);
2323         }
2324     }
2325 
responseOperatorInfos(RadioResponseInfo responseInfo, ArrayList<android.hardware.radio.V1_0.OperatorInfo> networkInfos)2326     private void responseOperatorInfos(RadioResponseInfo responseInfo,
2327             ArrayList<android.hardware.radio.V1_0.OperatorInfo> networkInfos) {
2328         RILRequest rr = mRil.processResponse(responseInfo);
2329 
2330         if (rr != null) {
2331             ArrayList<OperatorInfo> ret = new ArrayList<OperatorInfo>();
2332             for (int i = 0; i < networkInfos.size(); i++) {
2333                 ret.add(new OperatorInfo(networkInfos.get(i).alphaLong,
2334                         networkInfos.get(i).alphaShort, networkInfos.get(i).operatorNumeric,
2335                         RILUtils.convertHalOperatorStatus(networkInfos.get(i).status)));
2336             }
2337             if (responseInfo.error == RadioError.NONE) {
2338                 sendMessageResponse(rr.mResult, ret);
2339             }
2340             mRil.processResponseDone(rr, responseInfo, ret);
2341         }
2342     }
2343 
responseScanStatus(RadioResponseInfo responseInfo, HalVersion fallbackHalVersion)2344     private void responseScanStatus(RadioResponseInfo responseInfo, HalVersion fallbackHalVersion) {
2345         RILRequest rr = mRil.processResponse(responseInfo);
2346         if (rr == null) {
2347             return;
2348         }
2349 
2350         final boolean needFallback = responseInfo.error == RadioError.REQUEST_NOT_SUPPORTED
2351                 && fallbackHalVersion != null && rr.mArguments != null && rr.mArguments.length > 0
2352                 && rr.mArguments[0] instanceof NetworkScanRequest;
2353         if (needFallback) {
2354             // Move the data needed for fallback call from rr which will be released soon
2355             final int request = rr.getRequest();
2356             final Message result = rr.getResult();
2357             final NetworkScanRequest scanRequest = (NetworkScanRequest) rr.mArguments[0];
2358 
2359             mRil.mRilHandler.post(() -> {
2360                 mRil.setCompatVersion(request, RIL.RADIO_HAL_VERSION_1_4);
2361                 mRil.startNetworkScan(scanRequest, result);
2362             });
2363 
2364             mRil.processResponseFallback(rr, responseInfo, null);
2365             return;
2366         }
2367 
2368         NetworkScanResult nsr = null;
2369         if (responseInfo.error == RadioError.NONE) {
2370             nsr = new NetworkScanResult(
2371                     NetworkScanResult.SCAN_STATUS_PARTIAL, RadioError.NONE, null);
2372             sendMessageResponse(rr.mResult, nsr);
2373         }
2374         mRil.processResponseDone(rr, responseInfo, nsr);
2375     }
2376 
responseDataCallList(RadioResponseInfo responseInfo, List<? extends Object> dataCallResultList)2377     private void responseDataCallList(RadioResponseInfo responseInfo,
2378             List<? extends Object> dataCallResultList) {
2379         RILRequest rr = mRil.processResponse(responseInfo);
2380 
2381         if (rr != null) {
2382             ArrayList<DataCallResponse> response =
2383                     RILUtils.convertHalDataCallResultList(dataCallResultList);
2384             if (responseInfo.error == RadioError.NONE) {
2385                 sendMessageResponse(rr.mResult, response);
2386             }
2387             mRil.processResponseDone(rr, responseInfo, response);
2388         }
2389     }
2390 
responseDataCallList(android.hardware.radio.V1_6.RadioResponseInfo responseInfo, List<? extends Object> dataCallResultList)2391     private void responseDataCallList(android.hardware.radio.V1_6.RadioResponseInfo responseInfo,
2392             List<? extends Object> dataCallResultList) {
2393         RILRequest rr = mRil.processResponse_1_6(responseInfo);
2394 
2395         if (rr != null) {
2396             ArrayList<DataCallResponse> response =
2397                     RILUtils.convertHalDataCallResultList(dataCallResultList);
2398             if (responseInfo.error == RadioError.NONE) {
2399                 sendMessageResponse(rr.mResult, response);
2400             }
2401             mRil.processResponseDone_1_6(rr, responseInfo, response);
2402         }
2403     }
2404 
responseCellList(RadioResponseInfo responseInfo, ArrayList<NeighboringCell> cells)2405     private void responseCellList(RadioResponseInfo responseInfo,
2406             ArrayList<NeighboringCell> cells) {
2407         RILRequest rr = mRil.processResponse(responseInfo);
2408 
2409         if (rr != null) {
2410             int rssi;
2411             String location;
2412             ArrayList<NeighboringCellInfo> ret = new ArrayList<NeighboringCellInfo>();
2413             NeighboringCellInfo cell;
2414 
2415             int radioType = ((TelephonyManager) mRil.mContext.getSystemService(
2416                     Context.TELEPHONY_SERVICE)).getDataNetworkType(
2417                             SubscriptionManager.getSubscriptionId(mRil.mPhoneId));
2418 
2419             if (radioType != TelephonyManager.NETWORK_TYPE_UNKNOWN) {
2420                 for (int i = 0; i < cells.size(); i++) {
2421                     rssi = cells.get(i).rssi;
2422                     location = cells.get(i).cid;
2423                     cell = new NeighboringCellInfo(rssi, location, radioType);
2424                     ret.add(cell);
2425                 }
2426             }
2427             if (responseInfo.error == RadioError.NONE) {
2428                 sendMessageResponse(rr.mResult, ret);
2429             }
2430             mRil.processResponseDone(rr, responseInfo, ret);
2431         }
2432     }
2433 
responseGmsBroadcastConfig(RadioResponseInfo responseInfo, ArrayList<GsmBroadcastSmsConfigInfo> configs)2434     private void responseGmsBroadcastConfig(RadioResponseInfo responseInfo,
2435             ArrayList<GsmBroadcastSmsConfigInfo> configs) {
2436         RILRequest rr = mRil.processResponse(responseInfo);
2437 
2438         if (rr != null) {
2439             ArrayList<SmsBroadcastConfigInfo> ret = new ArrayList<>();
2440             for (int i = 0; i < configs.size(); i++) {
2441                 ret.add(new SmsBroadcastConfigInfo(configs.get(i).fromServiceId,
2442                         configs.get(i).toServiceId, configs.get(i).fromCodeScheme,
2443                         configs.get(i).toCodeScheme, configs.get(i).selected));
2444             }
2445             if (responseInfo.error == RadioError.NONE) {
2446                 sendMessageResponse(rr.mResult, ret);
2447             }
2448             mRil.processResponseDone(rr, responseInfo, ret);
2449         }
2450     }
2451 
responseCdmaBroadcastConfig(RadioResponseInfo responseInfo, ArrayList<CdmaBroadcastSmsConfigInfo> configs)2452     private void responseCdmaBroadcastConfig(RadioResponseInfo responseInfo,
2453             ArrayList<CdmaBroadcastSmsConfigInfo> configs) {
2454         RILRequest rr = mRil.processResponse(responseInfo);
2455 
2456         if (rr != null) {
2457             int[] ret = null;
2458 
2459             int numServiceCategories = configs.size();
2460 
2461             if (numServiceCategories == 0) {
2462                 // TODO: The logic of providing default values should
2463                 // not be done by this transport layer. And needs to
2464                 // be done by the vendor ril or application logic.
2465                 int numInts;
2466                 numInts = RILUtils.CDMA_BROADCAST_SMS_NO_OF_SERVICE_CATEGORIES
2467                         * RILUtils.CDMA_BSI_NO_OF_INTS_STRUCT + 1;
2468                 ret = new int[numInts];
2469 
2470                 // Faking a default record for all possible records.
2471                 ret[0] = RILUtils.CDMA_BROADCAST_SMS_NO_OF_SERVICE_CATEGORIES;
2472 
2473                 // Loop over CDMA_BROADCAST_SMS_NO_OF_SERVICE_CATEGORIES set 'english' as
2474                 // default language and selection status to false for all.
2475                 for (int i = 1; i < numInts; i += RILUtils.CDMA_BSI_NO_OF_INTS_STRUCT) {
2476                     ret[i + 0] = i / RILUtils.CDMA_BSI_NO_OF_INTS_STRUCT;
2477                     ret[i + 1] = 1;
2478                     ret[i + 2] = 0;
2479                 }
2480             } else {
2481                 int numInts;
2482                 numInts = (numServiceCategories * RILUtils.CDMA_BSI_NO_OF_INTS_STRUCT) + 1;
2483                 ret = new int[numInts];
2484 
2485                 ret[0] = numServiceCategories;
2486                 for (int i = 1, j = 0; j < configs.size();
2487                         j++, i = i + RILUtils.CDMA_BSI_NO_OF_INTS_STRUCT) {
2488                     ret[i] = configs.get(j).serviceCategory;
2489                     ret[i + 1] = configs.get(j).language;
2490                     ret[i + 2] = configs.get(j).selected ? 1 : 0;
2491                 }
2492             }
2493             if (responseInfo.error == RadioError.NONE) {
2494                 sendMessageResponse(rr.mResult, ret);
2495             }
2496             mRil.processResponseDone(rr, responseInfo, ret);
2497         }
2498     }
2499 
responseCellInfoList(RadioResponseInfo responseInfo, ArrayList<? extends Object> cellInfo)2500     private void responseCellInfoList(RadioResponseInfo responseInfo,
2501             ArrayList<? extends Object> cellInfo) {
2502         RILRequest rr = mRil.processResponse(responseInfo);
2503 
2504         if (rr != null) {
2505             ArrayList<CellInfo> ret = RILUtils.convertHalCellInfoList((ArrayList<Object>) cellInfo);
2506             if (responseInfo.error == RadioError.NONE) {
2507                 sendMessageResponse(rr.mResult, ret);
2508             }
2509             mRil.processResponseDone(rr, responseInfo, ret);
2510         }
2511     }
2512 
responseCellInfoList_1_6( android.hardware.radio.V1_6.RadioResponseInfo responseInfo, ArrayList<? extends Object> cellInfo)2513     private void responseCellInfoList_1_6(
2514             android.hardware.radio.V1_6.RadioResponseInfo responseInfo,
2515             ArrayList<? extends Object> cellInfo) {
2516         RILRequest rr = mRil.processResponse_1_6(responseInfo);
2517 
2518         if (rr != null) {
2519             ArrayList<CellInfo> ret = RILUtils.convertHalCellInfoList((ArrayList<Object>) cellInfo);
2520             if (responseInfo.error == RadioError.NONE) {
2521                 sendMessageResponse(rr.mResult, ret);
2522             }
2523             mRil.processResponseDone_1_6(rr, responseInfo, ret);
2524         }
2525     }
2526 
responseActivityData(RadioResponseInfo responseInfo, ActivityStatsInfo activityInfo)2527     private void responseActivityData(RadioResponseInfo responseInfo,
2528             ActivityStatsInfo activityInfo) {
2529         RILRequest rr = mRil.processResponse(responseInfo);
2530 
2531         if (rr != null) {
2532             ModemActivityInfo ret = null;
2533             if (responseInfo.error == RadioError.NONE) {
2534                 final int sleepModeTimeMs = activityInfo.sleepModeTimeMs;
2535                 final int idleModeTimeMs = activityInfo.idleModeTimeMs;
2536                 int [] txModeTimeMs = new int[ModemActivityInfo.getNumTxPowerLevels()];
2537                 for (int i = 0; i < ModemActivityInfo.getNumTxPowerLevels(); i++) {
2538                     txModeTimeMs[i] = activityInfo.txmModetimeMs[i];
2539                 }
2540                 final int rxModeTimeMs = activityInfo.rxModeTimeMs;
2541                 ret = new ModemActivityInfo(SystemClock.elapsedRealtime(), sleepModeTimeMs,
2542                         idleModeTimeMs, txModeTimeMs, rxModeTimeMs);
2543             } else {
2544                 ret = new ModemActivityInfo(0, 0, 0,
2545                         new int[ModemActivityInfo.getNumTxPowerLevels()], 0);
2546                 responseInfo.error = RadioError.NONE;
2547             }
2548             sendMessageResponse(rr.mResult, ret);
2549             mRil.processResponseDone(rr, responseInfo, ret);
2550         }
2551     }
2552 
responseHardwareConfig(RadioResponseInfo responseInfo, ArrayList<android.hardware.radio.V1_0.HardwareConfig> config)2553     private void responseHardwareConfig(RadioResponseInfo responseInfo,
2554             ArrayList<android.hardware.radio.V1_0.HardwareConfig> config) {
2555         RILRequest rr = mRil.processResponse(responseInfo);
2556 
2557         if (rr != null) {
2558             ArrayList<HardwareConfig> ret = RILUtils.convertHalHardwareConfigList(config);
2559             if (responseInfo.error == RadioError.NONE) {
2560                 sendMessageResponse(rr.mResult, ret);
2561             }
2562             mRil.processResponseDone(rr, responseInfo, ret);
2563         }
2564     }
2565 
responseRadioCapability(RadioResponseInfo responseInfo, android.hardware.radio.V1_0.RadioCapability rc)2566     private void responseRadioCapability(RadioResponseInfo responseInfo,
2567             android.hardware.radio.V1_0.RadioCapability rc) {
2568         RILRequest rr = mRil.processResponse(responseInfo);
2569 
2570         if (rr != null) {
2571             RadioCapability ret = RILUtils.convertHalRadioCapability(rc, mRil);
2572             if (responseInfo.error == RadioError.NONE) {
2573                 sendMessageResponse(rr.mResult, ret);
2574             }
2575             mRil.processResponseDone(rr, responseInfo, ret);
2576         }
2577     }
2578 
2579     /**
2580      * @param responseInfo Response info struct containing response type, serial number and error.
2581      */
enableModemResponse(RadioResponseInfo responseInfo)2582     public void enableModemResponse(RadioResponseInfo responseInfo) {
2583         responseVoid(responseInfo);
2584     }
2585 
2586     /**
2587      * @param responseInfo Response info struct containing response type, serial no. and error
2588      * @param isEnabled whether the modem stack is enabled.
2589      */
getModemStackStatusResponse(RadioResponseInfo responseInfo, boolean isEnabled)2590     public void getModemStackStatusResponse(RadioResponseInfo responseInfo, boolean isEnabled) {
2591         RILRequest rr = mRil.processResponse(responseInfo);
2592 
2593         if (rr != null) {
2594             if (responseInfo.error == RadioError.NONE) {
2595                 sendMessageResponse(rr.mResult, isEnabled);
2596             }
2597             mRil.processResponseDone(rr, responseInfo, isEnabled);
2598         }
2599     }
2600 
2601     /**
2602      * @param responseInfo Response info struct containing response type, serial number and error.
2603      */
setSystemSelectionChannelsResponse(RadioResponseInfo responseInfo)2604     public void setSystemSelectionChannelsResponse(RadioResponseInfo responseInfo) {
2605         responseVoid(responseInfo);
2606     }
2607 
2608     /**
2609      * @param responseInfo Response info struct containing response type, serial no. and error.
2610      */
enableUiccApplicationsResponse(RadioResponseInfo responseInfo)2611     public void enableUiccApplicationsResponse(RadioResponseInfo responseInfo) {
2612         responseVoid(responseInfo);
2613     }
2614 
2615     /**
2616      * @param responseInfo Response info struct containing response type, serial no. and error.
2617      * @param enabled whether Uicc applications are enabled.
2618      */
areUiccApplicationsEnabledResponse(RadioResponseInfo responseInfo, boolean enabled)2619     public void areUiccApplicationsEnabledResponse(RadioResponseInfo responseInfo,
2620             boolean enabled) {
2621         RILRequest rr = mRil.processResponse(responseInfo);
2622 
2623         if (rr != null) {
2624             if (responseInfo.error == RadioError.NONE) {
2625                 sendMessageResponse(rr.mResult, enabled);
2626             }
2627             mRil.processResponseDone(rr, responseInfo, enabled);
2628         }
2629     }
2630 
2631     /**
2632      * @param info Response info struct containing response type, serial no. and error.
2633      */
setRadioPowerResponse_1_5(RadioResponseInfo info)2634     public void setRadioPowerResponse_1_5(RadioResponseInfo info) {
2635         responseVoid(info);
2636         mRil.mLastRadioPowerResult = info.error;
2637         if (info.error != RadioError.RADIO_NOT_AVAILABLE && info.error != RadioError.NONE) {
2638             AnomalyReporter.reportAnomaly(
2639                     UUID.fromString(RILUtils.RADIO_POWER_FAILURE_BUGREPORT_UUID),
2640                     "Radio power failure");
2641         }
2642     }
2643 
2644     /**
2645      * @param info Response info struct containing response type, serial no. and error.
2646      */
setRadioPowerResponse_1_6(android.hardware.radio.V1_6.RadioResponseInfo info)2647     public void setRadioPowerResponse_1_6(android.hardware.radio.V1_6.RadioResponseInfo info) {
2648         responseVoid_1_6(info);
2649         mRil.mLastRadioPowerResult = info.error;
2650         if (info.error == android.hardware.radio.V1_6.RadioError.RF_HARDWARE_ISSUE) {
2651             AnomalyReporter.reportAnomaly(
2652                     UUID.fromString(RILUtils.RADIO_POWER_FAILURE_RF_HARDWARE_ISSUE_UUID),
2653                     "RF HW damaged");
2654         } else if (info.error == android.hardware.radio.V1_6.RadioError.NO_RF_CALIBRATION_INFO) {
2655             AnomalyReporter.reportAnomaly(
2656                     UUID.fromString(RILUtils.RADIO_POWER_FAILURE_NO_RF_CALIBRATION_UUID),
2657                     "No RF calibration data");
2658         } else if (info.error != android.hardware.radio.V1_6.RadioError.RADIO_NOT_AVAILABLE
2659                 && info.error != android.hardware.radio.V1_6.RadioError.NONE) {
2660             AnomalyReporter.reportAnomaly(
2661                     UUID.fromString(RILUtils.RADIO_POWER_FAILURE_BUGREPORT_UUID),
2662                     "Radio power failure");
2663         }
2664     }
2665 
2666     /**
2667      * @param info Response info struct containing response type, serial no. and error.
2668      */
setSystemSelectionChannelsResponse_1_5(RadioResponseInfo info)2669     public void setSystemSelectionChannelsResponse_1_5(RadioResponseInfo info) {
2670         responseVoid(info);
2671     }
2672 
2673 
2674     /**
2675      * @param info Response info struct containing response type, serial no. and error.
2676      * @param halSpecifiers List of RadioAccessSpecifiers that are scanned.
2677      */
getSystemSelectionChannelsResponse( android.hardware.radio.V1_6.RadioResponseInfo info, ArrayList<android.hardware.radio.V1_5.RadioAccessSpecifier> halSpecifiers)2678     public void getSystemSelectionChannelsResponse(
2679             android.hardware.radio.V1_6.RadioResponseInfo info,
2680             ArrayList<android.hardware.radio.V1_5.RadioAccessSpecifier> halSpecifiers) {
2681         RILRequest rr = mRil.processResponse_1_6(info);
2682 
2683         if (rr != null) {
2684             ArrayList<RadioAccessSpecifier> specifiers = new ArrayList<>();
2685             for (android.hardware.radio.V1_5.RadioAccessSpecifier specifier : halSpecifiers) {
2686                 specifiers.add(RILUtils.convertHalRadioAccessSpecifier(specifier));
2687             }
2688             mRil.riljLog("getSystemSelectionChannelsResponse: from HIDL: " + specifiers);
2689             if (info.error == RadioError.NONE) {
2690                 sendMessageResponse(rr.mResult, specifiers);
2691             }
2692             mRil.processResponseDone_1_6(rr, info, specifiers);
2693         }
2694     }
2695 
2696     /**
2697      * @param responseInfo Response info struct containing response type, serial no. and error.
2698      * @param cellIdentity CellIdentity for the barringInfos.
2699      * @param barringInfos List of BarringInfo for all the barring service types.
2700      */
getBarringInfoResponse(RadioResponseInfo responseInfo, android.hardware.radio.V1_5.CellIdentity cellIdentity, ArrayList<android.hardware.radio.V1_5.BarringInfo> barringInfos)2701     public void getBarringInfoResponse(RadioResponseInfo responseInfo,
2702             android.hardware.radio.V1_5.CellIdentity cellIdentity,
2703             ArrayList<android.hardware.radio.V1_5.BarringInfo> barringInfos) {
2704         RILRequest rr = mRil.processResponse(responseInfo);
2705 
2706         if (rr != null) {
2707             BarringInfo bi = new BarringInfo(RILUtils.convertHalCellIdentity(cellIdentity),
2708                     RILUtils.convertHalBarringInfoList(barringInfos));
2709             if (responseInfo.error == RadioError.NONE) {
2710                 sendMessageResponse(rr.mResult, bi);
2711                 // notify all registrants for the possible barring info change
2712                 mRil.mBarringInfoChangedRegistrants.notifyRegistrants(
2713                         new AsyncResult(null, bi, null));
2714             }
2715             mRil.processResponseDone(rr, responseInfo, bi);
2716         }
2717     }
2718 
2719     /**
2720      * @param info Response info struct containing response type, serial no. and error
2721      * @param id The pdu session id allocated
2722      */
allocatePduSessionIdResponse(android.hardware.radio.V1_6.RadioResponseInfo info, int id)2723     public void allocatePduSessionIdResponse(android.hardware.radio.V1_6.RadioResponseInfo info,
2724             int id) {
2725         RILRequest rr = mRil.processResponse_1_6(info);
2726         if (rr != null) {
2727             if (info.error == RadioError.NONE) {
2728                 sendMessageResponse(rr.mResult, id);
2729             }
2730             mRil.processResponseDone_1_6(rr, info, id);
2731         }
2732     }
2733 
2734     /**
2735      * @param info Response info struct containing response type, serial no. and error
2736      */
releasePduSessionIdResponse(android.hardware.radio.V1_6.RadioResponseInfo info)2737     public void releasePduSessionIdResponse(android.hardware.radio.V1_6.RadioResponseInfo info) {
2738         responseVoid_1_6(info);
2739     }
2740 
2741     /**
2742      * @param info Response info struct containing response type, serial no. and error
2743      */
startHandoverResponse(android.hardware.radio.V1_6.RadioResponseInfo info)2744     public void startHandoverResponse(android.hardware.radio.V1_6.RadioResponseInfo info) {
2745         responseVoid_1_6(info);
2746     }
2747 
2748     /**
2749      * @param info Response info struct containing response type, serial no. and error
2750      */
cancelHandoverResponse(android.hardware.radio.V1_6.RadioResponseInfo info)2751     public void cancelHandoverResponse(android.hardware.radio.V1_6.RadioResponseInfo info) {
2752         responseVoid_1_6(info);
2753     }
2754 
2755     /**
2756      * @param info Response info struct containing response type, serial no. and error
2757      * @param slicingConfig Current slicing configuration
2758      */
getSlicingConfigResponse(android.hardware.radio.V1_6.RadioResponseInfo info, android.hardware.radio.V1_6.SlicingConfig slicingConfig)2759     public void getSlicingConfigResponse(android.hardware.radio.V1_6.RadioResponseInfo info,
2760             android.hardware.radio.V1_6.SlicingConfig slicingConfig) {
2761         RILRequest rr = mRil.processResponse_1_6(info);
2762 
2763         if (rr != null) {
2764             NetworkSlicingConfig ret = RILUtils.convertHalSlicingConfig(slicingConfig);
2765             if (info.error == RadioError.NONE) {
2766                 sendMessageResponse(rr.mResult, ret);
2767             }
2768             mRil.processResponseDone_1_6(rr, info, ret);
2769         }
2770     }
2771 }
2772