1d02a064168ae5c916b977182b764580e601cb084Wink Saville/* 2d02a064168ae5c916b977182b764580e601cb084Wink Saville * Copyright (C) 2007 Esmertec AG. 3d02a064168ae5c916b977182b764580e601cb084Wink Saville * Copyright (C) 2007 The Android Open Source Project 4d02a064168ae5c916b977182b764580e601cb084Wink Saville * 5d02a064168ae5c916b977182b764580e601cb084Wink Saville * Licensed under the Apache License, Version 2.0 (the "License"); 6d02a064168ae5c916b977182b764580e601cb084Wink Saville * you may not use this file except in compliance with the License. 7d02a064168ae5c916b977182b764580e601cb084Wink Saville * You may obtain a copy of the License at 8d02a064168ae5c916b977182b764580e601cb084Wink Saville * 9d02a064168ae5c916b977182b764580e601cb084Wink Saville * http://www.apache.org/licenses/LICENSE-2.0 10d02a064168ae5c916b977182b764580e601cb084Wink Saville * 11d02a064168ae5c916b977182b764580e601cb084Wink Saville * Unless required by applicable law or agreed to in writing, software 12d02a064168ae5c916b977182b764580e601cb084Wink Saville * distributed under the License is distributed on an "AS IS" BASIS, 13d02a064168ae5c916b977182b764580e601cb084Wink Saville * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14d02a064168ae5c916b977182b764580e601cb084Wink Saville * See the License for the specific language governing permissions and 15d02a064168ae5c916b977182b764580e601cb084Wink Saville * limitations under the License. 16d02a064168ae5c916b977182b764580e601cb084Wink Saville */ 17d02a064168ae5c916b977182b764580e601cb084Wink Saville 18d02a064168ae5c916b977182b764580e601cb084Wink Savillepackage com.google.android.mms.pdu; 19d02a064168ae5c916b977182b764580e601cb084Wink Saville 20d02a064168ae5c916b977182b764580e601cb084Wink Savilleimport com.google.android.mms.InvalidHeaderValueException; 21d02a064168ae5c916b977182b764580e601cb084Wink Saville 22d02a064168ae5c916b977182b764580e601cb084Wink Savilleimport java.util.ArrayList; 23d02a064168ae5c916b977182b764580e601cb084Wink Savilleimport java.util.HashMap; 24d02a064168ae5c916b977182b764580e601cb084Wink Saville 25d02a064168ae5c916b977182b764580e601cb084Wink Savillepublic class PduHeaders { 26d02a064168ae5c916b977182b764580e601cb084Wink Saville /** 27d02a064168ae5c916b977182b764580e601cb084Wink Saville * All pdu header fields. 28d02a064168ae5c916b977182b764580e601cb084Wink Saville */ 29d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int BCC = 0x81; 30d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int CC = 0x82; 31d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int CONTENT_LOCATION = 0x83; 32d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int CONTENT_TYPE = 0x84; 33d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int DATE = 0x85; 34d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int DELIVERY_REPORT = 0x86; 35d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int DELIVERY_TIME = 0x87; 36d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int EXPIRY = 0x88; 37d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int FROM = 0x89; 38d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int MESSAGE_CLASS = 0x8A; 39d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int MESSAGE_ID = 0x8B; 40d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int MESSAGE_TYPE = 0x8C; 41d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int MMS_VERSION = 0x8D; 42d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int MESSAGE_SIZE = 0x8E; 43d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int PRIORITY = 0x8F; 44d02a064168ae5c916b977182b764580e601cb084Wink Saville 45d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int READ_REPLY = 0x90; 46d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int READ_REPORT = 0x90; 47d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int REPORT_ALLOWED = 0x91; 48d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int RESPONSE_STATUS = 0x92; 49d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int RESPONSE_TEXT = 0x93; 50d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int SENDER_VISIBILITY = 0x94; 51d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int STATUS = 0x95; 52d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int SUBJECT = 0x96; 53d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int TO = 0x97; 54d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int TRANSACTION_ID = 0x98; 55d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int RETRIEVE_STATUS = 0x99; 56d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int RETRIEVE_TEXT = 0x9A; 57d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int READ_STATUS = 0x9B; 58d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int REPLY_CHARGING = 0x9C; 59d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int REPLY_CHARGING_DEADLINE = 0x9D; 60d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int REPLY_CHARGING_ID = 0x9E; 61d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int REPLY_CHARGING_SIZE = 0x9F; 62d02a064168ae5c916b977182b764580e601cb084Wink Saville 63d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int PREVIOUSLY_SENT_BY = 0xA0; 64d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int PREVIOUSLY_SENT_DATE = 0xA1; 65d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int STORE = 0xA2; 66d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int MM_STATE = 0xA3; 67d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int MM_FLAGS = 0xA4; 68d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int STORE_STATUS = 0xA5; 69d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int STORE_STATUS_TEXT = 0xA6; 70d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int STORED = 0xA7; 71d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int ATTRIBUTES = 0xA8; 72d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int TOTALS = 0xA9; 73d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int MBOX_TOTALS = 0xAA; 74d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int QUOTAS = 0xAB; 75d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int MBOX_QUOTAS = 0xAC; 76d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int MESSAGE_COUNT = 0xAD; 77d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int CONTENT = 0xAE; 78d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int START = 0xAF; 79d02a064168ae5c916b977182b764580e601cb084Wink Saville 80d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int ADDITIONAL_HEADERS = 0xB0; 81d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int DISTRIBUTION_INDICATOR = 0xB1; 82d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int ELEMENT_DESCRIPTOR = 0xB2; 83d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int LIMIT = 0xB3; 84d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int RECOMMENDED_RETRIEVAL_MODE = 0xB4; 85d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int RECOMMENDED_RETRIEVAL_MODE_TEXT = 0xB5; 86d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int STATUS_TEXT = 0xB6; 87d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int APPLIC_ID = 0xB7; 88d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int REPLY_APPLIC_ID = 0xB8; 89d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int AUX_APPLIC_ID = 0xB9; 90d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int CONTENT_CLASS = 0xBA; 91d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int DRM_CONTENT = 0xBB; 92d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int ADAPTATION_ALLOWED = 0xBC; 93d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int REPLACE_ID = 0xBD; 94d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int CANCEL_ID = 0xBE; 95d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int CANCEL_STATUS = 0xBF; 96d02a064168ae5c916b977182b764580e601cb084Wink Saville 97d02a064168ae5c916b977182b764580e601cb084Wink Saville /** 98d02a064168ae5c916b977182b764580e601cb084Wink Saville * X-Mms-Message-Type field types. 99d02a064168ae5c916b977182b764580e601cb084Wink Saville */ 100d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int MESSAGE_TYPE_SEND_REQ = 0x80; 101d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int MESSAGE_TYPE_SEND_CONF = 0x81; 102d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int MESSAGE_TYPE_NOTIFICATION_IND = 0x82; 103d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int MESSAGE_TYPE_NOTIFYRESP_IND = 0x83; 104d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int MESSAGE_TYPE_RETRIEVE_CONF = 0x84; 105d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int MESSAGE_TYPE_ACKNOWLEDGE_IND = 0x85; 106d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int MESSAGE_TYPE_DELIVERY_IND = 0x86; 107d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int MESSAGE_TYPE_READ_REC_IND = 0x87; 108d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int MESSAGE_TYPE_READ_ORIG_IND = 0x88; 109d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int MESSAGE_TYPE_FORWARD_REQ = 0x89; 110d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int MESSAGE_TYPE_FORWARD_CONF = 0x8A; 111d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int MESSAGE_TYPE_MBOX_STORE_REQ = 0x8B; 112d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int MESSAGE_TYPE_MBOX_STORE_CONF = 0x8C; 113d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int MESSAGE_TYPE_MBOX_VIEW_REQ = 0x8D; 114d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int MESSAGE_TYPE_MBOX_VIEW_CONF = 0x8E; 115d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int MESSAGE_TYPE_MBOX_UPLOAD_REQ = 0x8F; 116d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int MESSAGE_TYPE_MBOX_UPLOAD_CONF = 0x90; 117d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int MESSAGE_TYPE_MBOX_DELETE_REQ = 0x91; 118d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int MESSAGE_TYPE_MBOX_DELETE_CONF = 0x92; 119d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int MESSAGE_TYPE_MBOX_DESCR = 0x93; 120d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int MESSAGE_TYPE_DELETE_REQ = 0x94; 121d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int MESSAGE_TYPE_DELETE_CONF = 0x95; 122d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int MESSAGE_TYPE_CANCEL_REQ = 0x96; 123d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int MESSAGE_TYPE_CANCEL_CONF = 0x97; 124d02a064168ae5c916b977182b764580e601cb084Wink Saville 125d02a064168ae5c916b977182b764580e601cb084Wink Saville /** 126d02a064168ae5c916b977182b764580e601cb084Wink Saville * X-Mms-Delivery-Report | 127d02a064168ae5c916b977182b764580e601cb084Wink Saville * X-Mms-Read-Report | 128d02a064168ae5c916b977182b764580e601cb084Wink Saville * X-Mms-Report-Allowed | 129d02a064168ae5c916b977182b764580e601cb084Wink Saville * X-Mms-Sender-Visibility | 130d02a064168ae5c916b977182b764580e601cb084Wink Saville * X-Mms-Store | 131d02a064168ae5c916b977182b764580e601cb084Wink Saville * X-Mms-Stored | 132d02a064168ae5c916b977182b764580e601cb084Wink Saville * X-Mms-Totals | 133d02a064168ae5c916b977182b764580e601cb084Wink Saville * X-Mms-Quotas | 134d02a064168ae5c916b977182b764580e601cb084Wink Saville * X-Mms-Distribution-Indicator | 135d02a064168ae5c916b977182b764580e601cb084Wink Saville * X-Mms-DRM-Content | 136d02a064168ae5c916b977182b764580e601cb084Wink Saville * X-Mms-Adaptation-Allowed | 137d02a064168ae5c916b977182b764580e601cb084Wink Saville * field types. 138d02a064168ae5c916b977182b764580e601cb084Wink Saville */ 139d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int VALUE_YES = 0x80; 140d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int VALUE_NO = 0x81; 141d02a064168ae5c916b977182b764580e601cb084Wink Saville 142d02a064168ae5c916b977182b764580e601cb084Wink Saville /** 143d02a064168ae5c916b977182b764580e601cb084Wink Saville * Delivery-Time | 144d02a064168ae5c916b977182b764580e601cb084Wink Saville * Expiry and Reply-Charging-Deadline | 145d02a064168ae5c916b977182b764580e601cb084Wink Saville * field type components. 146d02a064168ae5c916b977182b764580e601cb084Wink Saville */ 147d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int VALUE_ABSOLUTE_TOKEN = 0x80; 148d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int VALUE_RELATIVE_TOKEN = 0x81; 149d02a064168ae5c916b977182b764580e601cb084Wink Saville 150d02a064168ae5c916b977182b764580e601cb084Wink Saville /** 151d02a064168ae5c916b977182b764580e601cb084Wink Saville * X-Mms-MMS-Version field types. 152d02a064168ae5c916b977182b764580e601cb084Wink Saville */ 153d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int MMS_VERSION_1_3 = ((1 << 4) | 3); 154d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int MMS_VERSION_1_2 = ((1 << 4) | 2); 155d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int MMS_VERSION_1_1 = ((1 << 4) | 1); 156d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int MMS_VERSION_1_0 = ((1 << 4) | 0); 157d02a064168ae5c916b977182b764580e601cb084Wink Saville 158d02a064168ae5c916b977182b764580e601cb084Wink Saville // Current version is 1.2. 159d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int CURRENT_MMS_VERSION = MMS_VERSION_1_2; 160d02a064168ae5c916b977182b764580e601cb084Wink Saville 161d02a064168ae5c916b977182b764580e601cb084Wink Saville /** 162d02a064168ae5c916b977182b764580e601cb084Wink Saville * From field type components. 163d02a064168ae5c916b977182b764580e601cb084Wink Saville */ 164d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int FROM_ADDRESS_PRESENT_TOKEN = 0x80; 165d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int FROM_INSERT_ADDRESS_TOKEN = 0x81; 166d02a064168ae5c916b977182b764580e601cb084Wink Saville 167d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final String FROM_ADDRESS_PRESENT_TOKEN_STR = "address-present-token"; 168d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final String FROM_INSERT_ADDRESS_TOKEN_STR = "insert-address-token"; 169d02a064168ae5c916b977182b764580e601cb084Wink Saville 170d02a064168ae5c916b977182b764580e601cb084Wink Saville /** 171d02a064168ae5c916b977182b764580e601cb084Wink Saville * X-Mms-Status Field. 172d02a064168ae5c916b977182b764580e601cb084Wink Saville */ 173d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int STATUS_EXPIRED = 0x80; 174d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int STATUS_RETRIEVED = 0x81; 175d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int STATUS_REJECTED = 0x82; 176d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int STATUS_DEFERRED = 0x83; 177d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int STATUS_UNRECOGNIZED = 0x84; 178d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int STATUS_INDETERMINATE = 0x85; 179d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int STATUS_FORWARDED = 0x86; 180d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int STATUS_UNREACHABLE = 0x87; 181d02a064168ae5c916b977182b764580e601cb084Wink Saville 182d02a064168ae5c916b977182b764580e601cb084Wink Saville /** 183d02a064168ae5c916b977182b764580e601cb084Wink Saville * MM-Flags field type components. 184d02a064168ae5c916b977182b764580e601cb084Wink Saville */ 185d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int MM_FLAGS_ADD_TOKEN = 0x80; 186d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int MM_FLAGS_REMOVE_TOKEN = 0x81; 187d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int MM_FLAGS_FILTER_TOKEN = 0x82; 188d02a064168ae5c916b977182b764580e601cb084Wink Saville 189d02a064168ae5c916b977182b764580e601cb084Wink Saville /** 190d02a064168ae5c916b977182b764580e601cb084Wink Saville * X-Mms-Message-Class field types. 191d02a064168ae5c916b977182b764580e601cb084Wink Saville */ 192d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int MESSAGE_CLASS_PERSONAL = 0x80; 193d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int MESSAGE_CLASS_ADVERTISEMENT = 0x81; 194d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int MESSAGE_CLASS_INFORMATIONAL = 0x82; 195d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int MESSAGE_CLASS_AUTO = 0x83; 196d02a064168ae5c916b977182b764580e601cb084Wink Saville 197d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final String MESSAGE_CLASS_PERSONAL_STR = "personal"; 198d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final String MESSAGE_CLASS_ADVERTISEMENT_STR = "advertisement"; 199d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final String MESSAGE_CLASS_INFORMATIONAL_STR = "informational"; 200d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final String MESSAGE_CLASS_AUTO_STR = "auto"; 201d02a064168ae5c916b977182b764580e601cb084Wink Saville 202d02a064168ae5c916b977182b764580e601cb084Wink Saville /** 203d02a064168ae5c916b977182b764580e601cb084Wink Saville * X-Mms-Priority field types. 204d02a064168ae5c916b977182b764580e601cb084Wink Saville */ 205d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int PRIORITY_LOW = 0x80; 206d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int PRIORITY_NORMAL = 0x81; 207d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int PRIORITY_HIGH = 0x82; 208d02a064168ae5c916b977182b764580e601cb084Wink Saville 209d02a064168ae5c916b977182b764580e601cb084Wink Saville /** 210d02a064168ae5c916b977182b764580e601cb084Wink Saville * X-Mms-Response-Status field types. 211d02a064168ae5c916b977182b764580e601cb084Wink Saville */ 212d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int RESPONSE_STATUS_OK = 0x80; 213d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int RESPONSE_STATUS_ERROR_UNSPECIFIED = 0x81; 214d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int RESPONSE_STATUS_ERROR_SERVICE_DENIED = 0x82; 215d02a064168ae5c916b977182b764580e601cb084Wink Saville 216d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int RESPONSE_STATUS_ERROR_MESSAGE_FORMAT_CORRUPT = 0x83; 217d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int RESPONSE_STATUS_ERROR_SENDING_ADDRESS_UNRESOLVED = 0x84; 218d02a064168ae5c916b977182b764580e601cb084Wink Saville 219d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int RESPONSE_STATUS_ERROR_MESSAGE_NOT_FOUND = 0x85; 220d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int RESPONSE_STATUS_ERROR_NETWORK_PROBLEM = 0x86; 221d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int RESPONSE_STATUS_ERROR_CONTENT_NOT_ACCEPTED = 0x87; 222d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int RESPONSE_STATUS_ERROR_UNSUPPORTED_MESSAGE = 0x88; 223d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int RESPONSE_STATUS_ERROR_TRANSIENT_FAILURE = 0xC0; 224d02a064168ae5c916b977182b764580e601cb084Wink Saville 225d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int RESPONSE_STATUS_ERROR_TRANSIENT_SENDNG_ADDRESS_UNRESOLVED = 0xC1; 226d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int RESPONSE_STATUS_ERROR_TRANSIENT_MESSAGE_NOT_FOUND = 0xC2; 227d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int RESPONSE_STATUS_ERROR_TRANSIENT_NETWORK_PROBLEM = 0xC3; 228d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int RESPONSE_STATUS_ERROR_TRANSIENT_PARTIAL_SUCCESS = 0xC4; 229d02a064168ae5c916b977182b764580e601cb084Wink Saville 230d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int RESPONSE_STATUS_ERROR_PERMANENT_FAILURE = 0xE0; 231d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int RESPONSE_STATUS_ERROR_PERMANENT_SERVICE_DENIED = 0xE1; 232d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int RESPONSE_STATUS_ERROR_PERMANENT_MESSAGE_FORMAT_CORRUPT = 0xE2; 233d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int RESPONSE_STATUS_ERROR_PERMANENT_SENDING_ADDRESS_UNRESOLVED = 0xE3; 234d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int RESPONSE_STATUS_ERROR_PERMANENT_MESSAGE_NOT_FOUND = 0xE4; 235d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int RESPONSE_STATUS_ERROR_PERMANENT_CONTENT_NOT_ACCEPTED = 0xE5; 236d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int RESPONSE_STATUS_ERROR_PERMANENT_REPLY_CHARGING_LIMITATIONS_NOT_MET = 0xE6; 237d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int RESPONSE_STATUS_ERROR_PERMANENT_REPLY_CHARGING_REQUEST_NOT_ACCEPTED = 0xE6; 238d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int RESPONSE_STATUS_ERROR_PERMANENT_REPLY_CHARGING_FORWARDING_DENIED = 0xE8; 239d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int RESPONSE_STATUS_ERROR_PERMANENT_REPLY_CHARGING_NOT_SUPPORTED = 0xE9; 240d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int RESPONSE_STATUS_ERROR_PERMANENT_ADDRESS_HIDING_NOT_SUPPORTED = 0xEA; 241d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int RESPONSE_STATUS_ERROR_PERMANENT_LACK_OF_PREPAID = 0xEB; 242d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int RESPONSE_STATUS_ERROR_PERMANENT_END = 0xFF; 243d02a064168ae5c916b977182b764580e601cb084Wink Saville 244d02a064168ae5c916b977182b764580e601cb084Wink Saville /** 245d02a064168ae5c916b977182b764580e601cb084Wink Saville * X-Mms-Retrieve-Status field types. 246d02a064168ae5c916b977182b764580e601cb084Wink Saville */ 247d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int RETRIEVE_STATUS_OK = 0x80; 248d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int RETRIEVE_STATUS_ERROR_TRANSIENT_FAILURE = 0xC0; 249d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int RETRIEVE_STATUS_ERROR_TRANSIENT_MESSAGE_NOT_FOUND = 0xC1; 250d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int RETRIEVE_STATUS_ERROR_TRANSIENT_NETWORK_PROBLEM = 0xC2; 251d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int RETRIEVE_STATUS_ERROR_PERMANENT_FAILURE = 0xE0; 252d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int RETRIEVE_STATUS_ERROR_PERMANENT_SERVICE_DENIED = 0xE1; 253d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int RETRIEVE_STATUS_ERROR_PERMANENT_MESSAGE_NOT_FOUND = 0xE2; 254d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int RETRIEVE_STATUS_ERROR_PERMANENT_CONTENT_UNSUPPORTED = 0xE3; 255d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int RETRIEVE_STATUS_ERROR_END = 0xFF; 256d02a064168ae5c916b977182b764580e601cb084Wink Saville 257d02a064168ae5c916b977182b764580e601cb084Wink Saville /** 258d02a064168ae5c916b977182b764580e601cb084Wink Saville * X-Mms-Sender-Visibility field types. 259d02a064168ae5c916b977182b764580e601cb084Wink Saville */ 260d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int SENDER_VISIBILITY_HIDE = 0x80; 261d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int SENDER_VISIBILITY_SHOW = 0x81; 262d02a064168ae5c916b977182b764580e601cb084Wink Saville 263d02a064168ae5c916b977182b764580e601cb084Wink Saville /** 264d02a064168ae5c916b977182b764580e601cb084Wink Saville * X-Mms-Read-Status field types. 265d02a064168ae5c916b977182b764580e601cb084Wink Saville */ 266d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int READ_STATUS_READ = 0x80; 267d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int READ_STATUS__DELETED_WITHOUT_BEING_READ = 0x81; 268d02a064168ae5c916b977182b764580e601cb084Wink Saville 269d02a064168ae5c916b977182b764580e601cb084Wink Saville /** 270d02a064168ae5c916b977182b764580e601cb084Wink Saville * X-Mms-Cancel-Status field types. 271d02a064168ae5c916b977182b764580e601cb084Wink Saville */ 272d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int CANCEL_STATUS_REQUEST_SUCCESSFULLY_RECEIVED = 0x80; 273d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int CANCEL_STATUS_REQUEST_CORRUPTED = 0x81; 274d02a064168ae5c916b977182b764580e601cb084Wink Saville 275d02a064168ae5c916b977182b764580e601cb084Wink Saville /** 276d02a064168ae5c916b977182b764580e601cb084Wink Saville * X-Mms-Reply-Charging field types. 277d02a064168ae5c916b977182b764580e601cb084Wink Saville */ 278d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int REPLY_CHARGING_REQUESTED = 0x80; 279d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int REPLY_CHARGING_REQUESTED_TEXT_ONLY = 0x81; 280d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int REPLY_CHARGING_ACCEPTED = 0x82; 281d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int REPLY_CHARGING_ACCEPTED_TEXT_ONLY = 0x83; 282d02a064168ae5c916b977182b764580e601cb084Wink Saville 283d02a064168ae5c916b977182b764580e601cb084Wink Saville /** 284d02a064168ae5c916b977182b764580e601cb084Wink Saville * X-Mms-MM-State field types. 285d02a064168ae5c916b977182b764580e601cb084Wink Saville */ 286d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int MM_STATE_DRAFT = 0x80; 287d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int MM_STATE_SENT = 0x81; 288d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int MM_STATE_NEW = 0x82; 289d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int MM_STATE_RETRIEVED = 0x83; 290d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int MM_STATE_FORWARDED = 0x84; 291d02a064168ae5c916b977182b764580e601cb084Wink Saville 292d02a064168ae5c916b977182b764580e601cb084Wink Saville /** 293d02a064168ae5c916b977182b764580e601cb084Wink Saville * X-Mms-Recommended-Retrieval-Mode field types. 294d02a064168ae5c916b977182b764580e601cb084Wink Saville */ 295d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int RECOMMENDED_RETRIEVAL_MODE_MANUAL = 0x80; 296d02a064168ae5c916b977182b764580e601cb084Wink Saville 297d02a064168ae5c916b977182b764580e601cb084Wink Saville /** 298d02a064168ae5c916b977182b764580e601cb084Wink Saville * X-Mms-Content-Class field types. 299d02a064168ae5c916b977182b764580e601cb084Wink Saville */ 300d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int CONTENT_CLASS_TEXT = 0x80; 301d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int CONTENT_CLASS_IMAGE_BASIC = 0x81; 302d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int CONTENT_CLASS_IMAGE_RICH = 0x82; 303d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int CONTENT_CLASS_VIDEO_BASIC = 0x83; 304d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int CONTENT_CLASS_VIDEO_RICH = 0x84; 305d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int CONTENT_CLASS_MEGAPIXEL = 0x85; 306d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int CONTENT_CLASS_CONTENT_BASIC = 0x86; 307d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int CONTENT_CLASS_CONTENT_RICH = 0x87; 308d02a064168ae5c916b977182b764580e601cb084Wink Saville 309d02a064168ae5c916b977182b764580e601cb084Wink Saville /** 310d02a064168ae5c916b977182b764580e601cb084Wink Saville * X-Mms-Store-Status field types. 311d02a064168ae5c916b977182b764580e601cb084Wink Saville */ 312d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int STORE_STATUS_SUCCESS = 0x80; 313d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int STORE_STATUS_ERROR_TRANSIENT_FAILURE = 0xC0; 314d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int STORE_STATUS_ERROR_TRANSIENT_NETWORK_PROBLEM = 0xC1; 315d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int STORE_STATUS_ERROR_PERMANENT_FAILURE = 0xE0; 316d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int STORE_STATUS_ERROR_PERMANENT_SERVICE_DENIED = 0xE1; 317d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int STORE_STATUS_ERROR_PERMANENT_MESSAGE_FORMAT_CORRUPT = 0xE2; 318d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int STORE_STATUS_ERROR_PERMANENT_MESSAGE_NOT_FOUND = 0xE3; 319d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int STORE_STATUS_ERROR_PERMANENT_MMBOX_FULL = 0xE4; 320d02a064168ae5c916b977182b764580e601cb084Wink Saville public static final int STORE_STATUS_ERROR_END = 0xFF; 321d02a064168ae5c916b977182b764580e601cb084Wink Saville 322d02a064168ae5c916b977182b764580e601cb084Wink Saville /** 323d02a064168ae5c916b977182b764580e601cb084Wink Saville * The map contains the value of all headers. 324d02a064168ae5c916b977182b764580e601cb084Wink Saville */ 325d02a064168ae5c916b977182b764580e601cb084Wink Saville private HashMap<Integer, Object> mHeaderMap = null; 326d02a064168ae5c916b977182b764580e601cb084Wink Saville 327d02a064168ae5c916b977182b764580e601cb084Wink Saville /** 328d02a064168ae5c916b977182b764580e601cb084Wink Saville * Constructor of PduHeaders. 329d02a064168ae5c916b977182b764580e601cb084Wink Saville */ 330d02a064168ae5c916b977182b764580e601cb084Wink Saville public PduHeaders() { 331d02a064168ae5c916b977182b764580e601cb084Wink Saville mHeaderMap = new HashMap<Integer, Object>(); 332d02a064168ae5c916b977182b764580e601cb084Wink Saville } 333d02a064168ae5c916b977182b764580e601cb084Wink Saville 334d02a064168ae5c916b977182b764580e601cb084Wink Saville /** 335d02a064168ae5c916b977182b764580e601cb084Wink Saville * Get octet value by header field. 336d02a064168ae5c916b977182b764580e601cb084Wink Saville * 337d02a064168ae5c916b977182b764580e601cb084Wink Saville * @param field the field 338d02a064168ae5c916b977182b764580e601cb084Wink Saville * @return the octet value of the pdu header 339d02a064168ae5c916b977182b764580e601cb084Wink Saville * with specified header field. Return 0 if 340d02a064168ae5c916b977182b764580e601cb084Wink Saville * the value is not set. 341d02a064168ae5c916b977182b764580e601cb084Wink Saville */ 342d02a064168ae5c916b977182b764580e601cb084Wink Saville protected int getOctet(int field) { 343d02a064168ae5c916b977182b764580e601cb084Wink Saville Integer octet = (Integer) mHeaderMap.get(field); 344d02a064168ae5c916b977182b764580e601cb084Wink Saville if (null == octet) { 345d02a064168ae5c916b977182b764580e601cb084Wink Saville return 0; 346d02a064168ae5c916b977182b764580e601cb084Wink Saville } 347d02a064168ae5c916b977182b764580e601cb084Wink Saville 348d02a064168ae5c916b977182b764580e601cb084Wink Saville return octet; 349d02a064168ae5c916b977182b764580e601cb084Wink Saville } 350d02a064168ae5c916b977182b764580e601cb084Wink Saville 351d02a064168ae5c916b977182b764580e601cb084Wink Saville /** 352d02a064168ae5c916b977182b764580e601cb084Wink Saville * Set octet value to pdu header by header field. 353d02a064168ae5c916b977182b764580e601cb084Wink Saville * 354d02a064168ae5c916b977182b764580e601cb084Wink Saville * @param value the value 355d02a064168ae5c916b977182b764580e601cb084Wink Saville * @param field the field 356d02a064168ae5c916b977182b764580e601cb084Wink Saville * @throws InvalidHeaderValueException if the value is invalid. 357d02a064168ae5c916b977182b764580e601cb084Wink Saville */ 358d02a064168ae5c916b977182b764580e601cb084Wink Saville protected void setOctet(int value, int field) 359d02a064168ae5c916b977182b764580e601cb084Wink Saville throws InvalidHeaderValueException{ 360d02a064168ae5c916b977182b764580e601cb084Wink Saville /** 361d02a064168ae5c916b977182b764580e601cb084Wink Saville * Check whether this field can be set for specific 362d02a064168ae5c916b977182b764580e601cb084Wink Saville * header and check validity of the field. 363d02a064168ae5c916b977182b764580e601cb084Wink Saville */ 364d02a064168ae5c916b977182b764580e601cb084Wink Saville switch (field) { 365d02a064168ae5c916b977182b764580e601cb084Wink Saville case REPORT_ALLOWED: 366d02a064168ae5c916b977182b764580e601cb084Wink Saville case ADAPTATION_ALLOWED: 367d02a064168ae5c916b977182b764580e601cb084Wink Saville case DELIVERY_REPORT: 368d02a064168ae5c916b977182b764580e601cb084Wink Saville case DRM_CONTENT: 369d02a064168ae5c916b977182b764580e601cb084Wink Saville case DISTRIBUTION_INDICATOR: 370d02a064168ae5c916b977182b764580e601cb084Wink Saville case QUOTAS: 371d02a064168ae5c916b977182b764580e601cb084Wink Saville case READ_REPORT: 372d02a064168ae5c916b977182b764580e601cb084Wink Saville case STORE: 373d02a064168ae5c916b977182b764580e601cb084Wink Saville case STORED: 374d02a064168ae5c916b977182b764580e601cb084Wink Saville case TOTALS: 375d02a064168ae5c916b977182b764580e601cb084Wink Saville case SENDER_VISIBILITY: 376d02a064168ae5c916b977182b764580e601cb084Wink Saville if ((VALUE_YES != value) && (VALUE_NO != value)) { 377d02a064168ae5c916b977182b764580e601cb084Wink Saville // Invalid value. 378d02a064168ae5c916b977182b764580e601cb084Wink Saville throw new InvalidHeaderValueException("Invalid Octet value!"); 379d02a064168ae5c916b977182b764580e601cb084Wink Saville } 380d02a064168ae5c916b977182b764580e601cb084Wink Saville break; 381d02a064168ae5c916b977182b764580e601cb084Wink Saville case READ_STATUS: 382d02a064168ae5c916b977182b764580e601cb084Wink Saville if ((READ_STATUS_READ != value) && 383d02a064168ae5c916b977182b764580e601cb084Wink Saville (READ_STATUS__DELETED_WITHOUT_BEING_READ != value)) { 384d02a064168ae5c916b977182b764580e601cb084Wink Saville // Invalid value. 385d02a064168ae5c916b977182b764580e601cb084Wink Saville throw new InvalidHeaderValueException("Invalid Octet value!"); 386d02a064168ae5c916b977182b764580e601cb084Wink Saville } 387d02a064168ae5c916b977182b764580e601cb084Wink Saville break; 388d02a064168ae5c916b977182b764580e601cb084Wink Saville case CANCEL_STATUS: 389d02a064168ae5c916b977182b764580e601cb084Wink Saville if ((CANCEL_STATUS_REQUEST_SUCCESSFULLY_RECEIVED != value) && 390d02a064168ae5c916b977182b764580e601cb084Wink Saville (CANCEL_STATUS_REQUEST_CORRUPTED != value)) { 391d02a064168ae5c916b977182b764580e601cb084Wink Saville // Invalid value. 392d02a064168ae5c916b977182b764580e601cb084Wink Saville throw new InvalidHeaderValueException("Invalid Octet value!"); 393d02a064168ae5c916b977182b764580e601cb084Wink Saville } 394d02a064168ae5c916b977182b764580e601cb084Wink Saville break; 395d02a064168ae5c916b977182b764580e601cb084Wink Saville case PRIORITY: 396d02a064168ae5c916b977182b764580e601cb084Wink Saville if ((value < PRIORITY_LOW) || (value > PRIORITY_HIGH)) { 397d02a064168ae5c916b977182b764580e601cb084Wink Saville // Invalid value. 398d02a064168ae5c916b977182b764580e601cb084Wink Saville throw new InvalidHeaderValueException("Invalid Octet value!"); 399d02a064168ae5c916b977182b764580e601cb084Wink Saville } 400d02a064168ae5c916b977182b764580e601cb084Wink Saville break; 401d02a064168ae5c916b977182b764580e601cb084Wink Saville case STATUS: 402d02a064168ae5c916b977182b764580e601cb084Wink Saville if ((value < STATUS_EXPIRED) || (value > STATUS_UNREACHABLE)) { 403d02a064168ae5c916b977182b764580e601cb084Wink Saville // Invalid value. 404d02a064168ae5c916b977182b764580e601cb084Wink Saville throw new InvalidHeaderValueException("Invalid Octet value!"); 405d02a064168ae5c916b977182b764580e601cb084Wink Saville } 406d02a064168ae5c916b977182b764580e601cb084Wink Saville break; 407d02a064168ae5c916b977182b764580e601cb084Wink Saville case REPLY_CHARGING: 408d02a064168ae5c916b977182b764580e601cb084Wink Saville if ((value < REPLY_CHARGING_REQUESTED) 409d02a064168ae5c916b977182b764580e601cb084Wink Saville || (value > REPLY_CHARGING_ACCEPTED_TEXT_ONLY)) { 410d02a064168ae5c916b977182b764580e601cb084Wink Saville // Invalid value. 411d02a064168ae5c916b977182b764580e601cb084Wink Saville throw new InvalidHeaderValueException("Invalid Octet value!"); 412d02a064168ae5c916b977182b764580e601cb084Wink Saville } 413d02a064168ae5c916b977182b764580e601cb084Wink Saville break; 414d02a064168ae5c916b977182b764580e601cb084Wink Saville case MM_STATE: 415d02a064168ae5c916b977182b764580e601cb084Wink Saville if ((value < MM_STATE_DRAFT) || (value > MM_STATE_FORWARDED)) { 416d02a064168ae5c916b977182b764580e601cb084Wink Saville // Invalid value. 417d02a064168ae5c916b977182b764580e601cb084Wink Saville throw new InvalidHeaderValueException("Invalid Octet value!"); 418d02a064168ae5c916b977182b764580e601cb084Wink Saville } 419d02a064168ae5c916b977182b764580e601cb084Wink Saville break; 420d02a064168ae5c916b977182b764580e601cb084Wink Saville case RECOMMENDED_RETRIEVAL_MODE: 421d02a064168ae5c916b977182b764580e601cb084Wink Saville if (RECOMMENDED_RETRIEVAL_MODE_MANUAL != value) { 422d02a064168ae5c916b977182b764580e601cb084Wink Saville // Invalid value. 423d02a064168ae5c916b977182b764580e601cb084Wink Saville throw new InvalidHeaderValueException("Invalid Octet value!"); 424d02a064168ae5c916b977182b764580e601cb084Wink Saville } 425d02a064168ae5c916b977182b764580e601cb084Wink Saville break; 426d02a064168ae5c916b977182b764580e601cb084Wink Saville case CONTENT_CLASS: 427d02a064168ae5c916b977182b764580e601cb084Wink Saville if ((value < CONTENT_CLASS_TEXT) 428d02a064168ae5c916b977182b764580e601cb084Wink Saville || (value > CONTENT_CLASS_CONTENT_RICH)) { 429d02a064168ae5c916b977182b764580e601cb084Wink Saville // Invalid value. 430d02a064168ae5c916b977182b764580e601cb084Wink Saville throw new InvalidHeaderValueException("Invalid Octet value!"); 431d02a064168ae5c916b977182b764580e601cb084Wink Saville } 432d02a064168ae5c916b977182b764580e601cb084Wink Saville break; 433d02a064168ae5c916b977182b764580e601cb084Wink Saville case RETRIEVE_STATUS: 434d02a064168ae5c916b977182b764580e601cb084Wink Saville // According to oma-ts-mms-enc-v1_3, section 7.3.50, we modify the invalid value. 435d02a064168ae5c916b977182b764580e601cb084Wink Saville if ((value > RETRIEVE_STATUS_ERROR_TRANSIENT_NETWORK_PROBLEM) && 436d02a064168ae5c916b977182b764580e601cb084Wink Saville (value < RETRIEVE_STATUS_ERROR_PERMANENT_FAILURE)) { 437d02a064168ae5c916b977182b764580e601cb084Wink Saville value = RETRIEVE_STATUS_ERROR_TRANSIENT_FAILURE; 438d02a064168ae5c916b977182b764580e601cb084Wink Saville } else if ((value > RETRIEVE_STATUS_ERROR_PERMANENT_CONTENT_UNSUPPORTED) && 439d02a064168ae5c916b977182b764580e601cb084Wink Saville (value <= RETRIEVE_STATUS_ERROR_END)) { 440d02a064168ae5c916b977182b764580e601cb084Wink Saville value = RETRIEVE_STATUS_ERROR_PERMANENT_FAILURE; 441d02a064168ae5c916b977182b764580e601cb084Wink Saville } else if ((value < RETRIEVE_STATUS_OK) || 442d02a064168ae5c916b977182b764580e601cb084Wink Saville ((value > RETRIEVE_STATUS_OK) && 443d02a064168ae5c916b977182b764580e601cb084Wink Saville (value < RETRIEVE_STATUS_ERROR_TRANSIENT_FAILURE)) || 444d02a064168ae5c916b977182b764580e601cb084Wink Saville (value > RETRIEVE_STATUS_ERROR_END)) { 445d02a064168ae5c916b977182b764580e601cb084Wink Saville value = RETRIEVE_STATUS_ERROR_PERMANENT_FAILURE; 446d02a064168ae5c916b977182b764580e601cb084Wink Saville } 447d02a064168ae5c916b977182b764580e601cb084Wink Saville break; 448d02a064168ae5c916b977182b764580e601cb084Wink Saville case STORE_STATUS: 449d02a064168ae5c916b977182b764580e601cb084Wink Saville // According to oma-ts-mms-enc-v1_3, section 7.3.58, we modify the invalid value. 450d02a064168ae5c916b977182b764580e601cb084Wink Saville if ((value > STORE_STATUS_ERROR_TRANSIENT_NETWORK_PROBLEM) && 451d02a064168ae5c916b977182b764580e601cb084Wink Saville (value < STORE_STATUS_ERROR_PERMANENT_FAILURE)) { 452d02a064168ae5c916b977182b764580e601cb084Wink Saville value = STORE_STATUS_ERROR_TRANSIENT_FAILURE; 453d02a064168ae5c916b977182b764580e601cb084Wink Saville } else if ((value > STORE_STATUS_ERROR_PERMANENT_MMBOX_FULL) && 454d02a064168ae5c916b977182b764580e601cb084Wink Saville (value <= STORE_STATUS_ERROR_END)) { 455d02a064168ae5c916b977182b764580e601cb084Wink Saville value = STORE_STATUS_ERROR_PERMANENT_FAILURE; 456d02a064168ae5c916b977182b764580e601cb084Wink Saville } else if ((value < STORE_STATUS_SUCCESS) || 457d02a064168ae5c916b977182b764580e601cb084Wink Saville ((value > STORE_STATUS_SUCCESS) && 458d02a064168ae5c916b977182b764580e601cb084Wink Saville (value < STORE_STATUS_ERROR_TRANSIENT_FAILURE)) || 459d02a064168ae5c916b977182b764580e601cb084Wink Saville (value > STORE_STATUS_ERROR_END)) { 460d02a064168ae5c916b977182b764580e601cb084Wink Saville value = STORE_STATUS_ERROR_PERMANENT_FAILURE; 461d02a064168ae5c916b977182b764580e601cb084Wink Saville } 462d02a064168ae5c916b977182b764580e601cb084Wink Saville break; 463d02a064168ae5c916b977182b764580e601cb084Wink Saville case RESPONSE_STATUS: 464d02a064168ae5c916b977182b764580e601cb084Wink Saville // According to oma-ts-mms-enc-v1_3, section 7.3.48, we modify the invalid value. 465d02a064168ae5c916b977182b764580e601cb084Wink Saville if ((value > RESPONSE_STATUS_ERROR_TRANSIENT_PARTIAL_SUCCESS) && 466d02a064168ae5c916b977182b764580e601cb084Wink Saville (value < RESPONSE_STATUS_ERROR_PERMANENT_FAILURE)) { 467d02a064168ae5c916b977182b764580e601cb084Wink Saville value = RESPONSE_STATUS_ERROR_TRANSIENT_FAILURE; 468d02a064168ae5c916b977182b764580e601cb084Wink Saville } else if (((value > RESPONSE_STATUS_ERROR_PERMANENT_LACK_OF_PREPAID) && 469d02a064168ae5c916b977182b764580e601cb084Wink Saville (value <= RESPONSE_STATUS_ERROR_PERMANENT_END)) || 470d02a064168ae5c916b977182b764580e601cb084Wink Saville (value < RESPONSE_STATUS_OK) || 471d02a064168ae5c916b977182b764580e601cb084Wink Saville ((value > RESPONSE_STATUS_ERROR_UNSUPPORTED_MESSAGE) && 472d02a064168ae5c916b977182b764580e601cb084Wink Saville (value < RESPONSE_STATUS_ERROR_TRANSIENT_FAILURE)) || 473d02a064168ae5c916b977182b764580e601cb084Wink Saville (value > RESPONSE_STATUS_ERROR_PERMANENT_END)) { 474d02a064168ae5c916b977182b764580e601cb084Wink Saville value = RESPONSE_STATUS_ERROR_PERMANENT_FAILURE; 475d02a064168ae5c916b977182b764580e601cb084Wink Saville } 476d02a064168ae5c916b977182b764580e601cb084Wink Saville break; 477d02a064168ae5c916b977182b764580e601cb084Wink Saville case MMS_VERSION: 478d02a064168ae5c916b977182b764580e601cb084Wink Saville if ((value < MMS_VERSION_1_0)|| (value > MMS_VERSION_1_3)) { 479d02a064168ae5c916b977182b764580e601cb084Wink Saville value = CURRENT_MMS_VERSION; // Current version is the default value. 480d02a064168ae5c916b977182b764580e601cb084Wink Saville } 481d02a064168ae5c916b977182b764580e601cb084Wink Saville break; 482d02a064168ae5c916b977182b764580e601cb084Wink Saville case MESSAGE_TYPE: 483d02a064168ae5c916b977182b764580e601cb084Wink Saville if ((value < MESSAGE_TYPE_SEND_REQ) || (value > MESSAGE_TYPE_CANCEL_CONF)) { 484d02a064168ae5c916b977182b764580e601cb084Wink Saville // Invalid value. 485d02a064168ae5c916b977182b764580e601cb084Wink Saville throw new InvalidHeaderValueException("Invalid Octet value!"); 486d02a064168ae5c916b977182b764580e601cb084Wink Saville } 487d02a064168ae5c916b977182b764580e601cb084Wink Saville break; 488d02a064168ae5c916b977182b764580e601cb084Wink Saville default: 489d02a064168ae5c916b977182b764580e601cb084Wink Saville // This header value should not be Octect. 490d02a064168ae5c916b977182b764580e601cb084Wink Saville throw new RuntimeException("Invalid header field!"); 491d02a064168ae5c916b977182b764580e601cb084Wink Saville } 492d02a064168ae5c916b977182b764580e601cb084Wink Saville mHeaderMap.put(field, value); 493d02a064168ae5c916b977182b764580e601cb084Wink Saville } 494d02a064168ae5c916b977182b764580e601cb084Wink Saville 495d02a064168ae5c916b977182b764580e601cb084Wink Saville /** 496d02a064168ae5c916b977182b764580e601cb084Wink Saville * Get TextString value by header field. 497d02a064168ae5c916b977182b764580e601cb084Wink Saville * 498d02a064168ae5c916b977182b764580e601cb084Wink Saville * @param field the field 499d02a064168ae5c916b977182b764580e601cb084Wink Saville * @return the TextString value of the pdu header 500d02a064168ae5c916b977182b764580e601cb084Wink Saville * with specified header field 501d02a064168ae5c916b977182b764580e601cb084Wink Saville */ 502d02a064168ae5c916b977182b764580e601cb084Wink Saville protected byte[] getTextString(int field) { 503d02a064168ae5c916b977182b764580e601cb084Wink Saville return (byte[]) mHeaderMap.get(field); 504d02a064168ae5c916b977182b764580e601cb084Wink Saville } 505d02a064168ae5c916b977182b764580e601cb084Wink Saville 506d02a064168ae5c916b977182b764580e601cb084Wink Saville /** 507d02a064168ae5c916b977182b764580e601cb084Wink Saville * Set TextString value to pdu header by header field. 508d02a064168ae5c916b977182b764580e601cb084Wink Saville * 509d02a064168ae5c916b977182b764580e601cb084Wink Saville * @param value the value 510d02a064168ae5c916b977182b764580e601cb084Wink Saville * @param field the field 511d02a064168ae5c916b977182b764580e601cb084Wink Saville * @return the TextString value of the pdu header 512d02a064168ae5c916b977182b764580e601cb084Wink Saville * with specified header field 513d02a064168ae5c916b977182b764580e601cb084Wink Saville * @throws NullPointerException if the value is null. 514d02a064168ae5c916b977182b764580e601cb084Wink Saville */ 515d02a064168ae5c916b977182b764580e601cb084Wink Saville protected void setTextString(byte[] value, int field) { 516d02a064168ae5c916b977182b764580e601cb084Wink Saville /** 517d02a064168ae5c916b977182b764580e601cb084Wink Saville * Check whether this field can be set for specific 518d02a064168ae5c916b977182b764580e601cb084Wink Saville * header and check validity of the field. 519d02a064168ae5c916b977182b764580e601cb084Wink Saville */ 520d02a064168ae5c916b977182b764580e601cb084Wink Saville if (null == value) { 521d02a064168ae5c916b977182b764580e601cb084Wink Saville throw new NullPointerException(); 522d02a064168ae5c916b977182b764580e601cb084Wink Saville } 523d02a064168ae5c916b977182b764580e601cb084Wink Saville 524d02a064168ae5c916b977182b764580e601cb084Wink Saville switch (field) { 525d02a064168ae5c916b977182b764580e601cb084Wink Saville case TRANSACTION_ID: 526d02a064168ae5c916b977182b764580e601cb084Wink Saville case REPLY_CHARGING_ID: 527d02a064168ae5c916b977182b764580e601cb084Wink Saville case AUX_APPLIC_ID: 528d02a064168ae5c916b977182b764580e601cb084Wink Saville case APPLIC_ID: 529d02a064168ae5c916b977182b764580e601cb084Wink Saville case REPLY_APPLIC_ID: 530d02a064168ae5c916b977182b764580e601cb084Wink Saville case MESSAGE_ID: 531d02a064168ae5c916b977182b764580e601cb084Wink Saville case REPLACE_ID: 532d02a064168ae5c916b977182b764580e601cb084Wink Saville case CANCEL_ID: 533d02a064168ae5c916b977182b764580e601cb084Wink Saville case CONTENT_LOCATION: 534d02a064168ae5c916b977182b764580e601cb084Wink Saville case MESSAGE_CLASS: 535d02a064168ae5c916b977182b764580e601cb084Wink Saville case CONTENT_TYPE: 536d02a064168ae5c916b977182b764580e601cb084Wink Saville break; 537d02a064168ae5c916b977182b764580e601cb084Wink Saville default: 538d02a064168ae5c916b977182b764580e601cb084Wink Saville // This header value should not be Text-String. 539d02a064168ae5c916b977182b764580e601cb084Wink Saville throw new RuntimeException("Invalid header field!"); 540d02a064168ae5c916b977182b764580e601cb084Wink Saville } 541d02a064168ae5c916b977182b764580e601cb084Wink Saville mHeaderMap.put(field, value); 542d02a064168ae5c916b977182b764580e601cb084Wink Saville } 543d02a064168ae5c916b977182b764580e601cb084Wink Saville 544d02a064168ae5c916b977182b764580e601cb084Wink Saville /** 545d02a064168ae5c916b977182b764580e601cb084Wink Saville * Get EncodedStringValue value by header field. 546d02a064168ae5c916b977182b764580e601cb084Wink Saville * 547d02a064168ae5c916b977182b764580e601cb084Wink Saville * @param field the field 548d02a064168ae5c916b977182b764580e601cb084Wink Saville * @return the EncodedStringValue value of the pdu header 549d02a064168ae5c916b977182b764580e601cb084Wink Saville * with specified header field 550d02a064168ae5c916b977182b764580e601cb084Wink Saville */ 551d02a064168ae5c916b977182b764580e601cb084Wink Saville protected EncodedStringValue getEncodedStringValue(int field) { 552d02a064168ae5c916b977182b764580e601cb084Wink Saville return (EncodedStringValue) mHeaderMap.get(field); 553d02a064168ae5c916b977182b764580e601cb084Wink Saville } 554d02a064168ae5c916b977182b764580e601cb084Wink Saville 555d02a064168ae5c916b977182b764580e601cb084Wink Saville /** 556d02a064168ae5c916b977182b764580e601cb084Wink Saville * Get TO, CC or BCC header value. 557d02a064168ae5c916b977182b764580e601cb084Wink Saville * 558d02a064168ae5c916b977182b764580e601cb084Wink Saville * @param field the field 559d02a064168ae5c916b977182b764580e601cb084Wink Saville * @return the EncodeStringValue array of the pdu header 560d02a064168ae5c916b977182b764580e601cb084Wink Saville * with specified header field 561d02a064168ae5c916b977182b764580e601cb084Wink Saville */ 562d02a064168ae5c916b977182b764580e601cb084Wink Saville protected EncodedStringValue[] getEncodedStringValues(int field) { 563d02a064168ae5c916b977182b764580e601cb084Wink Saville ArrayList<EncodedStringValue> list = 564d02a064168ae5c916b977182b764580e601cb084Wink Saville (ArrayList<EncodedStringValue>) mHeaderMap.get(field); 565d02a064168ae5c916b977182b764580e601cb084Wink Saville if (null == list) { 566d02a064168ae5c916b977182b764580e601cb084Wink Saville return null; 567d02a064168ae5c916b977182b764580e601cb084Wink Saville } 568d02a064168ae5c916b977182b764580e601cb084Wink Saville EncodedStringValue[] values = new EncodedStringValue[list.size()]; 569d02a064168ae5c916b977182b764580e601cb084Wink Saville return list.toArray(values); 570d02a064168ae5c916b977182b764580e601cb084Wink Saville } 571d02a064168ae5c916b977182b764580e601cb084Wink Saville 572d02a064168ae5c916b977182b764580e601cb084Wink Saville /** 573d02a064168ae5c916b977182b764580e601cb084Wink Saville * Set EncodedStringValue value to pdu header by header field. 574d02a064168ae5c916b977182b764580e601cb084Wink Saville * 575d02a064168ae5c916b977182b764580e601cb084Wink Saville * @param value the value 576d02a064168ae5c916b977182b764580e601cb084Wink Saville * @param field the field 577d02a064168ae5c916b977182b764580e601cb084Wink Saville * @return the EncodedStringValue value of the pdu header 578d02a064168ae5c916b977182b764580e601cb084Wink Saville * with specified header field 579d02a064168ae5c916b977182b764580e601cb084Wink Saville * @throws NullPointerException if the value is null. 580d02a064168ae5c916b977182b764580e601cb084Wink Saville */ 581d02a064168ae5c916b977182b764580e601cb084Wink Saville protected void setEncodedStringValue(EncodedStringValue value, int field) { 582d02a064168ae5c916b977182b764580e601cb084Wink Saville /** 583d02a064168ae5c916b977182b764580e601cb084Wink Saville * Check whether this field can be set for specific 584d02a064168ae5c916b977182b764580e601cb084Wink Saville * header and check validity of the field. 585d02a064168ae5c916b977182b764580e601cb084Wink Saville */ 586d02a064168ae5c916b977182b764580e601cb084Wink Saville if (null == value) { 587d02a064168ae5c916b977182b764580e601cb084Wink Saville throw new NullPointerException(); 588d02a064168ae5c916b977182b764580e601cb084Wink Saville } 589d02a064168ae5c916b977182b764580e601cb084Wink Saville 590d02a064168ae5c916b977182b764580e601cb084Wink Saville switch (field) { 591d02a064168ae5c916b977182b764580e601cb084Wink Saville case SUBJECT: 592d02a064168ae5c916b977182b764580e601cb084Wink Saville case RECOMMENDED_RETRIEVAL_MODE_TEXT: 593d02a064168ae5c916b977182b764580e601cb084Wink Saville case RETRIEVE_TEXT: 594d02a064168ae5c916b977182b764580e601cb084Wink Saville case STATUS_TEXT: 595d02a064168ae5c916b977182b764580e601cb084Wink Saville case STORE_STATUS_TEXT: 596d02a064168ae5c916b977182b764580e601cb084Wink Saville case RESPONSE_TEXT: 597d02a064168ae5c916b977182b764580e601cb084Wink Saville case FROM: 598d02a064168ae5c916b977182b764580e601cb084Wink Saville case PREVIOUSLY_SENT_BY: 599d02a064168ae5c916b977182b764580e601cb084Wink Saville case MM_FLAGS: 600d02a064168ae5c916b977182b764580e601cb084Wink Saville break; 601d02a064168ae5c916b977182b764580e601cb084Wink Saville default: 602d02a064168ae5c916b977182b764580e601cb084Wink Saville // This header value should not be Encoded-String-Value. 603d02a064168ae5c916b977182b764580e601cb084Wink Saville throw new RuntimeException("Invalid header field!"); 604d02a064168ae5c916b977182b764580e601cb084Wink Saville } 605d02a064168ae5c916b977182b764580e601cb084Wink Saville 606d02a064168ae5c916b977182b764580e601cb084Wink Saville mHeaderMap.put(field, value); 607d02a064168ae5c916b977182b764580e601cb084Wink Saville } 608d02a064168ae5c916b977182b764580e601cb084Wink Saville 609d02a064168ae5c916b977182b764580e601cb084Wink Saville /** 610d02a064168ae5c916b977182b764580e601cb084Wink Saville * Set TO, CC or BCC header value. 611d02a064168ae5c916b977182b764580e601cb084Wink Saville * 612d02a064168ae5c916b977182b764580e601cb084Wink Saville * @param value the value 613d02a064168ae5c916b977182b764580e601cb084Wink Saville * @param field the field 614d02a064168ae5c916b977182b764580e601cb084Wink Saville * @return the EncodedStringValue value array of the pdu header 615d02a064168ae5c916b977182b764580e601cb084Wink Saville * with specified header field 616d02a064168ae5c916b977182b764580e601cb084Wink Saville * @throws NullPointerException if the value is null. 617d02a064168ae5c916b977182b764580e601cb084Wink Saville */ 618d02a064168ae5c916b977182b764580e601cb084Wink Saville protected void setEncodedStringValues(EncodedStringValue[] value, int field) { 619d02a064168ae5c916b977182b764580e601cb084Wink Saville /** 620d02a064168ae5c916b977182b764580e601cb084Wink Saville * Check whether this field can be set for specific 621d02a064168ae5c916b977182b764580e601cb084Wink Saville * header and check validity of the field. 622d02a064168ae5c916b977182b764580e601cb084Wink Saville */ 623d02a064168ae5c916b977182b764580e601cb084Wink Saville if (null == value) { 624d02a064168ae5c916b977182b764580e601cb084Wink Saville throw new NullPointerException(); 625d02a064168ae5c916b977182b764580e601cb084Wink Saville } 626d02a064168ae5c916b977182b764580e601cb084Wink Saville 627d02a064168ae5c916b977182b764580e601cb084Wink Saville switch (field) { 628d02a064168ae5c916b977182b764580e601cb084Wink Saville case BCC: 629d02a064168ae5c916b977182b764580e601cb084Wink Saville case CC: 630d02a064168ae5c916b977182b764580e601cb084Wink Saville case TO: 631d02a064168ae5c916b977182b764580e601cb084Wink Saville break; 632d02a064168ae5c916b977182b764580e601cb084Wink Saville default: 633d02a064168ae5c916b977182b764580e601cb084Wink Saville // This header value should not be Encoded-String-Value. 634d02a064168ae5c916b977182b764580e601cb084Wink Saville throw new RuntimeException("Invalid header field!"); 635d02a064168ae5c916b977182b764580e601cb084Wink Saville } 636d02a064168ae5c916b977182b764580e601cb084Wink Saville 637d02a064168ae5c916b977182b764580e601cb084Wink Saville ArrayList<EncodedStringValue> list = new ArrayList<EncodedStringValue>(); 638d02a064168ae5c916b977182b764580e601cb084Wink Saville for (int i = 0; i < value.length; i++) { 639d02a064168ae5c916b977182b764580e601cb084Wink Saville list.add(value[i]); 640d02a064168ae5c916b977182b764580e601cb084Wink Saville } 641d02a064168ae5c916b977182b764580e601cb084Wink Saville mHeaderMap.put(field, list); 642d02a064168ae5c916b977182b764580e601cb084Wink Saville } 643d02a064168ae5c916b977182b764580e601cb084Wink Saville 644d02a064168ae5c916b977182b764580e601cb084Wink Saville /** 645d02a064168ae5c916b977182b764580e601cb084Wink Saville * Append one EncodedStringValue to another. 646d02a064168ae5c916b977182b764580e601cb084Wink Saville * 647d02a064168ae5c916b977182b764580e601cb084Wink Saville * @param value the EncodedStringValue to append 648d02a064168ae5c916b977182b764580e601cb084Wink Saville * @param field the field 649d02a064168ae5c916b977182b764580e601cb084Wink Saville * @throws NullPointerException if the value is null. 650d02a064168ae5c916b977182b764580e601cb084Wink Saville */ 651d02a064168ae5c916b977182b764580e601cb084Wink Saville protected void appendEncodedStringValue(EncodedStringValue value, 652d02a064168ae5c916b977182b764580e601cb084Wink Saville int field) { 653d02a064168ae5c916b977182b764580e601cb084Wink Saville if (null == value) { 654d02a064168ae5c916b977182b764580e601cb084Wink Saville throw new NullPointerException(); 655d02a064168ae5c916b977182b764580e601cb084Wink Saville } 656d02a064168ae5c916b977182b764580e601cb084Wink Saville 657d02a064168ae5c916b977182b764580e601cb084Wink Saville switch (field) { 658d02a064168ae5c916b977182b764580e601cb084Wink Saville case BCC: 659d02a064168ae5c916b977182b764580e601cb084Wink Saville case CC: 660d02a064168ae5c916b977182b764580e601cb084Wink Saville case TO: 661d02a064168ae5c916b977182b764580e601cb084Wink Saville break; 662d02a064168ae5c916b977182b764580e601cb084Wink Saville default: 663d02a064168ae5c916b977182b764580e601cb084Wink Saville throw new RuntimeException("Invalid header field!"); 664d02a064168ae5c916b977182b764580e601cb084Wink Saville } 665d02a064168ae5c916b977182b764580e601cb084Wink Saville 666d02a064168ae5c916b977182b764580e601cb084Wink Saville ArrayList<EncodedStringValue> list = 667d02a064168ae5c916b977182b764580e601cb084Wink Saville (ArrayList<EncodedStringValue>) mHeaderMap.get(field); 668d02a064168ae5c916b977182b764580e601cb084Wink Saville if (null == list) { 669d02a064168ae5c916b977182b764580e601cb084Wink Saville list = new ArrayList<EncodedStringValue>(); 670d02a064168ae5c916b977182b764580e601cb084Wink Saville } 671d02a064168ae5c916b977182b764580e601cb084Wink Saville list.add(value); 672d02a064168ae5c916b977182b764580e601cb084Wink Saville mHeaderMap.put(field, list); 673d02a064168ae5c916b977182b764580e601cb084Wink Saville } 674d02a064168ae5c916b977182b764580e601cb084Wink Saville 675d02a064168ae5c916b977182b764580e601cb084Wink Saville /** 676d02a064168ae5c916b977182b764580e601cb084Wink Saville * Get LongInteger value by header field. 677d02a064168ae5c916b977182b764580e601cb084Wink Saville * 678d02a064168ae5c916b977182b764580e601cb084Wink Saville * @param field the field 679d02a064168ae5c916b977182b764580e601cb084Wink Saville * @return the LongInteger value of the pdu header 680d02a064168ae5c916b977182b764580e601cb084Wink Saville * with specified header field. if return -1, the 681d02a064168ae5c916b977182b764580e601cb084Wink Saville * field is not existed in pdu header. 682d02a064168ae5c916b977182b764580e601cb084Wink Saville */ 683d02a064168ae5c916b977182b764580e601cb084Wink Saville protected long getLongInteger(int field) { 684d02a064168ae5c916b977182b764580e601cb084Wink Saville Long longInteger = (Long) mHeaderMap.get(field); 685d02a064168ae5c916b977182b764580e601cb084Wink Saville if (null == longInteger) { 686d02a064168ae5c916b977182b764580e601cb084Wink Saville return -1; 687d02a064168ae5c916b977182b764580e601cb084Wink Saville } 688d02a064168ae5c916b977182b764580e601cb084Wink Saville 689d02a064168ae5c916b977182b764580e601cb084Wink Saville return longInteger.longValue(); 690d02a064168ae5c916b977182b764580e601cb084Wink Saville } 691d02a064168ae5c916b977182b764580e601cb084Wink Saville 692d02a064168ae5c916b977182b764580e601cb084Wink Saville /** 693d02a064168ae5c916b977182b764580e601cb084Wink Saville * Set LongInteger value to pdu header by header field. 694d02a064168ae5c916b977182b764580e601cb084Wink Saville * 695d02a064168ae5c916b977182b764580e601cb084Wink Saville * @param value the value 696d02a064168ae5c916b977182b764580e601cb084Wink Saville * @param field the field 697d02a064168ae5c916b977182b764580e601cb084Wink Saville */ 698d02a064168ae5c916b977182b764580e601cb084Wink Saville protected void setLongInteger(long value, int field) { 699d02a064168ae5c916b977182b764580e601cb084Wink Saville /** 700d02a064168ae5c916b977182b764580e601cb084Wink Saville * Check whether this field can be set for specific 701d02a064168ae5c916b977182b764580e601cb084Wink Saville * header and check validity of the field. 702d02a064168ae5c916b977182b764580e601cb084Wink Saville */ 703d02a064168ae5c916b977182b764580e601cb084Wink Saville switch (field) { 704d02a064168ae5c916b977182b764580e601cb084Wink Saville case DATE: 705d02a064168ae5c916b977182b764580e601cb084Wink Saville case REPLY_CHARGING_SIZE: 706d02a064168ae5c916b977182b764580e601cb084Wink Saville case MESSAGE_SIZE: 707d02a064168ae5c916b977182b764580e601cb084Wink Saville case MESSAGE_COUNT: 708d02a064168ae5c916b977182b764580e601cb084Wink Saville case START: 709d02a064168ae5c916b977182b764580e601cb084Wink Saville case LIMIT: 710d02a064168ae5c916b977182b764580e601cb084Wink Saville case DELIVERY_TIME: 711d02a064168ae5c916b977182b764580e601cb084Wink Saville case EXPIRY: 712d02a064168ae5c916b977182b764580e601cb084Wink Saville case REPLY_CHARGING_DEADLINE: 713d02a064168ae5c916b977182b764580e601cb084Wink Saville case PREVIOUSLY_SENT_DATE: 714d02a064168ae5c916b977182b764580e601cb084Wink Saville break; 715d02a064168ae5c916b977182b764580e601cb084Wink Saville default: 716d02a064168ae5c916b977182b764580e601cb084Wink Saville // This header value should not be LongInteger. 717d02a064168ae5c916b977182b764580e601cb084Wink Saville throw new RuntimeException("Invalid header field!"); 718d02a064168ae5c916b977182b764580e601cb084Wink Saville } 719d02a064168ae5c916b977182b764580e601cb084Wink Saville mHeaderMap.put(field, value); 720d02a064168ae5c916b977182b764580e601cb084Wink Saville } 721d02a064168ae5c916b977182b764580e601cb084Wink Saville} 722