blob: 93d5d44a1c51600350152e0e949a5f66f83f630b [file] [log] [blame]
/*
* 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> geranBands; // Valid only if radioAccessNetwork = GERAN
// otherwise must be empty
// Maximum length of the vector is 8
vec<UtranBands> utranBands; // Valid only if radioAccessNetwork = UTRAN
// otherwise must be empty
// Maximum length of the vector is 8
vec<EutranBands> eutranBands; // Valid only if radioAccessNetwork = EUTRAN
// otherwise must be empty
// Maximum length of the vector is 8
vec<int32_t> 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<RadioAccessSpecifier> 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<CellInfo> networkInfos; // List of network information as CellInfo
};
struct KeepaliveRequest {
KeepaliveType type; // The format of the keepalive packet
vec<uint8_t> 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<uint8_t> 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<uint8_t> 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.
};