19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/*
29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2007-2008 Esmertec AG.
39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2007-2008 The Android Open Source Project
49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License.
79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at
89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and
159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License.
169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
18a87afd07c0093cab638e9ef9bc2c53c8200ca711Tom Taylorpackage com.google.android.mms.pdu;
199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.util.Log;
219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
22a87afd07c0093cab638e9ef9bc2c53c8200ca711Tom Taylorimport com.google.android.mms.InvalidHeaderValueException;
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class SendReq extends MultimediaMessagePdu {
259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static final String TAG = "SendReq";
269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public SendReq() {
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        super();
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        try {
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            setMessageType(PduHeaders.MESSAGE_TYPE_SEND_REQ);
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            setMmsVersion(PduHeaders.CURRENT_MMS_VERSION);
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            // FIXME: Content-type must be decided according to whether
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            // SMIL part present.
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            setContentType("application/vnd.wap.multipart.related".getBytes());
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            setFrom(new EncodedStringValue(PduHeaders.FROM_INSERT_ADDRESS_TOKEN_STR.getBytes()));
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            setTransactionId(generateTransactionId());
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        } catch (InvalidHeaderValueException e) {
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            // Impossible to reach here since all headers we set above are valid.
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            Log.e(TAG, "Unexpected InvalidHeaderValueException.", e);
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            throw new RuntimeException(e);
429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private byte[] generateTransactionId() {
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        String transactionId = "T" + Long.toHexString(System.currentTimeMillis());
479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return transactionId.getBytes();
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Constructor, used when composing a M-Send.req pdu.
529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param contentType the content type value
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param from the from value
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param mmsVersion current viersion of mms
569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param transactionId the transaction-id value
579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @throws InvalidHeaderValueException if parameters are invalid.
589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *         NullPointerException if contentType, form or transactionId is null.
599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public SendReq(byte[] contentType,
619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                   EncodedStringValue from,
629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                   int mmsVersion,
639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                   byte[] transactionId) throws InvalidHeaderValueException {
649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        super();
659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        setMessageType(PduHeaders.MESSAGE_TYPE_SEND_REQ);
669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        setContentType(contentType);
679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        setFrom(from);
689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        setMmsVersion(mmsVersion);
699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        setTransactionId(transactionId);
709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Constructor with given headers.
749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param headers Headers for this PDU.
769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    SendReq(PduHeaders headers) {
789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        super(headers);
799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Constructor with given headers and body
839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param headers Headers for this PDU.
859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param body Body of this PDu.
869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    SendReq(PduHeaders headers, PduBody body) {
889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        super(headers, body);
899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Get Bcc value.
939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the value
959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public EncodedStringValue[] getBcc() {
979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mPduHeaders.getEncodedStringValues(PduHeaders.BCC);
989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Add a "BCC" value.
1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param value the value
1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @throws NullPointerException if the value is null.
1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void addBcc(EncodedStringValue value) {
1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mPduHeaders.appendEncodedStringValue(value, PduHeaders.BCC);
1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Set "BCC" value.
1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param value the value
1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @throws NullPointerException if the value is null.
1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void setBcc(EncodedStringValue[] value) {
1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mPduHeaders.setEncodedStringValues(value, PduHeaders.BCC);
1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Get CC value.
1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the value
1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public EncodedStringValue[] getCc() {
1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mPduHeaders.getEncodedStringValues(PduHeaders.CC);
1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Add a "CC" value.
1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param value the value
1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @throws NullPointerException if the value is null.
1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void addCc(EncodedStringValue value) {
1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mPduHeaders.appendEncodedStringValue(value, PduHeaders.CC);
1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Set "CC" value.
1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param value the value
1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @throws NullPointerException if the value is null.
1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void setCc(EncodedStringValue[] value) {
1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mPduHeaders.setEncodedStringValues(value, PduHeaders.CC);
1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Get Content-type value.
1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the value
1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public byte[] getContentType() {
1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mPduHeaders.getTextString(PduHeaders.CONTENT_TYPE);
1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Set Content-type value.
1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param value the value
1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @throws NullPointerException if the value is null.
1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void setContentType(byte[] value) {
1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mPduHeaders.setTextString(value, PduHeaders.CONTENT_TYPE);
1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Get X-Mms-Delivery-Report value.
1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the value
1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int getDeliveryReport() {
1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mPduHeaders.getOctet(PduHeaders.DELIVERY_REPORT);
1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Set X-Mms-Delivery-Report value.
1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param value the value
1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @throws InvalidHeaderValueException if the value is invalid.
1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void setDeliveryReport(int value) throws InvalidHeaderValueException {
1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mPduHeaders.setOctet(value, PduHeaders.DELIVERY_REPORT);
1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Get X-Mms-Expiry value.
1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Expiry-value = Value-length
1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *      (Absolute-token Date-value | Relative-token Delta-seconds-value)
1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the value
1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public long getExpiry() {
1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mPduHeaders.getLongInteger(PduHeaders.EXPIRY);
1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Set X-Mms-Expiry value.
2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param value the value
2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void setExpiry(long value) {
2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mPduHeaders.setLongInteger(value, PduHeaders.EXPIRY);
2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
209a67c8cd581e00a28661f7b727bf74727c9a7f688Tom Taylor     * Get X-Mms-MessageSize value.
210a67c8cd581e00a28661f7b727bf74727c9a7f688Tom Taylor     *
211a67c8cd581e00a28661f7b727bf74727c9a7f688Tom Taylor     * Expiry-value = size of message
212a67c8cd581e00a28661f7b727bf74727c9a7f688Tom Taylor     *
213a67c8cd581e00a28661f7b727bf74727c9a7f688Tom Taylor     * @return the value
214a67c8cd581e00a28661f7b727bf74727c9a7f688Tom Taylor     */
215a67c8cd581e00a28661f7b727bf74727c9a7f688Tom Taylor    public long getMessageSize() {
216a67c8cd581e00a28661f7b727bf74727c9a7f688Tom Taylor        return mPduHeaders.getLongInteger(PduHeaders.MESSAGE_SIZE);
217a67c8cd581e00a28661f7b727bf74727c9a7f688Tom Taylor    }
218a67c8cd581e00a28661f7b727bf74727c9a7f688Tom Taylor
219a67c8cd581e00a28661f7b727bf74727c9a7f688Tom Taylor    /**
220a67c8cd581e00a28661f7b727bf74727c9a7f688Tom Taylor     * Set X-Mms-MessageSize value.
221a67c8cd581e00a28661f7b727bf74727c9a7f688Tom Taylor     *
222a67c8cd581e00a28661f7b727bf74727c9a7f688Tom Taylor     * @param value the value
223a67c8cd581e00a28661f7b727bf74727c9a7f688Tom Taylor     */
224a67c8cd581e00a28661f7b727bf74727c9a7f688Tom Taylor    public void setMessageSize(long value) {
225a67c8cd581e00a28661f7b727bf74727c9a7f688Tom Taylor        mPduHeaders.setLongInteger(value, PduHeaders.MESSAGE_SIZE);
226a67c8cd581e00a28661f7b727bf74727c9a7f688Tom Taylor    }
227a67c8cd581e00a28661f7b727bf74727c9a7f688Tom Taylor
228a67c8cd581e00a28661f7b727bf74727c9a7f688Tom Taylor    /**
2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Get X-Mms-Message-Class value.
2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Message-class-value = Class-identifier | Token-text
2319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Class-identifier = Personal | Advertisement | Informational | Auto
2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the value
2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public byte[] getMessageClass() {
2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mPduHeaders.getTextString(PduHeaders.MESSAGE_CLASS);
2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Set X-Mms-Message-Class value.
2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param value the value
2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @throws NullPointerException if the value is null.
2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void setMessageClass(byte[] value) {
2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mPduHeaders.setTextString(value, PduHeaders.MESSAGE_CLASS);
2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Get X-Mms-Read-Report value.
2519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the value
2539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int getReadReport() {
2559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mPduHeaders.getOctet(PduHeaders.READ_REPORT);
2569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Set X-Mms-Read-Report value.
2609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param value the value
2629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @throws InvalidHeaderValueException if the value is invalid.
2639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void setReadReport(int value) throws InvalidHeaderValueException {
2659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mPduHeaders.setOctet(value, PduHeaders.READ_REPORT);
2669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Set "To" value.
2709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param value the value
2729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @throws NullPointerException if the value is null.
2739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void setTo(EncodedStringValue[] value) {
2759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mPduHeaders.setEncodedStringValues(value, PduHeaders.TO);
2769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Get X-Mms-Transaction-Id field value.
2809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @return the X-Mms-Report-Allowed value
2829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public byte[] getTransactionId() {
2849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mPduHeaders.getTextString(PduHeaders.TRANSACTION_ID);
2859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Set X-Mms-Transaction-Id field value.
2899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
2909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @param value the value
2919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @throws NullPointerException if the value is null.
2929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
2939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void setTransactionId(byte[] value) {
2949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mPduHeaders.setTextString(value, PduHeaders.TRANSACTION_ID);
2959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /*
2989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Optional, not supported header fields:
2999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *     public byte getAdaptationAllowed() {return 0};
3019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *     public void setAdaptationAllowed(btye value) {};
3029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *     public byte[] getApplicId() {return null;}
3049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *     public void setApplicId(byte[] value) {}
3059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *     public byte[] getAuxApplicId() {return null;}
3079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *     public void getAuxApplicId(byte[] value) {}
3089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *     public byte getContentClass() {return 0x00;}
3109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *     public void setApplicId(byte value) {}
3119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *     public long getDeliveryTime() {return 0};
3139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *     public void setDeliveryTime(long value) {};
3149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *     public byte getDrmContent() {return 0x00;}
3169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *     public void setDrmContent(byte value) {}
3179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *     public MmFlagsValue getMmFlags() {return null;}
3199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *     public void setMmFlags(MmFlagsValue value) {}
3209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *     public MmStateValue getMmState() {return null;}
3229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *     public void getMmState(MmStateValue value) {}
3239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *     public byte[] getReplyApplicId() {return 0x00;}
3259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *     public void setReplyApplicId(byte[] value) {}
3269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *     public byte getReplyCharging() {return 0x00;}
3289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *     public void setReplyCharging(byte value) {}
3299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *     public byte getReplyChargingDeadline() {return 0x00;}
3319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *     public void setReplyChargingDeadline(byte value) {}
3329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *     public byte[] getReplyChargingId() {return 0x00;}
3349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *     public void setReplyChargingId(byte[] value) {}
3359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *     public long getReplyChargingSize() {return 0;}
3379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *     public void setReplyChargingSize(long value) {}
3389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *     public byte[] getReplyApplicId() {return 0x00;}
3409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *     public void setReplyApplicId(byte[] value) {}
3419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
3429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *     public byte getStore() {return 0x00;}
3439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *     public void setStore(byte value) {}
3449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
3459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
346