1526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen/*
2526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen * Copyright (C) 2007-2008 Esmertec AG.
3526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen * Copyright (C) 2007-2008 The Android Open Source Project
4526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen *
5526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen * Licensed under the Apache License, Version 2.0 (the "License");
6526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen * you may not use this file except in compliance with the License.
7526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen * You may obtain a copy of the License at
8526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen *
9526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen *      http://www.apache.org/licenses/LICENSE-2.0
10526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen *
11526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen * Unless required by applicable law or agreed to in writing, software
12526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen * distributed under the License is distributed on an "AS IS" BASIS,
13526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen * See the License for the specific language governing permissions and
15526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen * limitations under the License.
16526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen */
17526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen
18526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wenpackage com.google.android.mms.pdu;
19526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen
20526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wenimport android.util.Log;
21526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen
22526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wenimport com.google.android.mms.InvalidHeaderValueException;
23526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen
24526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wenpublic class SendReq extends MultimediaMessagePdu {
25526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    private static final String TAG = "SendReq";
26526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen
27526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    public SendReq() {
28526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen        super();
29526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen
30526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen        try {
31526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen            setMessageType(PduHeaders.MESSAGE_TYPE_SEND_REQ);
32526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen            setMmsVersion(PduHeaders.CURRENT_MMS_VERSION);
33526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen            // FIXME: Content-type must be decided according to whether
34526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen            // SMIL part present.
35526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen            setContentType("application/vnd.wap.multipart.related".getBytes());
36526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen            setFrom(new EncodedStringValue(PduHeaders.FROM_INSERT_ADDRESS_TOKEN_STR.getBytes()));
37526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen            setTransactionId(generateTransactionId());
38526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen        } catch (InvalidHeaderValueException e) {
39526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen            // Impossible to reach here since all headers we set above are valid.
40526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen            Log.e(TAG, "Unexpected InvalidHeaderValueException.", e);
41526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen            throw new RuntimeException(e);
42526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen        }
43526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    }
44526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen
45526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    private byte[] generateTransactionId() {
46526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen        String transactionId = "T" + Long.toHexString(System.currentTimeMillis());
47526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen        return transactionId.getBytes();
48526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    }
49526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen
50526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    /**
51526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * Constructor, used when composing a M-Send.req pdu.
52526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *
53526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * @param contentType the content type value
54526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * @param from the from value
55526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * @param mmsVersion current viersion of mms
56526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * @param transactionId the transaction-id value
57526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * @throws InvalidHeaderValueException if parameters are invalid.
58526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *         NullPointerException if contentType, form or transactionId is null.
59526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     */
60526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    public SendReq(byte[] contentType,
61526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen                   EncodedStringValue from,
62526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen                   int mmsVersion,
63526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen                   byte[] transactionId) throws InvalidHeaderValueException {
64526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen        super();
65526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen        setMessageType(PduHeaders.MESSAGE_TYPE_SEND_REQ);
66526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen        setContentType(contentType);
67526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen        setFrom(from);
68526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen        setMmsVersion(mmsVersion);
69526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen        setTransactionId(transactionId);
70526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    }
71526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen
72526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    /**
73526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * Constructor with given headers.
74526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *
75526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * @param headers Headers for this PDU.
76526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     */
77526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    SendReq(PduHeaders headers) {
78526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen        super(headers);
79526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    }
80526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen
81526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    /**
82526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * Constructor with given headers and body
83526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *
84526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * @param headers Headers for this PDU.
85526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * @param body Body of this PDu.
86526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     */
87526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    SendReq(PduHeaders headers, PduBody body) {
88526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen        super(headers, body);
89526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    }
90526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen
91526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    /**
92526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * Get Bcc value.
93526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *
94526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * @return the value
95526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     */
96526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    public EncodedStringValue[] getBcc() {
97526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen        return mPduHeaders.getEncodedStringValues(PduHeaders.BCC);
98526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    }
99526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen
100526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    /**
101526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * Add a "BCC" value.
102526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *
103526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * @param value the value
104526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * @throws NullPointerException if the value is null.
105526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     */
106526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    public void addBcc(EncodedStringValue value) {
107526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen        mPduHeaders.appendEncodedStringValue(value, PduHeaders.BCC);
108526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    }
109526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen
110526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    /**
111526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * Set "BCC" value.
112526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *
113526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * @param value the value
114526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * @throws NullPointerException if the value is null.
115526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     */
116526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    public void setBcc(EncodedStringValue[] value) {
117526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen        mPduHeaders.setEncodedStringValues(value, PduHeaders.BCC);
118526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    }
119526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen
120526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    /**
121526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * Get CC value.
122526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *
123526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * @return the value
124526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     */
125526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    public EncodedStringValue[] getCc() {
126526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen        return mPduHeaders.getEncodedStringValues(PduHeaders.CC);
127526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    }
128526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen
129526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    /**
130526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * Add a "CC" value.
131526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *
132526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * @param value the value
133526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * @throws NullPointerException if the value is null.
134526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     */
135526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    public void addCc(EncodedStringValue value) {
136526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen        mPduHeaders.appendEncodedStringValue(value, PduHeaders.CC);
137526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    }
138526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen
139526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    /**
140526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * Set "CC" value.
141526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *
142526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * @param value the value
143526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * @throws NullPointerException if the value is null.
144526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     */
145526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    public void setCc(EncodedStringValue[] value) {
146526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen        mPduHeaders.setEncodedStringValues(value, PduHeaders.CC);
147526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    }
148526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen
149526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    /**
150526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * Get Content-type value.
151526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *
152526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * @return the value
153526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     */
154526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    public byte[] getContentType() {
155526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen        return mPduHeaders.getTextString(PduHeaders.CONTENT_TYPE);
156526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    }
157526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen
158526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    /**
159526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * Set Content-type value.
160526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *
161526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * @param value the value
162526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * @throws NullPointerException if the value is null.
163526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     */
164526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    public void setContentType(byte[] value) {
165526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen        mPduHeaders.setTextString(value, PduHeaders.CONTENT_TYPE);
166526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    }
167526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen
168526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    /**
169526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * Get X-Mms-Delivery-Report value.
170526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *
171526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * @return the value
172526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     */
173526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    public int getDeliveryReport() {
174526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen        return mPduHeaders.getOctet(PduHeaders.DELIVERY_REPORT);
175526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    }
176526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen
177526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    /**
178526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * Set X-Mms-Delivery-Report value.
179526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *
180526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * @param value the value
181526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * @throws InvalidHeaderValueException if the value is invalid.
182526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     */
183526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    public void setDeliveryReport(int value) throws InvalidHeaderValueException {
184526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen        mPduHeaders.setOctet(value, PduHeaders.DELIVERY_REPORT);
185526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    }
186526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen
187526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    /**
188526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * Get X-Mms-Expiry value.
189526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *
190526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * Expiry-value = Value-length
191526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *      (Absolute-token Date-value | Relative-token Delta-seconds-value)
192526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *
193526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * @return the value
194526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     */
195526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    public long getExpiry() {
196526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen        return mPduHeaders.getLongInteger(PduHeaders.EXPIRY);
197526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    }
198526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen
199526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    /**
200526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * Set X-Mms-Expiry value.
201526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *
202526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * @param value the value
203526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     */
204526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    public void setExpiry(long value) {
205526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen        mPduHeaders.setLongInteger(value, PduHeaders.EXPIRY);
206526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    }
207526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen
208526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    /**
209526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * Get X-Mms-MessageSize value.
210526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *
211526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * Expiry-value = size of message
212526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *
213526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * @return the value
214526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     */
215526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    public long getMessageSize() {
216526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen        return mPduHeaders.getLongInteger(PduHeaders.MESSAGE_SIZE);
217526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    }
218526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen
219526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    /**
220526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * Set X-Mms-MessageSize value.
221526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *
222526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * @param value the value
223526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     */
224526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    public void setMessageSize(long value) {
225526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen        mPduHeaders.setLongInteger(value, PduHeaders.MESSAGE_SIZE);
226526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    }
227526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen
228526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    /**
229526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * Get X-Mms-Message-Class value.
230526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * Message-class-value = Class-identifier | Token-text
231526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * Class-identifier = Personal | Advertisement | Informational | Auto
232526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *
233526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * @return the value
234526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     */
235526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    public byte[] getMessageClass() {
236526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen        return mPduHeaders.getTextString(PduHeaders.MESSAGE_CLASS);
237526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    }
238526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen
239526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    /**
240526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * Set X-Mms-Message-Class value.
241526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *
242526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * @param value the value
243526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * @throws NullPointerException if the value is null.
244526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     */
245526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    public void setMessageClass(byte[] value) {
246526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen        mPduHeaders.setTextString(value, PduHeaders.MESSAGE_CLASS);
247526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    }
248526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen
249526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    /**
250526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * Get X-Mms-Read-Report value.
251526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *
252526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * @return the value
253526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     */
254526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    public int getReadReport() {
255526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen        return mPduHeaders.getOctet(PduHeaders.READ_REPORT);
256526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    }
257526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen
258526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    /**
259526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * Set X-Mms-Read-Report value.
260526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *
261526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * @param value the value
262526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * @throws InvalidHeaderValueException if the value is invalid.
263526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     */
264526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    public void setReadReport(int value) throws InvalidHeaderValueException {
265526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen        mPduHeaders.setOctet(value, PduHeaders.READ_REPORT);
266526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    }
267526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen
268526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    /**
269526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * Set "To" value.
270526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *
271526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * @param value the value
272526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * @throws NullPointerException if the value is null.
273526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     */
274526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    public void setTo(EncodedStringValue[] value) {
275526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen        mPduHeaders.setEncodedStringValues(value, PduHeaders.TO);
276526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    }
277526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen
278526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    /**
279526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * Get X-Mms-Transaction-Id field value.
280526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *
281526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * @return the X-Mms-Report-Allowed value
282526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     */
283526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    public byte[] getTransactionId() {
284526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen        return mPduHeaders.getTextString(PduHeaders.TRANSACTION_ID);
285526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    }
286526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen
287526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    /**
288526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * Set X-Mms-Transaction-Id field value.
289526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *
290526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * @param value the value
291526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * @throws NullPointerException if the value is null.
292526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     */
293526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    public void setTransactionId(byte[] value) {
294526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen        mPduHeaders.setTextString(value, PduHeaders.TRANSACTION_ID);
295526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    }
296526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen
297526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen    /*
298526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     * Optional, not supported header fields:
299526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *
300526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *     public byte getAdaptationAllowed() {return 0};
301526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *     public void setAdaptationAllowed(btye value) {};
302526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *
303526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *     public byte[] getApplicId() {return null;}
304526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *     public void setApplicId(byte[] value) {}
305526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *
306526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *     public byte[] getAuxApplicId() {return null;}
307526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *     public void getAuxApplicId(byte[] value) {}
308526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *
309526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *     public byte getContentClass() {return 0x00;}
310526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *     public void setApplicId(byte value) {}
311526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *
312526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *     public long getDeliveryTime() {return 0};
313526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *     public void setDeliveryTime(long value) {};
314526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *
315526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *     public byte getDrmContent() {return 0x00;}
316526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *     public void setDrmContent(byte value) {}
317526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *
318526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *     public MmFlagsValue getMmFlags() {return null;}
319526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *     public void setMmFlags(MmFlagsValue value) {}
320526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *
321526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *     public MmStateValue getMmState() {return null;}
322526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *     public void getMmState(MmStateValue value) {}
323526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *
324526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *     public byte[] getReplyApplicId() {return 0x00;}
325526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *     public void setReplyApplicId(byte[] value) {}
326526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *
327526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *     public byte getReplyCharging() {return 0x00;}
328526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *     public void setReplyCharging(byte value) {}
329526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *
330526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *     public byte getReplyChargingDeadline() {return 0x00;}
331526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *     public void setReplyChargingDeadline(byte value) {}
332526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *
333526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *     public byte[] getReplyChargingId() {return 0x00;}
334526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *     public void setReplyChargingId(byte[] value) {}
335526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *
336526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *     public long getReplyChargingSize() {return 0;}
337526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *     public void setReplyChargingSize(long value) {}
338526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *
339526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *     public byte[] getReplyApplicId() {return 0x00;}
340526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *     public void setReplyApplicId(byte[] value) {}
341526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *
342526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *     public byte getStore() {return 0x00;}
343526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     *     public void setStore(byte value) {}
344526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen     */
345526ecd1799a2fc467cfce114eae3578b42ccb786Ye Wen}
346