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