/* * Copyright (C) 2016 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.hardware.radio@1.1; import @1.0::CellInfo; import @1.0::RadioError; enum CardPowerState : int32_t { POWER_DOWN, POWER_UP, POWER_UP_PASS_THROUGH, }; enum RadioAccessNetworks : int32_t { GERAN = 1, // GSM EDGE Radio Access Network UTRAN = 2, // Universal Terrestrial Radio Access Network EUTRAN = 3, // Evolved Universal Terrestrial Radio Access Network }; enum GeranBands : int32_t { BAND_T380 = 1, BAND_T410 = 2, BAND_450 = 3, BAND_480 = 4, BAND_710 = 5, BAND_750 = 6, BAND_T810 = 7, BAND_850 = 8, BAND_P900 = 9, BAND_E900 = 10, BAND_R900 = 11, BAND_DCS1800 = 12, BAND_PCS1900 = 13, BAND_ER900 = 14, }; enum UtranBands : int32_t { BAND_1 = 1, BAND_2 = 2, BAND_3 = 3, BAND_4 = 4, BAND_5 = 5, BAND_6 = 6, BAND_7 = 7, BAND_8 = 8, BAND_9 = 9, BAND_10 = 10, BAND_11 = 11, BAND_12 = 12, BAND_13 = 13, BAND_14 = 14, BAND_19 = 19, BAND_20 = 20, BAND_21 = 21, BAND_22 = 22, BAND_25 = 25, BAND_26 = 26, }; enum EutranBands : int32_t { BAND_1 = 1, BAND_2 = 2, BAND_3 = 3, BAND_4 = 4, BAND_5 = 5, BAND_6 = 6, BAND_7 = 7, BAND_8 = 8, BAND_9 = 9, BAND_10 = 10, BAND_11 = 11, BAND_12 = 12, BAND_13 = 13, BAND_14 = 14, BAND_17 = 17, BAND_18 = 18, BAND_19 = 19, BAND_20 = 20, BAND_21 = 21, BAND_22 = 22, BAND_23 = 23, BAND_24 = 24, BAND_25 = 25, BAND_26 = 26, BAND_27 = 27, BAND_28 = 28, BAND_30 = 30, BAND_31 = 31, BAND_33 = 33, BAND_34 = 34, BAND_35 = 35, BAND_36 = 36, BAND_37 = 37, BAND_38 = 38, BAND_39 = 39, BAND_40 = 40, BAND_41 = 41, BAND_42 = 42, BAND_43 = 43, BAND_44 = 44, BAND_45 = 45, BAND_46 = 46, BAND_47 = 47, BAND_48 = 48, BAND_65 = 65, BAND_66 = 66, BAND_68 = 68, BAND_70 = 70, }; enum ScanType : int32_t { ONE_SHOT = 0, // Performs the scan only once PERIODIC = 1, // Performs the scan periodically until cancelled }; enum ScanStatus : int32_t { PARTIAL = 1, // The result contains a part of the scan results COMPLETE = 2, // The result contains the last part of the scan results }; enum KeepaliveType : int32_t { NATT_IPV4 = 0, // Keepalive specified by RFC 3948 Sec. 2.3 using IPv4 NATT_IPV6 = 1, // Keepalive specified by RFC 3948 Sec. 2.3 using IPv6 }; enum KeepaliveStatusCode : int32_t { ACTIVE, // Keepalive is currently active INACTIVE, // Keepalive is inactive, which indicates an error PENDING, // Requested keepalive has not yet been processed by // the modem. Only allowed in a RESPONSE message to // a REQUEST }; struct RadioAccessSpecifier { RadioAccessNetworks radioAccessNetwork; // The type of network to scan vec geranBands; // Valid only if radioAccessNetwork = GERAN // otherwise must be empty // Maximum length of the vector is 8 vec utranBands; // Valid only if radioAccessNetwork = UTRAN // otherwise must be empty // Maximum length of the vector is 8 vec eutranBands; // Valid only if radioAccessNetwork = EUTRAN // otherwise must be empty // Maximum length of the vector is 8 vec channels; // The radio channels to scan as defined in // 3GPP TS 25.101 and 36.101 // Maximum length of the vector is 32 }; struct NetworkScanRequest { ScanType type; // One shot scan or periodic int32_t interval; // Time interval in seconds between periodic scans, only // valid when type = PERIODIC // Range: 5 to 600 vec specifiers; // networks with bands/channels to scan // Maximum length of the vector is 8 }; struct NetworkScanResult { ScanStatus status; // The status of the scan RadioError error; // The error code of the incremental result vec networkInfos; // List of network information as CellInfo }; struct KeepaliveRequest { KeepaliveType type; // The format of the keepalive packet vec sourceAddress; // source address with type = family, in network // byte order int32_t sourcePort; // source port if relevant for the given type // INT_MAX: 0x7FFFFFFF denotes that the field is unused vec destinationAddress; // destination address with type = family, in network // byte order int32_t destinationPort; // destination if relevant for the given type // INT_MAX: 0x7FFFFFFF denotes that the field is unused int32_t maxKeepaliveIntervalMillis; // the max interval between packets, in milliseconds int32_t cid; // Context ID, returned in setupDataCallResponse // that uniquely identifies the data call to which // this keepalive must applied }; struct KeepaliveStatus { int32_t sessionHandle; // the sessionHandle provided by the api KeepaliveStatusCode code; // status for the given keepalive }; struct ImsiEncryptionInfo { string mcc; // MCC of the Carrier. string mnc; // MNC of the Carrier. vec carrierKey; // Carrier specific key to be used for encryption. It must // be opaque to the framework. This is the byte-stream // representation of the key. This is an external encoded // form for the key used when a standard representation of // the key is needed outside the Java Virtual Machine, as // when transmitting the key to some other party. // The key is encoded according to a standard format // (such as X.509 SubjectPublicKeyInfo or PKCS#8), and is // returned using the getEncoded method as defined on the // java.security.Key interface. string keyIdentifier; // This is an opaque value we're given by the carrier // and is returned to the carrier. This is used by the server to // help it locate the private key to decrypt the permanent // identity. int64_t expirationTime; // date-time in UTC when the key will expire. };