1d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd/*
2d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * Copyright (C) 2007-2008 Esmertec AG.
3d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * Copyright (C) 2007-2008 The Android Open Source Project
4d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd *
5d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * Licensed under the Apache License, Version 2.0 (the "License");
6d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * you may not use this file except in compliance with the License.
7d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * You may obtain a copy of the License at
8d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd *
9d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd *      http://www.apache.org/licenses/LICENSE-2.0
10d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd *
11d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * Unless required by applicable law or agreed to in writing, software
12d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * distributed under the License is distributed on an "AS IS" BASIS,
13d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * See the License for the specific language governing permissions and
15d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * limitations under the License.
16d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd */
17d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
18d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddpackage android.support.v7.mms.pdu;
19d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
20d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.util.Log;
21d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
22d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddpublic class SendReq extends MultimediaMessagePdu {
23d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    private static final String TAG = "SendReq";
24d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
25d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public SendReq() {
26d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        super();
27d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
28d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        try {
29d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            setMessageType(PduHeaders.MESSAGE_TYPE_SEND_REQ);
30d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            setMmsVersion(PduHeaders.CURRENT_MMS_VERSION);
31d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            // FIXME: Content-type must be decided according to whether
32d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            // SMIL part present.
33d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            setContentType("application/vnd.wap.multipart.related".getBytes());
34d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            setFrom(new EncodedStringValue(PduHeaders.FROM_INSERT_ADDRESS_TOKEN_STR.getBytes()));
35d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            setTransactionId(generateTransactionId());
36d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        } catch (InvalidHeaderValueException e) {
37d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            // Impossible to reach here since all headers we set above are valid.
38d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            Log.e(TAG, "Unexpected InvalidHeaderValueException.", e);
39d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            throw new RuntimeException(e);
40d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        }
41d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
42d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
43d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    private byte[] generateTransactionId() {
44d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        String transactionId = "T" + Long.toHexString(System.currentTimeMillis());
45d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        return transactionId.getBytes();
46d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
47d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
48d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    /**
49d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * Constructor, used when composing a M-Send.req pdu.
50d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *
51d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * @param contentType the content type value
52d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * @param from the from value
53d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * @param mmsVersion current viersion of mms
54d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * @param transactionId the transaction-id value
55d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * @throws InvalidHeaderValueException if parameters are invalid.
56d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *         NullPointerException if contentType, form or transactionId is null.
57d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     */
58d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public SendReq(byte[] contentType,
59d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                   EncodedStringValue from,
60d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                   int mmsVersion,
61d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                   byte[] transactionId) throws InvalidHeaderValueException {
62d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        super();
63d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        setMessageType(PduHeaders.MESSAGE_TYPE_SEND_REQ);
64d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        setContentType(contentType);
65d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        setFrom(from);
66d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        setMmsVersion(mmsVersion);
67d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        setTransactionId(transactionId);
68d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
69d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
70d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    /**
71d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * Constructor with given headers.
72d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *
73d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * @param headers Headers for this PDU.
74d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     */
75d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    SendReq(PduHeaders headers) {
76d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        super(headers);
77d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
78d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
79d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    /**
80d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * Constructor with given headers and body
81d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *
82d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * @param headers Headers for this PDU.
83d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * @param body Body of this PDu.
84d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     */
85d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    SendReq(PduHeaders headers, PduBody body) {
86d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        super(headers, body);
87d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
88d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
89d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    /**
90d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * Get Bcc value.
91d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *
92d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * @return the value
93d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     */
94d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public EncodedStringValue[] getBcc() {
95d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        return mPduHeaders.getEncodedStringValues(PduHeaders.BCC);
96d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
97d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
98d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    /**
99d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * Add a "BCC" value.
100d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *
101d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * @param value the value
102d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * @throws NullPointerException if the value is null.
103d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     */
104d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public void addBcc(EncodedStringValue value) {
105d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        mPduHeaders.appendEncodedStringValue(value, PduHeaders.BCC);
106d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
107d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
108d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    /**
109d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * Set "BCC" value.
110d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *
111d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * @param value the value
112d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * @throws NullPointerException if the value is null.
113d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     */
114d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public void setBcc(EncodedStringValue[] value) {
115d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        mPduHeaders.setEncodedStringValues(value, PduHeaders.BCC);
116d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
117d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
118d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    /**
119d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * Get CC value.
120d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *
121d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * @return the value
122d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     */
123d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public EncodedStringValue[] getCc() {
124d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        return mPduHeaders.getEncodedStringValues(PduHeaders.CC);
125d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
126d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
127d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    /**
128d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * Add a "CC" value.
129d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *
130d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * @param value the value
131d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * @throws NullPointerException if the value is null.
132d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     */
133d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public void addCc(EncodedStringValue value) {
134d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        mPduHeaders.appendEncodedStringValue(value, PduHeaders.CC);
135d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
136d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
137d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    /**
138d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * Set "CC" value.
139d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *
140d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * @param value the value
141d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * @throws NullPointerException if the value is null.
142d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     */
143d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public void setCc(EncodedStringValue[] value) {
144d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        mPduHeaders.setEncodedStringValues(value, PduHeaders.CC);
145d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
146d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
147d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    /**
148d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * Get Content-type value.
149d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *
150d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * @return the value
151d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     */
152d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public byte[] getContentType() {
153d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        return mPduHeaders.getTextString(PduHeaders.CONTENT_TYPE);
154d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
155d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
156d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    /**
157d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * Set Content-type value.
158d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *
159d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * @param value the value
160d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * @throws NullPointerException if the value is null.
161d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     */
162d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public void setContentType(byte[] value) {
163d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        mPduHeaders.setTextString(value, PduHeaders.CONTENT_TYPE);
164d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
165d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
166d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    /**
167d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * Get X-Mms-Delivery-Report value.
168d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *
169d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * @return the value
170d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     */
171d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public int getDeliveryReport() {
172d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        return mPduHeaders.getOctet(PduHeaders.DELIVERY_REPORT);
173d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
174d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
175d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    /**
176d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * Set X-Mms-Delivery-Report value.
177d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *
178d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * @param value the value
179d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * @throws InvalidHeaderValueException if the value is invalid.
180d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     */
181d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public void setDeliveryReport(int value) throws InvalidHeaderValueException {
182d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        mPduHeaders.setOctet(value, PduHeaders.DELIVERY_REPORT);
183d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
184d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
185d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    /**
186d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * Get X-Mms-Expiry value.
187d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *
188d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * Expiry-value = Value-length
189d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *      (Absolute-token Date-value | Relative-token Delta-seconds-value)
190d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *
191d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * @return the value
192d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     */
193d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public long getExpiry() {
194d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        return mPduHeaders.getLongInteger(PduHeaders.EXPIRY);
195d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
196d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
197d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    /**
198d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * Set X-Mms-Expiry value.
199d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *
200d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * @param value the value
201d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     */
202d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public void setExpiry(long value) {
203d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        mPduHeaders.setLongInteger(value, PduHeaders.EXPIRY);
204d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
205d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
206d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    /**
207d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * Get X-Mms-MessageSize value.
208d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *
209d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * Expiry-value = size of message
210d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *
211d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * @return the value
212d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     */
213d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public long getMessageSize() {
214d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        return mPduHeaders.getLongInteger(PduHeaders.MESSAGE_SIZE);
215d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
216d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
217d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    /**
218d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * Set X-Mms-MessageSize value.
219d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *
220d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * @param value the value
221d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     */
222d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public void setMessageSize(long value) {
223d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        mPduHeaders.setLongInteger(value, PduHeaders.MESSAGE_SIZE);
224d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
225d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
226d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    /**
227d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * Get X-Mms-Message-Class value.
228d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * Message-class-value = Class-identifier | Token-text
229d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * Class-identifier = Personal | Advertisement | Informational | Auto
230d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *
231d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * @return the value
232d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     */
233d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public byte[] getMessageClass() {
234d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        return mPduHeaders.getTextString(PduHeaders.MESSAGE_CLASS);
235d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
236d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
237d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    /**
238d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * Set X-Mms-Message-Class value.
239d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *
240d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * @param value the value
241d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * @throws NullPointerException if the value is null.
242d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     */
243d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public void setMessageClass(byte[] value) {
244d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        mPduHeaders.setTextString(value, PduHeaders.MESSAGE_CLASS);
245d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
246d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
247d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    /**
248d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * Get X-Mms-Read-Report value.
249d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *
250d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * @return the value
251d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     */
252d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public int getReadReport() {
253d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        return mPduHeaders.getOctet(PduHeaders.READ_REPORT);
254d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
255d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
256d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    /**
257d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * Set X-Mms-Read-Report value.
258d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *
259d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * @param value the value
260d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * @throws InvalidHeaderValueException if the value is invalid.
261d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     */
262d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public void setReadReport(int value) throws InvalidHeaderValueException {
263d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        mPduHeaders.setOctet(value, PduHeaders.READ_REPORT);
264d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
265d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
266d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    /**
267d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * Set "To" value.
268d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *
269d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * @param value the value
270d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * @throws NullPointerException if the value is null.
271d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     */
272d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public void setTo(EncodedStringValue[] value) {
273d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        mPduHeaders.setEncodedStringValues(value, PduHeaders.TO);
274d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
275d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
276d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    /**
277d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * Get X-Mms-Transaction-Id field value.
278d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *
279d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * @return the X-Mms-Report-Allowed value
280d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     */
281d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public byte[] getTransactionId() {
282d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        return mPduHeaders.getTextString(PduHeaders.TRANSACTION_ID);
283d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
284d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
285d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    /**
286d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * Set X-Mms-Transaction-Id field value.
287d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *
288d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * @param value the value
289d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * @throws NullPointerException if the value is null.
290d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     */
291d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public void setTransactionId(byte[] value) {
292d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        mPduHeaders.setTextString(value, PduHeaders.TRANSACTION_ID);
293d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
294d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
295d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    /*
296d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     * Optional, not supported header fields:
297d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *
298d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *     public byte getAdaptationAllowed() {return 0};
299d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *     public void setAdaptationAllowed(btye value) {};
300d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *
301d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *     public byte[] getApplicId() {return null;}
302d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *     public void setApplicId(byte[] value) {}
303d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *
304d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *     public byte[] getAuxApplicId() {return null;}
305d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *     public void getAuxApplicId(byte[] value) {}
306d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *
307d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *     public byte getContentClass() {return 0x00;}
308d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *     public void setApplicId(byte value) {}
309d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *
310d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *     public long getDeliveryTime() {return 0};
311d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *     public void setDeliveryTime(long value) {};
312d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *
313d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *     public byte getDrmContent() {return 0x00;}
314d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *     public void setDrmContent(byte value) {}
315d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *
316d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *     public MmFlagsValue getMmFlags() {return null;}
317d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *     public void setMmFlags(MmFlagsValue value) {}
318d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *
319d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *     public MmStateValue getMmState() {return null;}
320d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *     public void getMmState(MmStateValue value) {}
321d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *
322d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *     public byte[] getReplyApplicId() {return 0x00;}
323d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *     public void setReplyApplicId(byte[] value) {}
324d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *
325d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *     public byte getReplyCharging() {return 0x00;}
326d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *     public void setReplyCharging(byte value) {}
327d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *
328d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *     public byte getReplyChargingDeadline() {return 0x00;}
329d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *     public void setReplyChargingDeadline(byte value) {}
330d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *
331d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *     public byte[] getReplyChargingId() {return 0x00;}
332d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *     public void setReplyChargingId(byte[] value) {}
333d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *
334d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *     public long getReplyChargingSize() {return 0;}
335d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *     public void setReplyChargingSize(long value) {}
336d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *
337d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *     public byte[] getReplyApplicId() {return 0x00;}
338d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *     public void setReplyApplicId(byte[] value) {}
339d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *
340d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *     public byte getStore() {return 0x00;}
341d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     *     public void setStore(byte value) {}
342d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd     */
343d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd}
344