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 17package android.hardware.radio@1.0; 18 19/** 20 * Interface declaring unsolicited radio indications. 21 */ 22interface IRadioIndication { 23 /** 24 * Indicates when radio state changes. 25 * 26 * @param type Type of radio indication 27 * @param radioState Current radio state 28 */ 29 oneway radioStateChanged(RadioIndicationType type, RadioState radioState); 30 31 /** 32 * Indicates when call state has changed. 33 * Callee must invoke IRadio.getCurrentCalls() 34 * Must be invoked on, for example, 35 * "RING", "BUSY", "NO CARRIER", and also call state 36 * transitions (DIALING->ALERTING ALERTING->ACTIVE) 37 * 38 * Redundent or extraneous invocations are tolerated 39 * 40 * @param type Type of radio indication 41 */ 42 oneway callStateChanged(RadioIndicationType type); 43 44 /** 45 * Indicates when voice or data network state changed 46 * Callee must invoke IRadio.getVoiceRegistrationState(), IRadio.getDataRegistrationState(), 47 * and IRadio.getOperator() 48 * 49 * @param type Type of radio indication 50 */ 51 oneway networkStateChanged(RadioIndicationType type); 52 53 /** 54 * Indicates when new SMS is received. 55 * Callee must subsequently confirm the receipt of the SMS with a 56 * acknowledgeLastIncomingGsmSms() 57 * 58 * Server must not send newSms() nor newSmsStatusReport() messages until a 59 * acknowledgeLastIncomingGsmSms() has been received 60 * 61 * @param type Type of radio indication 62 * @param pdu PDU of SMS-DELIVER represented as byte array. 63 * The PDU starts with the SMSC address per TS 27.005 (+CMT:) 64 */ 65 oneway newSms(RadioIndicationType type, vec<uint8_t> pdu); 66 67 /** 68 * Indicates when new SMS Status Report is received. 69 * Callee must subsequently confirm the receipt of the SMS with a 70 * acknowledgeLastIncomingGsmSms() 71 * 72 * Server must not send newSms() nor newSmsStatusReport() messages until a 73 * acknowledgeLastIncomingGsmSms() has been received 74 * 75 * @param type Type of radio indication 76 * @param pdu PDU of SMS-STATUS-REPORT represented as byte array. 77 * The PDU starts with the SMSC address per TS 27.005 (+CMT:) 78 */ 79 oneway newSmsStatusReport(RadioIndicationType type, vec<uint8_t> pdu); 80 81 /** 82 * Indicates when new SMS has been stored on SIM card 83 * 84 * @param type Type of radio indication 85 * @param recordNumber Record number on the sim 86 */ 87 oneway newSmsOnSim(RadioIndicationType type, int32_t recordNumber); 88 89 /** 90 * Indicates when a new USSD message is received. 91 * The USSD session is assumed to persist if the type code is REQUEST, otherwise 92 * the current session (if any) is assumed to have terminated. 93 * 94 * @param type Type of radio indication 95 * @param modeType USSD type code 96 * @param msg Message string in UTF-8, if applicable 97 */ 98 oneway onUssd(RadioIndicationType type, UssdModeType modeType, string msg); 99 100 /** 101 * Indicates when radio has received a NITZ time message. 102 * 103 * @param type Type of radio indication 104 * @param nitzTime NITZ time string in the form "yy/mm/dd,hh:mm:ss(+/-)tz,dt" 105 * @param receivedTime milliseconds since boot that the NITZ time was received 106 */ 107 oneway nitzTimeReceived(RadioIndicationType type, string nitzTime, uint64_t receivedTime); 108 109 /** 110 * Indicates current signal strength of the radio. 111 * 112 * @param type Type of radio indication 113 * @param signalStrength SignalStrength information as defined in types.hal 114 */ 115 oneway currentSignalStrength(RadioIndicationType type, SignalStrength signalStrength); 116 117 /** 118 * Indicates data call contexts have changed. 119 * 120 * @param type Type of radio indication 121 * @param dcList array of SetupDataCallResult identical to that 122 * returned by IRadio.getDataCallList(). It is the complete list 123 * of current data contexts including new contexts that have been 124 * activated. A data call is only removed from this list when the 125 * framework sends a IRadio.deactivateDataCall() or the radio 126 * is powered off/on 127 */ 128 oneway dataCallListChanged(RadioIndicationType type, vec<SetupDataCallResult> dcList); 129 130 /** 131 * Reports supplementary service related notification from the network. 132 * 133 * @param type Type of radio indication 134 * @param suppSvc SuppSvcNotification as defined in types.hal 135 */ 136 oneway suppSvcNotify(RadioIndicationType type, SuppSvcNotification suppSvc); 137 138 /** 139 * Indicates when STK session is terminated by SIM. 140 * 141 * @param type Type of radio indication 142 */ 143 oneway stkSessionEnd(RadioIndicationType type); 144 145 /** 146 * Indicates when SIM issue a STK proactive command to applications 147 * 148 * @param type Type of radio indication 149 * @param cmd SAT/USAT proactive represented as byte array starting with command tag. 150 * Refer ETSI TS 102.223 section 9.4 for command types 151 */ 152 oneway stkProactiveCommand(RadioIndicationType type, string cmd); 153 154 /** 155 * Indicates when SIM notifies applcations some event happens. 156 * 157 * @param type Type of radio indication 158 * @param cmd SAT/USAT commands or responses 159 * sent by ME to SIM or commands handled by ME, represented as byte array 160 * starting with first byte of response data for command tag. Refer 161 * ETSI TS 102.223 section 9.4 for command types 162 */ 163 oneway stkEventNotify(RadioIndicationType type, string cmd); 164 165 /** 166 * Indicates when SIM wants application to setup a voice call. 167 * 168 * @param type Type of radio indication 169 * @param timeout Timeout value in millisec for setting up voice call 170 */ 171 oneway stkCallSetup(RadioIndicationType type, int64_t timeout); 172 173 /** 174 * Indicates that SMS storage on the SIM is full. Sent when the network 175 * attempts to deliver a new SMS message. Messages cannot be saved on the 176 * SIM until space is freed. In particular, incoming Class 2 messages must not 177 * be stored 178 * 179 * @param type Type of radio indication 180 */ 181 oneway simSmsStorageFull(RadioIndicationType type); 182 183 /** 184 * Indicates that file(s) on the SIM have been updated, or the SIM 185 * has been reinitialized. 186 * Note: If the SIM state changes as a result of the SIM refresh (eg, 187 * SIM_READY -> SIM_LOCKED_OR_ABSENT), simStatusChanged() 188 * must be sent. 189 * 190 * @param type Type of radio indication 191 * @param refreshResult Result of sim refresh 192 */ 193 oneway simRefresh(RadioIndicationType type, SimRefreshResult refreshResult); 194 195 /** 196 * Ring indication for an incoming call (eg, RING or CRING event). 197 * There must be at least one callRing() at the beginning 198 * of a call and sending multiple is optional. If the system property 199 * ro.telephony.call_ring.multiple is false then the upper layers 200 * must generate the multiple events internally. Otherwise the vendor 201 * code must generate multiple callRing() if 202 * ro.telephony.call_ring.multiple is true or if it is absent. 203 * 204 * The rate of these events is controlled by ro.telephony.call_ring.delay 205 * and has a default value of 3000 (3 seconds) if absent. 206 * 207 * @param type Type of radio indication 208 * @param isGsm true for GSM & false for CDMA 209 * @param record Cdma Signal Information 210 */ 211 oneway callRing(RadioIndicationType type, bool isGsm, CdmaSignalInfoRecord record); 212 213 /** 214 * Indicates that SIM state changes. 215 * Callee must invoke getIccCardStatus() 216 * 217 * @param type Type of radio indication 218 */ 219 oneway simStatusChanged(RadioIndicationType type); 220 221 /** 222 * Indicates when new CDMA SMS is received 223 * Callee must subsequently confirm the receipt of the SMS with 224 * acknowledgeLastIncomingCdmaSms() 225 * Server must not send cdmaNewSms() messages until 226 * acknowledgeLastIncomingCdmaSms() has been received 227 * 228 * @param type Type of radio indication 229 * @param msg Cdma Sms Message 230 */ 231 oneway cdmaNewSms(RadioIndicationType type, CdmaSmsMessage msg); 232 233 /** 234 * Indicates when new Broadcast SMS is received 235 * 236 * @param type Type of radio indication 237 * @param data If received from GSM network, "data" is byte array of 88 bytes 238 * which indicates each page of a CBS Message sent to the MS by the 239 * BTS as coded in 3GPP 23.041 Section 9.4.1.2. 240 * If received from UMTS network, "data" is byte array of 90 up to 1252 241 * bytes which contain between 1 and 15 CBS Message pages sent as one 242 * packet to the MS by the BTS as coded in 3GPP 23.041 Section 9.4.2.2 243 */ 244 oneway newBroadcastSms(RadioIndicationType type, vec<uint8_t> data); 245 246 /** 247 * Indicates that SMS storage on the RUIM is full. Messages 248 * cannot be saved on the RUIM until space is freed. 249 * 250 * @param type Type of radio indication 251 */ 252 oneway cdmaRuimSmsStorageFull(RadioIndicationType type); 253 254 /** 255 * Indicates a restricted state change (eg, for Domain Specific Access Control). 256 * Radio must send this msg after radio off/on cycle no matter it is changed or not. 257 * 258 * @param type Type of radio indication 259 * @param state Bitmask of restricted state as defined by PhoneRestrictedState 260 */ 261 oneway restrictedStateChanged(RadioIndicationType type, PhoneRestrictedState state); 262 263 /** 264 * Indicates that the radio system selection module has 265 * autonomously entered emergency callback mode. 266 * 267 * @param type Type of radio indication 268 */ 269 oneway enterEmergencyCallbackMode(RadioIndicationType type); 270 271 /** 272 * Indicates when CDMA radio receives a call waiting indication. 273 * 274 * @param type Type of radio indication 275 * @param callWaitingRecord Cdma CallWaiting information 276 */ 277 oneway cdmaCallWaiting(RadioIndicationType type, CdmaCallWaiting callWaitingRecord); 278 279 /** 280 * Indicates when CDMA radio receives an update of the progress of an OTASP/OTAPA call. 281 * 282 * @param type Type of radio indication 283 * @param status Cdma OTA provision status 284 */ 285 oneway cdmaOtaProvisionStatus(RadioIndicationType type, CdmaOtaProvisionStatus status); 286 287 /** 288 * Indicates when CDMA radio receives one or more info recs. 289 * 290 * @param type Type of radio indication 291 * @param records New Cdma Information 292 */ 293 oneway cdmaInfoRec(RadioIndicationType type, CdmaInformationRecords records); 294 295 /** 296 * Indicates that nework doesn't have in-band information, need to 297 * play out-band tone. 298 * 299 * @param type Type of radio indication 300 * @param start true = start play ringback tone, false = stop playing ringback tone 301 */ 302 oneway indicateRingbackTone(RadioIndicationType type, bool start); 303 304 /** 305 * Indicates that framework/application must reset the uplink mute state. 306 * 307 * @param type Type of radio indication 308 */ 309 oneway resendIncallMute(RadioIndicationType type); 310 311 /** 312 * Indicates when CDMA subscription source changed. 313 * 314 * @param type Type of radio indication 315 * @param cdmaSource New Cdma SubscriptionSource 316 */ 317 oneway cdmaSubscriptionSourceChanged(RadioIndicationType type, 318 CdmaSubscriptionSource cdmaSource); 319 320 /** 321 * Indicates when PRL (preferred roaming list) changes. 322 * 323 * @param type Type of radio indication 324 * @param version PRL version after PRL changes 325 */ 326 oneway cdmaPrlChanged(RadioIndicationType type, int32_t version); 327 328 /** 329 * Indicates when Emergency Callback Mode Ends. 330 * Indicates that the radio system selection module has 331 * proactively exited emergency callback mode. 332 * 333 * @param type Type of radio indication 334 */ 335 oneway exitEmergencyCallbackMode(RadioIndicationType type); 336 337 /** 338 * Indicates the ril connects and returns the version 339 * 340 * @param type Type of radio indication 341 */ 342 oneway rilConnected(RadioIndicationType type); 343 344 /** 345 * Indicates that voice technology has changed. Responds with new rat. 346 * 347 * @param type Type of radio indication 348 * @param rat Current new voice rat 349 */ 350 oneway voiceRadioTechChanged(RadioIndicationType type, RadioTechnology rat); 351 352 /** 353 * Same information as returned by getCellInfoList(). 354 * 355 * @param type Type of radio indication 356 * @param records Current cell information known to radio 357 */ 358 oneway cellInfoList(RadioIndicationType type, vec<CellInfo> records); 359 360 /** 361 * Indicates when IMS registration state has changed. 362 * To get IMS registration state and IMS SMS format, callee needs to invoke 363 * getImsRegistrationState() 364 * 365 * @param type Type of radio indication 366 */ 367 oneway imsNetworkStateChanged(RadioIndicationType type); 368 369 /** 370 * Indicated when there is a change in subscription status. 371 * This event must be sent in the following scenarios 372 * - subscription readiness at modem, which was selected by telephony layer 373 * - when subscription is deactivated by modem due to UICC card removal 374 * - when network invalidates the subscription i.e. attach reject due to authentication reject 375 * 376 * @param type Type of radio indication 377 * @param activate false for subscription deactivated, true for subscription activated 378 */ 379 oneway subscriptionStatusChanged(RadioIndicationType type, bool activate); 380 381 /** 382 * Indicates when Single Radio Voice Call Continuity (SRVCC) 383 * progress state has changed 384 * 385 * @param type Type of radio indication 386 * @param state New Srvcc State 387 */ 388 oneway srvccStateNotify(RadioIndicationType type, SrvccState state); 389 390 /** 391 * Indicates when the hardware configuration associated with the RILd changes. 392 * 393 * @param type Type of radio indication 394 * @param configs Array of hardware configs 395 */ 396 oneway hardwareConfigChanged(RadioIndicationType type, vec<HardwareConfig> configs); 397 398 /** 399 * Sent when setRadioCapability() completes. 400 * Returns the phone radio capability exactly as 401 * getRadioCapability() and must be the 402 * same set as sent by setRadioCapability(). 403 * 404 * @param type Type of radio indication 405 * @param rc Current radio capability 406 */ 407 oneway radioCapabilityIndication(RadioIndicationType type, RadioCapability rc); 408 409 /** 410 * Indicates when Supplementary service(SS) response is received when DIAL/USSD/SS is changed to 411 * SS by call control. 412 * 413 * @param type Type of radio indication 414 */ 415 oneway onSupplementaryServiceIndication(RadioIndicationType type, StkCcUnsolSsResult ss); 416 417 /** 418 * Indicates when there is an ALPHA from UICC during Call Control. 419 * 420 * @param type Type of radio indication 421 * @param alpha ALPHA string from UICC in UTF-8 format 422 */ 423 oneway stkCallControlAlphaNotify(RadioIndicationType type, string alpha); 424 425 /** 426 * Indicates when there is an incoming Link Capacity Estimate (LCE) info report. 427 * 428 * @param type Type of radio indication 429 * @param lce LceData information 430 */ 431 oneway lceData(RadioIndicationType type, LceDataInfo lce); 432 433 /** 434 * Indicates when there is new Carrier PCO data received for a data call. Ideally 435 * only new data must be forwarded, though this is not required. Multiple 436 * boxes of carrier PCO data for a given call must result in a series of 437 * pcoData() calls. 438 * 439 * @param type Type of radio indication 440 * @param pco New PcoData 441 */ 442 oneway pcoData(RadioIndicationType type, PcoDataInfo pco); 443 444 /** 445 * Indicates when there is a modem reset. 446 * 447 * When modem restarts, one of the following radio state transitions must happen 448 * 1) RadioState:ON->RadioState:UNAVAILABLE->RadioState:ON or 449 * 2) RadioState:OFF->RadioState:UNAVAILABLE->RadioState:OFF 450 * This message must be sent either just before the Radio State changes to RadioState:UNAVAILABLE 451 * or just after but must never be sent after the Radio State changes from RadioState:UNAVAILABLE 452 * to RadioState:ON/RadioState:OFF again. 453 * It must NOT be sent after the Radio state changes to RadioState:ON/RadioState:OFF after the 454 * modem restart as that may be interpreted as a second modem reset by the 455 * framework. 456 * 457 * @param type Type of radio indication 458 * @param reason the reason for the reset. It 459 * may be a crash signature if the restart was due to a crash or some 460 * string such as "user-initiated restart" or "AT command initiated 461 * restart" that explains the cause of the modem restart 462 */ 463 oneway modemReset(RadioIndicationType type, string reason); 464}; 465