17afdb3942adde7efd33b5af5556fead92243e49cNathan Harold/*
27afdb3942adde7efd33b5af5556fead92243e49cNathan Harold * Copyright (C) 2018 The Android Open Source Project
37afdb3942adde7efd33b5af5556fead92243e49cNathan Harold *
47afdb3942adde7efd33b5af5556fead92243e49cNathan Harold * Licensed under the Apache License, Version 2.0 (the "License");
57afdb3942adde7efd33b5af5556fead92243e49cNathan Harold * you may not use this file except in compliance with the License.
67afdb3942adde7efd33b5af5556fead92243e49cNathan Harold * You may obtain a copy of the License at
77afdb3942adde7efd33b5af5556fead92243e49cNathan Harold *
87afdb3942adde7efd33b5af5556fead92243e49cNathan Harold *      http://www.apache.org/licenses/LICENSE-2.0
97afdb3942adde7efd33b5af5556fead92243e49cNathan Harold *
107afdb3942adde7efd33b5af5556fead92243e49cNathan Harold * Unless required by applicable law or agreed to in writing, software
117afdb3942adde7efd33b5af5556fead92243e49cNathan Harold * distributed under the License is distributed on an "AS IS" BASIS,
127afdb3942adde7efd33b5af5556fead92243e49cNathan Harold * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137afdb3942adde7efd33b5af5556fead92243e49cNathan Harold * See the License for the specific language governing permissions and
147afdb3942adde7efd33b5af5556fead92243e49cNathan Harold * limitations under the License.
157afdb3942adde7efd33b5af5556fead92243e49cNathan Harold */
167afdb3942adde7efd33b5af5556fead92243e49cNathan Harold
177afdb3942adde7efd33b5af5556fead92243e49cNathan Haroldpackage com.android.internal.telephony;
187afdb3942adde7efd33b5af5556fead92243e49cNathan Harold
197afdb3942adde7efd33b5af5556fead92243e49cNathan Harold/**
207afdb3942adde7efd33b5af5556fead92243e49cNathan Harold * Link Bandwidth Information from the Radio
217afdb3942adde7efd33b5af5556fead92243e49cNathan Harold */
227afdb3942adde7efd33b5af5556fead92243e49cNathan Haroldpublic class LinkCapacityEstimate {
237afdb3942adde7efd33b5af5556fead92243e49cNathan Harold    /** Any field that is not reported shall be set to INVALID */
247afdb3942adde7efd33b5af5556fead92243e49cNathan Harold    public static final int INVALID = -1;
257afdb3942adde7efd33b5af5556fead92243e49cNathan Harold
267afdb3942adde7efd33b5af5556fead92243e49cNathan Harold    /** LCE is active; Deprecated in HAL 1.2 */
277afdb3942adde7efd33b5af5556fead92243e49cNathan Harold    public static final int STATUS_ACTIVE = 0;
287afdb3942adde7efd33b5af5556fead92243e49cNathan Harold
297afdb3942adde7efd33b5af5556fead92243e49cNathan Harold    /** LCE is suspended; Deprecated in HAL 1.2 */
307afdb3942adde7efd33b5af5556fead92243e49cNathan Harold    public static final int STATUS_SUSPENDED = 1;
317afdb3942adde7efd33b5af5556fead92243e49cNathan Harold
327afdb3942adde7efd33b5af5556fead92243e49cNathan Harold    /** Downlink radio link capacity in kbps */
337afdb3942adde7efd33b5af5556fead92243e49cNathan Harold    public final int downlinkCapacityKbps;
347afdb3942adde7efd33b5af5556fead92243e49cNathan Harold
357afdb3942adde7efd33b5af5556fead92243e49cNathan Harold    /** Uplink radio link capacity; added in HAL 1.2 */
367afdb3942adde7efd33b5af5556fead92243e49cNathan Harold    public final int uplinkCapacityKbps;
377afdb3942adde7efd33b5af5556fead92243e49cNathan Harold
387afdb3942adde7efd33b5af5556fead92243e49cNathan Harold    /** Confidence of the downlink estimate as a percentage [1, 100]; deprecated in HAL 1.2 */
397afdb3942adde7efd33b5af5556fead92243e49cNathan Harold    public final int confidence;
407afdb3942adde7efd33b5af5556fead92243e49cNathan Harold
417afdb3942adde7efd33b5af5556fead92243e49cNathan Harold    /** Status of the LCE; deprecated in HAL 1.2 */
427afdb3942adde7efd33b5af5556fead92243e49cNathan Harold    public final int status; // either STATUS_ACTIVE, STATUS_SUSPENDED, or INVALID
437afdb3942adde7efd33b5af5556fead92243e49cNathan Harold
447afdb3942adde7efd33b5af5556fead92243e49cNathan Harold    /** Constructor matching the estimate in Radio HAL v1.0 */
457afdb3942adde7efd33b5af5556fead92243e49cNathan Harold    public LinkCapacityEstimate(int downlinkCapacityKbps, int confidence, int status) {
467afdb3942adde7efd33b5af5556fead92243e49cNathan Harold        this.downlinkCapacityKbps = downlinkCapacityKbps;
477afdb3942adde7efd33b5af5556fead92243e49cNathan Harold        this.confidence = confidence;
487afdb3942adde7efd33b5af5556fead92243e49cNathan Harold        this.status = status;
497afdb3942adde7efd33b5af5556fead92243e49cNathan Harold        this.uplinkCapacityKbps = INVALID;
507afdb3942adde7efd33b5af5556fead92243e49cNathan Harold    }
517afdb3942adde7efd33b5af5556fead92243e49cNathan Harold
527afdb3942adde7efd33b5af5556fead92243e49cNathan Harold    /** Constructor matching the estimate in Radio HAL v1.2 */
537afdb3942adde7efd33b5af5556fead92243e49cNathan Harold    public LinkCapacityEstimate(int downlinkCapacityKbps, int uplinkCapacityKbps) {
547afdb3942adde7efd33b5af5556fead92243e49cNathan Harold        this.downlinkCapacityKbps = downlinkCapacityKbps;
557afdb3942adde7efd33b5af5556fead92243e49cNathan Harold        this.uplinkCapacityKbps = uplinkCapacityKbps;
567afdb3942adde7efd33b5af5556fead92243e49cNathan Harold        this.confidence = INVALID;
577afdb3942adde7efd33b5af5556fead92243e49cNathan Harold        this.status = INVALID;
587afdb3942adde7efd33b5af5556fead92243e49cNathan Harold    }
597afdb3942adde7efd33b5af5556fead92243e49cNathan Harold
607afdb3942adde7efd33b5af5556fead92243e49cNathan Harold    @Override
617afdb3942adde7efd33b5af5556fead92243e49cNathan Harold    public String toString() {
627afdb3942adde7efd33b5af5556fead92243e49cNathan Harold        return new StringBuilder()
637afdb3942adde7efd33b5af5556fead92243e49cNathan Harold                .append("{downlinkCapacityKbps=")
647afdb3942adde7efd33b5af5556fead92243e49cNathan Harold                .append(downlinkCapacityKbps)
657afdb3942adde7efd33b5af5556fead92243e49cNathan Harold                .append(", uplinkCapacityKbps=")
667afdb3942adde7efd33b5af5556fead92243e49cNathan Harold                .append(uplinkCapacityKbps)
677afdb3942adde7efd33b5af5556fead92243e49cNathan Harold                .append(", confidence=")
687afdb3942adde7efd33b5af5556fead92243e49cNathan Harold                .append(confidence)
697afdb3942adde7efd33b5af5556fead92243e49cNathan Harold                .append(", status=")
707afdb3942adde7efd33b5af5556fead92243e49cNathan Harold                .append(status)
717afdb3942adde7efd33b5af5556fead92243e49cNathan Harold                .toString();
727afdb3942adde7efd33b5af5556fead92243e49cNathan Harold    }
737afdb3942adde7efd33b5af5556fead92243e49cNathan Harold}
74