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