| /* |
| * Copyright (C) 2007-2008 Esmertec AG. |
| * Copyright (C) 2007-2008 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package com.google.android.mms.pdu; |
| |
| import android.util.Log; |
| |
| import dalvik.annotation.compat.UnsupportedAppUsage; |
| |
| import com.google.android.mms.InvalidHeaderValueException; |
| |
| public class SendReq extends MultimediaMessagePdu { |
| private static final String TAG = "SendReq"; |
| |
| @UnsupportedAppUsage |
| public SendReq() { |
| super(); |
| |
| try { |
| setMessageType(PduHeaders.MESSAGE_TYPE_SEND_REQ); |
| setMmsVersion(PduHeaders.CURRENT_MMS_VERSION); |
| // FIXME: Content-type must be decided according to whether |
| // SMIL part present. |
| setContentType("application/vnd.wap.multipart.related".getBytes()); |
| setFrom(new EncodedStringValue(PduHeaders.FROM_INSERT_ADDRESS_TOKEN_STR.getBytes())); |
| setTransactionId(generateTransactionId()); |
| } catch (InvalidHeaderValueException e) { |
| // Impossible to reach here since all headers we set above are valid. |
| Log.e(TAG, "Unexpected InvalidHeaderValueException.", e); |
| throw new RuntimeException(e); |
| } |
| } |
| |
| private byte[] generateTransactionId() { |
| String transactionId = "T" + Long.toHexString(System.currentTimeMillis()); |
| return transactionId.getBytes(); |
| } |
| |
| /** |
| * Constructor, used when composing a M-Send.req pdu. |
| * |
| * @param contentType the content type value |
| * @param from the from value |
| * @param mmsVersion current viersion of mms |
| * @param transactionId the transaction-id value |
| * @throws InvalidHeaderValueException if parameters are invalid. |
| * NullPointerException if contentType, form or transactionId is null. |
| */ |
| public SendReq(byte[] contentType, |
| EncodedStringValue from, |
| int mmsVersion, |
| byte[] transactionId) throws InvalidHeaderValueException { |
| super(); |
| setMessageType(PduHeaders.MESSAGE_TYPE_SEND_REQ); |
| setContentType(contentType); |
| setFrom(from); |
| setMmsVersion(mmsVersion); |
| setTransactionId(transactionId); |
| } |
| |
| /** |
| * Constructor with given headers. |
| * |
| * @param headers Headers for this PDU. |
| */ |
| SendReq(PduHeaders headers) { |
| super(headers); |
| } |
| |
| /** |
| * Constructor with given headers and body |
| * |
| * @param headers Headers for this PDU. |
| * @param body Body of this PDu. |
| */ |
| @UnsupportedAppUsage |
| SendReq(PduHeaders headers, PduBody body) { |
| super(headers, body); |
| } |
| |
| /** |
| * Get Bcc value. |
| * |
| * @return the value |
| */ |
| @UnsupportedAppUsage |
| public EncodedStringValue[] getBcc() { |
| return mPduHeaders.getEncodedStringValues(PduHeaders.BCC); |
| } |
| |
| /** |
| * Add a "BCC" value. |
| * |
| * @param value the value |
| * @throws NullPointerException if the value is null. |
| */ |
| @UnsupportedAppUsage |
| public void addBcc(EncodedStringValue value) { |
| mPduHeaders.appendEncodedStringValue(value, PduHeaders.BCC); |
| } |
| |
| /** |
| * Set "BCC" value. |
| * |
| * @param value the value |
| * @throws NullPointerException if the value is null. |
| */ |
| @UnsupportedAppUsage |
| public void setBcc(EncodedStringValue[] value) { |
| mPduHeaders.setEncodedStringValues(value, PduHeaders.BCC); |
| } |
| |
| /** |
| * Get CC value. |
| * |
| * @return the value |
| */ |
| @UnsupportedAppUsage |
| public EncodedStringValue[] getCc() { |
| return mPduHeaders.getEncodedStringValues(PduHeaders.CC); |
| } |
| |
| /** |
| * Add a "CC" value. |
| * |
| * @param value the value |
| * @throws NullPointerException if the value is null. |
| */ |
| @UnsupportedAppUsage |
| public void addCc(EncodedStringValue value) { |
| mPduHeaders.appendEncodedStringValue(value, PduHeaders.CC); |
| } |
| |
| /** |
| * Set "CC" value. |
| * |
| * @param value the value |
| * @throws NullPointerException if the value is null. |
| */ |
| @UnsupportedAppUsage |
| public void setCc(EncodedStringValue[] value) { |
| mPduHeaders.setEncodedStringValues(value, PduHeaders.CC); |
| } |
| |
| /** |
| * Get Content-type value. |
| * |
| * @return the value |
| */ |
| @UnsupportedAppUsage |
| public byte[] getContentType() { |
| return mPduHeaders.getTextString(PduHeaders.CONTENT_TYPE); |
| } |
| |
| /** |
| * Set Content-type value. |
| * |
| * @param value the value |
| * @throws NullPointerException if the value is null. |
| */ |
| @UnsupportedAppUsage |
| public void setContentType(byte[] value) { |
| mPduHeaders.setTextString(value, PduHeaders.CONTENT_TYPE); |
| } |
| |
| /** |
| * Get X-Mms-Delivery-Report value. |
| * |
| * @return the value |
| */ |
| @UnsupportedAppUsage |
| public int getDeliveryReport() { |
| return mPduHeaders.getOctet(PduHeaders.DELIVERY_REPORT); |
| } |
| |
| /** |
| * Set X-Mms-Delivery-Report value. |
| * |
| * @param value the value |
| * @throws InvalidHeaderValueException if the value is invalid. |
| */ |
| @UnsupportedAppUsage |
| public void setDeliveryReport(int value) throws InvalidHeaderValueException { |
| mPduHeaders.setOctet(value, PduHeaders.DELIVERY_REPORT); |
| } |
| |
| /** |
| * Get X-Mms-Expiry value. |
| * |
| * Expiry-value = Value-length |
| * (Absolute-token Date-value | Relative-token Delta-seconds-value) |
| * |
| * @return the value |
| */ |
| @UnsupportedAppUsage |
| public long getExpiry() { |
| return mPduHeaders.getLongInteger(PduHeaders.EXPIRY); |
| } |
| |
| /** |
| * Set X-Mms-Expiry value. |
| * |
| * @param value the value |
| */ |
| @UnsupportedAppUsage |
| public void setExpiry(long value) { |
| mPduHeaders.setLongInteger(value, PduHeaders.EXPIRY); |
| } |
| |
| /** |
| * Get X-Mms-MessageSize value. |
| * |
| * Expiry-value = size of message |
| * |
| * @return the value |
| */ |
| @UnsupportedAppUsage |
| public long getMessageSize() { |
| return mPduHeaders.getLongInteger(PduHeaders.MESSAGE_SIZE); |
| } |
| |
| /** |
| * Set X-Mms-MessageSize value. |
| * |
| * @param value the value |
| */ |
| @UnsupportedAppUsage |
| public void setMessageSize(long value) { |
| mPduHeaders.setLongInteger(value, PduHeaders.MESSAGE_SIZE); |
| } |
| |
| /** |
| * Get X-Mms-Message-Class value. |
| * Message-class-value = Class-identifier | Token-text |
| * Class-identifier = Personal | Advertisement | Informational | Auto |
| * |
| * @return the value |
| */ |
| @UnsupportedAppUsage |
| public byte[] getMessageClass() { |
| return mPduHeaders.getTextString(PduHeaders.MESSAGE_CLASS); |
| } |
| |
| /** |
| * Set X-Mms-Message-Class value. |
| * |
| * @param value the value |
| * @throws NullPointerException if the value is null. |
| */ |
| @UnsupportedAppUsage |
| public void setMessageClass(byte[] value) { |
| mPduHeaders.setTextString(value, PduHeaders.MESSAGE_CLASS); |
| } |
| |
| /** |
| * Get X-Mms-Read-Report value. |
| * |
| * @return the value |
| */ |
| @UnsupportedAppUsage |
| public int getReadReport() { |
| return mPduHeaders.getOctet(PduHeaders.READ_REPORT); |
| } |
| |
| /** |
| * Set X-Mms-Read-Report value. |
| * |
| * @param value the value |
| * @throws InvalidHeaderValueException if the value is invalid. |
| */ |
| @UnsupportedAppUsage |
| public void setReadReport(int value) throws InvalidHeaderValueException { |
| mPduHeaders.setOctet(value, PduHeaders.READ_REPORT); |
| } |
| |
| /** |
| * Set "To" value. |
| * |
| * @param value the value |
| * @throws NullPointerException if the value is null. |
| */ |
| @UnsupportedAppUsage |
| public void setTo(EncodedStringValue[] value) { |
| mPduHeaders.setEncodedStringValues(value, PduHeaders.TO); |
| } |
| |
| /** |
| * Get X-Mms-Transaction-Id field value. |
| * |
| * @return the X-Mms-Report-Allowed value |
| */ |
| @UnsupportedAppUsage |
| public byte[] getTransactionId() { |
| return mPduHeaders.getTextString(PduHeaders.TRANSACTION_ID); |
| } |
| |
| /** |
| * Set X-Mms-Transaction-Id field value. |
| * |
| * @param value the value |
| * @throws NullPointerException if the value is null. |
| */ |
| @UnsupportedAppUsage |
| public void setTransactionId(byte[] value) { |
| mPduHeaders.setTextString(value, PduHeaders.TRANSACTION_ID); |
| } |
| |
| /* |
| * Optional, not supported header fields: |
| * |
| * public byte getAdaptationAllowed() {return 0}; |
| * public void setAdaptationAllowed(btye value) {}; |
| * |
| * public byte[] getApplicId() {return null;} |
| * public void setApplicId(byte[] value) {} |
| * |
| * public byte[] getAuxApplicId() {return null;} |
| * public void getAuxApplicId(byte[] value) {} |
| * |
| * public byte getContentClass() {return 0x00;} |
| * public void setApplicId(byte value) {} |
| * |
| * public long getDeliveryTime() {return 0}; |
| * public void setDeliveryTime(long value) {}; |
| * |
| * public byte getDrmContent() {return 0x00;} |
| * public void setDrmContent(byte value) {} |
| * |
| * public MmFlagsValue getMmFlags() {return null;} |
| * public void setMmFlags(MmFlagsValue value) {} |
| * |
| * public MmStateValue getMmState() {return null;} |
| * public void getMmState(MmStateValue value) {} |
| * |
| * public byte[] getReplyApplicId() {return 0x00;} |
| * public void setReplyApplicId(byte[] value) {} |
| * |
| * public byte getReplyCharging() {return 0x00;} |
| * public void setReplyCharging(byte value) {} |
| * |
| * public byte getReplyChargingDeadline() {return 0x00;} |
| * public void setReplyChargingDeadline(byte value) {} |
| * |
| * public byte[] getReplyChargingId() {return 0x00;} |
| * public void setReplyChargingId(byte[] value) {} |
| * |
| * public long getReplyChargingSize() {return 0;} |
| * public void setReplyChargingSize(long value) {} |
| * |
| * public byte[] getReplyApplicId() {return 0x00;} |
| * public void setReplyApplicId(byte[] value) {} |
| * |
| * public byte getStore() {return 0x00;} |
| * public void setStore(byte value) {} |
| */ |
| } |