/*
 * Copyright (C) 2018 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.config@1.1;

/**
 * Note: IRadioConfig 1.1 is an intermediate layer between Android P and Android Q.
 * It's specifically designed for CBRS related interfaces. All other interfaces
 * for Q are be added in IRadioConfig 1.2.
 */

/**
 * A field in PhoneCapability that has information of each logical modem.
 */
struct ModemInfo {
    /**
     * Logical modem ID.
     */
    uint8_t modemId;
};

/**
 * Phone capability which describes the data connection capability of modem.
 * It's used to evaluate possible phone config change, for example from single
 * SIM device to multi-SIM device.
 */
struct PhoneCapability {
    /**
     * maxActiveData defines how many logical modems can have
     * PS attached simultaneously. For example, for L+L modem it
     * should be 2.
     */
    uint8_t maxActiveData;
    /**
     * maxActiveData defines how many logical modems can have
     * internet PDN connections simultaneously. For example, for L+L
     * DSDS modem it’s 1, and for DSDA modem it’s 2.
     */
    uint8_t maxActiveInternetData;
    /**
     * Whether modem supports both internet PDN up so
     * that we can do ping test before tearing down the
     * other one.
     */
    bool isInternetLingeringSupported;
    /**
     * List of logical modem information.
     */
    vec<ModemInfo> logicalModemList;
};

struct ModemsConfig {
    /**
     * variable to indicate the number of live modems i.e modems that are enabled
     * and actively working as part of a working connectivity stack
     */
    uint8_t numOfLiveModems;
};