104e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville/*
204e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville * Copyright (C) 2008 The Android Open Source Project
304e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville *
404e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville * Licensed under the Apache License, Version 2.0 (the "License");
504e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville * you may not use this file except in compliance with the License.
604e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville * You may obtain a copy of the License at
704e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville *
804e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville *      http://www.apache.org/licenses/LICENSE-2.0
904e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville *
1004e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville * Unless required by applicable law or agreed to in writing, software
1104e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville * distributed under the License is distributed on an "AS IS" BASIS,
1204e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1304e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville * See the License for the specific language governing permissions and
1404e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville * limitations under the License.
1504e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville */
1604e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville
1704e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Savillepackage com.android.internal.telephony;
1804e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville
1904e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Savillepublic abstract class SmsAddress {
2004e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville    // From TS 23.040 9.1.2.5 and TS 24.008 table 10.5.118
2104e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville    // and C.S0005-D table 2.7.1.3.2.4-2
2204e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville    public static final int TON_UNKNOWN = 0;
2304e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville    public static final int TON_INTERNATIONAL = 1;
2404e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville    public static final int TON_NATIONAL = 2;
2504e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville    public static final int TON_NETWORK = 3;
2604e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville    public static final int TON_SUBSCRIBER = 4;
2704e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville    public static final int TON_ALPHANUMERIC = 5;
2804e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville    public static final int TON_ABBREVIATED = 6;
2904e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville
3004e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville    public int ton;
3104e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville    public String address;
3204e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville    public byte[] origBytes;
3304e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville
3404e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville    /**
3504e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville     * Returns the address of the SMS message in String form or null if unavailable
3604e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville     */
3704e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville    public String getAddressString() {
3804e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville        return address;
3904e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville    }
4004e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville
4104e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville    /**
4204e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville     * Returns true if this is an alphanumeric address
4304e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville     */
4404e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville    public boolean isAlphanumeric() {
4504e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville        return ton == TON_ALPHANUMERIC;
4604e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville    }
4704e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville
4804e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville    /**
4904e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville     * Returns true if this is a network address
5004e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville     */
5104e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville    public boolean isNetworkSpecific() {
5204e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville        return ton == TON_NETWORK;
5304e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville    }
5404e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville
5504e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville    public boolean couldBeEmailGateway() {
5604e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville        // Some carriers seems to send email gateway messages in this form:
5704e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville        // from: an UNKNOWN TON, 3 or 4 digits long, beginning with a 5
5804e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville        // PID: 0x00, Data coding scheme 0x03
5904e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville        // So we just attempt to treat any message from an address length <= 4
6004e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville        // as an email gateway
6104e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville
6204e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville        return address.length() <= 4;
6304e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville    }
6404e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville
6504e71b3db84fd5f7fc4eefb49a33154ea91ec9fcWink Saville}
66