Home | History | Annotate | Download | only in telephony
      1 /*
      2  * Copyright (C) 2012 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package android.telephony;
     18 
     19 import android.os.Parcel;
     20 import android.os.Parcelable;
     21 
     22 /**
     23  * Contains CMAS warning notification Type 1 elements for a {@link SmsCbMessage}.
     24  * Supported values for each element are defined in TIA-1149-0-1 (CMAS over CDMA) and
     25  * 3GPP TS 23.041 (for GSM/UMTS).
     26  *
     27  * {@hide}
     28  */
     29 public class SmsCbCmasInfo implements Parcelable {
     30 
     31     // CMAS message class (in GSM/UMTS message identifier or CDMA service category).
     32 
     33     /** Presidential-level alert (Korean Public Alert System Class 0 message). */
     34     public static final int CMAS_CLASS_PRESIDENTIAL_LEVEL_ALERT = 0x00;
     35 
     36     /** Extreme threat to life and property (Korean Public Alert System Class 1 message). */
     37     public static final int CMAS_CLASS_EXTREME_THREAT = 0x01;
     38 
     39     /** Severe threat to life and property (Korean Public Alert System Class 1 message). */
     40     public static final int CMAS_CLASS_SEVERE_THREAT = 0x02;
     41 
     42     /** Child abduction emergency (AMBER Alert). */
     43     public static final int CMAS_CLASS_CHILD_ABDUCTION_EMERGENCY = 0x03;
     44 
     45     /** CMAS test message. */
     46     public static final int CMAS_CLASS_REQUIRED_MONTHLY_TEST = 0x04;
     47 
     48     /** CMAS exercise. */
     49     public static final int CMAS_CLASS_CMAS_EXERCISE = 0x05;
     50 
     51     /** CMAS category for operator defined use. */
     52     public static final int CMAS_CLASS_OPERATOR_DEFINED_USE = 0x06;
     53 
     54     /** CMAS category for warning types that are reserved for future extension. */
     55     public static final int CMAS_CLASS_UNKNOWN = -1;
     56 
     57     // CMAS alert category (in CDMA type 1 elements record).
     58 
     59     /** CMAS alert category: Geophysical including landslide. */
     60     public static final int CMAS_CATEGORY_GEO = 0x00;
     61 
     62     /** CMAS alert category: Meteorological including flood. */
     63     public static final int CMAS_CATEGORY_MET = 0x01;
     64 
     65     /** CMAS alert category: General emergency and public safety. */
     66     public static final int CMAS_CATEGORY_SAFETY = 0x02;
     67 
     68     /** CMAS alert category: Law enforcement, military, homeland/local/private security. */
     69     public static final int CMAS_CATEGORY_SECURITY = 0x03;
     70 
     71     /** CMAS alert category: Rescue and recovery. */
     72     public static final int CMAS_CATEGORY_RESCUE = 0x04;
     73 
     74     /** CMAS alert category: Fire suppression and rescue. */
     75     public static final int CMAS_CATEGORY_FIRE = 0x05;
     76 
     77     /** CMAS alert category: Medical and public health. */
     78     public static final int CMAS_CATEGORY_HEALTH = 0x06;
     79 
     80     /** CMAS alert category: Pollution and other environmental. */
     81     public static final int CMAS_CATEGORY_ENV = 0x07;
     82 
     83     /** CMAS alert category: Public and private transportation. */
     84     public static final int CMAS_CATEGORY_TRANSPORT = 0x08;
     85 
     86     /** CMAS alert category: Utility, telecom, other non-transport infrastructure. */
     87     public static final int CMAS_CATEGORY_INFRA = 0x09;
     88 
     89     /** CMAS alert category: Chem, bio, radiological, nuclear, high explosive threat or attack. */
     90     public static final int CMAS_CATEGORY_CBRNE = 0x0a;
     91 
     92     /** CMAS alert category: Other events. */
     93     public static final int CMAS_CATEGORY_OTHER = 0x0b;
     94 
     95     /**
     96      * CMAS alert category is unknown. The category is only available for CDMA broadcasts
     97      * containing a type 1 elements record, so GSM and UMTS broadcasts always return unknown.
     98      */
     99     public static final int CMAS_CATEGORY_UNKNOWN = -1;
    100 
    101     // CMAS response type (in CDMA type 1 elements record).
    102 
    103     /** CMAS response type: Take shelter in place. */
    104     public static final int CMAS_RESPONSE_TYPE_SHELTER = 0x00;
    105 
    106     /** CMAS response type: Evacuate (Relocate). */
    107     public static final int CMAS_RESPONSE_TYPE_EVACUATE = 0x01;
    108 
    109     /** CMAS response type: Make preparations. */
    110     public static final int CMAS_RESPONSE_TYPE_PREPARE = 0x02;
    111 
    112     /** CMAS response type: Execute a pre-planned activity. */
    113     public static final int CMAS_RESPONSE_TYPE_EXECUTE = 0x03;
    114 
    115     /** CMAS response type: Attend to information sources. */
    116     public static final int CMAS_RESPONSE_TYPE_MONITOR = 0x04;
    117 
    118     /** CMAS response type: Avoid hazard. */
    119     public static final int CMAS_RESPONSE_TYPE_AVOID = 0x05;
    120 
    121     /** CMAS response type: Evaluate the information in this message (not for public warnings). */
    122     public static final int CMAS_RESPONSE_TYPE_ASSESS = 0x06;
    123 
    124     /** CMAS response type: No action recommended. */
    125     public static final int CMAS_RESPONSE_TYPE_NONE = 0x07;
    126 
    127     /**
    128      * CMAS response type is unknown. The response type is only available for CDMA broadcasts
    129      * containing a type 1 elements record, so GSM and UMTS broadcasts always return unknown.
    130      */
    131     public static final int CMAS_RESPONSE_TYPE_UNKNOWN = -1;
    132 
    133     // 4-bit CMAS severity (in GSM/UMTS message identifier or CDMA type 1 elements record).
    134 
    135     /** CMAS severity type: Extraordinary threat to life or property. */
    136     public static final int CMAS_SEVERITY_EXTREME = 0x0;
    137 
    138     /** CMAS severity type: Significant threat to life or property. */
    139     public static final int CMAS_SEVERITY_SEVERE = 0x1;
    140 
    141     /**
    142      * CMAS alert severity is unknown. The severity is available for CDMA warning alerts
    143      * containing a type 1 elements record and for all GSM and UMTS alerts except for the
    144      * Presidential-level alert class (Korean Public Alert System Class 0).
    145      */
    146     public static final int CMAS_SEVERITY_UNKNOWN = -1;
    147 
    148     // CMAS urgency (in GSM/UMTS message identifier or CDMA type 1 elements record).
    149 
    150     /** CMAS urgency type: Responsive action should be taken immediately. */
    151     public static final int CMAS_URGENCY_IMMEDIATE = 0x0;
    152 
    153     /** CMAS urgency type: Responsive action should be taken within the next hour. */
    154     public static final int CMAS_URGENCY_EXPECTED = 0x1;
    155 
    156     /**
    157      * CMAS alert urgency is unknown. The urgency is available for CDMA warning alerts
    158      * containing a type 1 elements record and for all GSM and UMTS alerts except for the
    159      * Presidential-level alert class (Korean Public Alert System Class 0).
    160      */
    161     public static final int CMAS_URGENCY_UNKNOWN = -1;
    162 
    163     // CMAS certainty (in GSM/UMTS message identifier or CDMA type 1 elements record).
    164 
    165     /** CMAS certainty type: Determined to have occurred or to be ongoing. */
    166     public static final int CMAS_CERTAINTY_OBSERVED = 0x0;
    167 
    168     /** CMAS certainty type: Likely (probability > ~50%). */
    169     public static final int CMAS_CERTAINTY_LIKELY = 0x1;
    170 
    171     /**
    172      * CMAS alert certainty is unknown. The certainty is available for CDMA warning alerts
    173      * containing a type 1 elements record and for all GSM and UMTS alerts except for the
    174      * Presidential-level alert class (Korean Public Alert System Class 0).
    175      */
    176     public static final int CMAS_CERTAINTY_UNKNOWN = -1;
    177 
    178     /** CMAS message class. */
    179     private final int mMessageClass;
    180 
    181     /** CMAS category. */
    182     private final int mCategory;
    183 
    184     /** CMAS response type. */
    185     private final int mResponseType;
    186 
    187     /** CMAS severity. */
    188     private final int mSeverity;
    189 
    190     /** CMAS urgency. */
    191     private final int mUrgency;
    192 
    193     /** CMAS certainty. */
    194     private final int mCertainty;
    195 
    196     /** Create a new SmsCbCmasInfo object with the specified values. */
    197     public SmsCbCmasInfo(int messageClass, int category, int responseType, int severity,
    198             int urgency, int certainty) {
    199         mMessageClass = messageClass;
    200         mCategory = category;
    201         mResponseType = responseType;
    202         mSeverity = severity;
    203         mUrgency = urgency;
    204         mCertainty = certainty;
    205     }
    206 
    207     /** Create a new SmsCbCmasInfo object from a Parcel. */
    208     SmsCbCmasInfo(Parcel in) {
    209         mMessageClass = in.readInt();
    210         mCategory = in.readInt();
    211         mResponseType = in.readInt();
    212         mSeverity = in.readInt();
    213         mUrgency = in.readInt();
    214         mCertainty = in.readInt();
    215     }
    216 
    217     /**
    218      * Flatten this object into a Parcel.
    219      *
    220      * @param dest  The Parcel in which the object should be written.
    221      * @param flags Additional flags about how the object should be written (ignored).
    222      */
    223     @Override
    224     public void writeToParcel(Parcel dest, int flags) {
    225         dest.writeInt(mMessageClass);
    226         dest.writeInt(mCategory);
    227         dest.writeInt(mResponseType);
    228         dest.writeInt(mSeverity);
    229         dest.writeInt(mUrgency);
    230         dest.writeInt(mCertainty);
    231     }
    232 
    233     /**
    234      * Returns the CMAS message class, e.g. {@link #CMAS_CLASS_PRESIDENTIAL_LEVEL_ALERT}.
    235      * @return one of the {@code CMAS_CLASS} values
    236      */
    237     public int getMessageClass() {
    238         return mMessageClass;
    239     }
    240 
    241     /**
    242      * Returns the CMAS category, e.g. {@link #CMAS_CATEGORY_GEO}.
    243      * @return one of the {@code CMAS_CATEGORY} values
    244      */
    245     public int getCategory() {
    246         return mCategory;
    247     }
    248 
    249     /**
    250      * Returns the CMAS response type, e.g. {@link #CMAS_RESPONSE_TYPE_SHELTER}.
    251      * @return one of the {@code CMAS_RESPONSE_TYPE} values
    252      */
    253     public int getResponseType() {
    254         return mResponseType;
    255     }
    256 
    257     /**
    258      * Returns the CMAS severity, e.g. {@link #CMAS_SEVERITY_EXTREME}.
    259      * @return one of the {@code CMAS_SEVERITY} values
    260      */
    261     public int getSeverity() {
    262         return mSeverity;
    263     }
    264 
    265     /**
    266      * Returns the CMAS urgency, e.g. {@link #CMAS_URGENCY_IMMEDIATE}.
    267      * @return one of the {@code CMAS_URGENCY} values
    268      */
    269     public int getUrgency() {
    270         return mUrgency;
    271     }
    272 
    273     /**
    274      * Returns the CMAS certainty, e.g. {@link #CMAS_CERTAINTY_OBSERVED}.
    275      * @return one of the {@code CMAS_CERTAINTY} values
    276      */
    277     public int getCertainty() {
    278         return mCertainty;
    279     }
    280 
    281     @Override
    282     public String toString() {
    283         return "SmsCbCmasInfo{messageClass=" + mMessageClass + ", category=" + mCategory
    284                 + ", responseType=" + mResponseType + ", severity=" + mSeverity
    285                 + ", urgency=" + mUrgency + ", certainty=" + mCertainty + '}';
    286     }
    287 
    288     /**
    289      * Describe the kinds of special objects contained in the marshalled representation.
    290      * @return a bitmask indicating this Parcelable contains no special objects
    291      */
    292     @Override
    293     public int describeContents() {
    294         return 0;
    295     }
    296 
    297     /** Creator for unparcelling objects. */
    298     public static final Parcelable.Creator<SmsCbCmasInfo>
    299             CREATOR = new Parcelable.Creator<SmsCbCmasInfo>() {
    300         @Override
    301         public SmsCbCmasInfo createFromParcel(Parcel in) {
    302             return new SmsCbCmasInfo(in);
    303         }
    304 
    305         @Override
    306         public SmsCbCmasInfo[] newArray(int size) {
    307             return new SmsCbCmasInfo[size];
    308         }
    309     };
    310 }
    311