13e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby/*
23e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby * Copyright (C) 2012 The Android Open Source Project
33e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby *
43e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby * Licensed under the Apache License, Version 2.0 (the "License");
53e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby * you may not use this file except in compliance with the License.
63e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby * You may obtain a copy of the License at
73e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby *
83e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby *      http://www.apache.org/licenses/LICENSE-2.0
93e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby *
103e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby * Unless required by applicable law or agreed to in writing, software
113e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby * distributed under the License is distributed on an "AS IS" BASIS,
123e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
133e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby * See the License for the specific language governing permissions and
143e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby * limitations under the License.
153e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby */
163e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby
173e3c3f80a90b156ff500076f8655647dfb317acfJake Hambypackage android.telephony.cdma;
183e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby
193e3c3f80a90b156ff500076f8655647dfb317acfJake Hambyimport android.os.Parcel;
203e3c3f80a90b156ff500076f8655647dfb317acfJake Hambyimport android.os.Parcelable;
213e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby
223e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby/**
233e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby * CDMA Service Category Program Data from SCPT teleservice SMS.
243e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby * The CellBroadcastReceiver app receives an Intent with action
253e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby * {@link android.provider.Telephony.Sms.Intents#SMS_SERVICE_CATEGORY_PROGRAM_DATA_RECEIVED_ACTION}
263e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby * containing an array of these objects to update its list of cell broadcast service categories
273e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby * to display.
283e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby *
293e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby * {@hide}
303e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby */
313e3c3f80a90b156ff500076f8655647dfb317acfJake Hambypublic class CdmaSmsCbProgramData implements Parcelable {
323e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby
333e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    /** Delete the specified service category from the list of enabled categories. */
343e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    public static final int OPERATION_DELETE_CATEGORY   = 0;
353e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby
363e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    /** Add the specified service category to the list of enabled categories. */
373e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    public static final int OPERATION_ADD_CATEGORY      = 1;
383e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby
393e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    /** Clear all service categories from the list of enabled categories. */
403e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    public static final int OPERATION_CLEAR_CATEGORIES  = 2;
413e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby
423e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    /** Alert option: no alert. */
433e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    public static final int ALERT_OPTION_NO_ALERT               = 0;
443e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby
453e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    /** Alert option: default alert. */
463e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    public static final int ALERT_OPTION_DEFAULT_ALERT          = 1;
473e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby
483e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    /** Alert option: vibrate alert once. */
493e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    public static final int ALERT_OPTION_VIBRATE_ONCE           = 2;
503e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby
513e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    /** Alert option: vibrate alert - repeat. */
523e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    public static final int ALERT_OPTION_VIBRATE_REPEAT         = 3;
533e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby
543e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    /** Alert option: visual alert once. */
553e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    public static final int ALERT_OPTION_VISUAL_ONCE            = 4;
563e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby
573e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    /** Alert option: visual alert - repeat. */
583e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    public static final int ALERT_OPTION_VISUAL_REPEAT          = 5;
593e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby
603e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    /** Alert option: low-priority alert once. */
613e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    public static final int ALERT_OPTION_LOW_PRIORITY_ONCE      = 6;
623e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby
633e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    /** Alert option: low-priority alert - repeat. */
643e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    public static final int ALERT_OPTION_LOW_PRIORITY_REPEAT    = 7;
653e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby
663e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    /** Alert option: medium-priority alert once. */
673e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    public static final int ALERT_OPTION_MED_PRIORITY_ONCE      = 8;
683e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby
693e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    /** Alert option: medium-priority alert - repeat. */
703e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    public static final int ALERT_OPTION_MED_PRIORITY_REPEAT    = 9;
713e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby
723e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    /** Alert option: high-priority alert once. */
733e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    public static final int ALERT_OPTION_HIGH_PRIORITY_ONCE     = 10;
743e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby
753e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    /** Alert option: high-priority alert - repeat. */
763e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    public static final int ALERT_OPTION_HIGH_PRIORITY_REPEAT   = 11;
773e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby
783e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    /** Service category operation (add/delete/clear). */
793e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    private final int mOperation;
803e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby
813e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    /** Service category to modify. */
823e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    private final int mCategory;
833e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby
84893d93d2076ccbb4d8c9d37bf6ffe14e4847a470Jake Hamby    /** Language used for service category name (defined in BearerData.LANGUAGE_*). */
85893d93d2076ccbb4d8c9d37bf6ffe14e4847a470Jake Hamby    private final int mLanguage;
863e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby
873e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    /** Maximum number of messages to store for this service category. */
883e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    private final int mMaxMessages;
893e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby
903e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    /** Service category alert option. */
913e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    private final int mAlertOption;
923e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby
933e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    /** Name of service category. */
943e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    private final String mCategoryName;
953e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby
963e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    /** Create a new CdmaSmsCbProgramData object with the specified values. */
97893d93d2076ccbb4d8c9d37bf6ffe14e4847a470Jake Hamby    public CdmaSmsCbProgramData(int operation, int category, int language, int maxMessages,
983e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby            int alertOption, String categoryName) {
993e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby        mOperation = operation;
1003e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby        mCategory = category;
1013e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby        mLanguage = language;
1023e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby        mMaxMessages = maxMessages;
1033e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby        mAlertOption = alertOption;
1043e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby        mCategoryName = categoryName;
1053e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    }
1063e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby
1073e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    /** Create a new CdmaSmsCbProgramData object from a Parcel. */
1083e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    CdmaSmsCbProgramData(Parcel in) {
1093e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby        mOperation = in.readInt();
1103e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby        mCategory = in.readInt();
111893d93d2076ccbb4d8c9d37bf6ffe14e4847a470Jake Hamby        mLanguage = in.readInt();
1123e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby        mMaxMessages = in.readInt();
1133e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby        mAlertOption = in.readInt();
1143e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby        mCategoryName = in.readString();
1153e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    }
1163e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby
1173e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    /**
1183e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby     * Flatten this object into a Parcel.
1193e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby     *
1203e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby     * @param dest  The Parcel in which the object should be written.
1213e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby     * @param flags Additional flags about how the object should be written (ignored).
1223e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby     */
1233e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    @Override
1243e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    public void writeToParcel(Parcel dest, int flags) {
1253e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby        dest.writeInt(mOperation);
1263e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby        dest.writeInt(mCategory);
127893d93d2076ccbb4d8c9d37bf6ffe14e4847a470Jake Hamby        dest.writeInt(mLanguage);
1283e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby        dest.writeInt(mMaxMessages);
1293e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby        dest.writeInt(mAlertOption);
1303e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby        dest.writeString(mCategoryName);
1313e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    }
1323e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby
1333e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    /**
1343e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby     * Returns the service category operation, e.g. {@link #OPERATION_ADD_CATEGORY}.
1353e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby     * @return one of the {@code OPERATION_*} values
1363e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby     */
1373e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    public int getOperation() {
1383e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby        return mOperation;
1393e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    }
1403e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby
1413e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    /**
1423e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby     * Returns the CDMA service category to modify.
1433e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby     * @return a 16-bit CDMA service category value
1443e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby     */
1453e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    public int getCategory() {
1463e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby        return mCategory;
1473e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    }
1483e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby
1493e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    /**
150893d93d2076ccbb4d8c9d37bf6ffe14e4847a470Jake Hamby     * Returns the CDMA language code for this service category.
151893d93d2076ccbb4d8c9d37bf6ffe14e4847a470Jake Hamby     * @return one of the language values defined in BearerData.LANGUAGE_*
1523e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby     */
153893d93d2076ccbb4d8c9d37bf6ffe14e4847a470Jake Hamby    public int getLanguage() {
1543e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby        return mLanguage;
1553e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    }
1563e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby
1573e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    /**
1583e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby     * Returns the maximum number of messages to store for this service category.
1593e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby     * @return the maximum number of messages to store for this service category
1603e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby     */
1613e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    public int getMaxMessages() {
1623e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby        return mMaxMessages;
1633e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    }
1643e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby
1653e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    /**
1663e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby     * Returns the service category alert option, e.g. {@link #ALERT_OPTION_DEFAULT_ALERT}.
1673e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby     * @return one of the {@code ALERT_OPTION_*} values
1683e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby     */
1693e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    public int getAlertOption() {
1703e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby        return mAlertOption;
1713e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    }
1723e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby
1733e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    /**
174893d93d2076ccbb4d8c9d37bf6ffe14e4847a470Jake Hamby     * Returns the service category name, in the language specified by {@link #getLanguage()}.
1753e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby     * @return an optional service category name
1763e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby     */
1773e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    public String getCategoryName() {
1783e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby        return mCategoryName;
1793e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    }
1803e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby
1813e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    @Override
1823e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    public String toString() {
1833e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby        return "CdmaSmsCbProgramData{operation=" + mOperation + ", category=" + mCategory
1843e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby                + ", language=" + mLanguage + ", max messages=" + mMaxMessages
1853e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby                + ", alert option=" + mAlertOption + ", category name=" + mCategoryName + '}';
1863e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    }
1873e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby
1883e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    /**
1893e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby     * Describe the kinds of special objects contained in the marshalled representation.
1903e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby     * @return a bitmask indicating this Parcelable contains no special objects
1913e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby     */
1923e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    @Override
1933e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    public int describeContents() {
1943e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby        return 0;
1953e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    }
1963e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby
1973e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    /** Creator for unparcelling objects. */
1983e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    public static final Parcelable.Creator<CdmaSmsCbProgramData>
1993e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby            CREATOR = new Parcelable.Creator<CdmaSmsCbProgramData>() {
2003e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby        @Override
2013e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby        public CdmaSmsCbProgramData createFromParcel(Parcel in) {
2023e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby            return new CdmaSmsCbProgramData(in);
2033e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby        }
2043e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby
2053e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby        @Override
2063e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby        public CdmaSmsCbProgramData[] newArray(int size) {
2073e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby            return new CdmaSmsCbProgramData[size];
2083e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby        }
2093e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby    };
2103e3c3f80a90b156ff500076f8655647dfb317acfJake Hamby}
211