View Javadoc

1   /* ***** BEGIN LICENSE BLOCK *****
2    * Version: MPL 1.1/GPL 2.0/LGPL 2.1
3    *
4    * The contents of this file are subject to the Mozilla Public License Version
5    * 1.1 (the "License"); you may not use this file except in compliance with
6    * the License. You may obtain a copy of the License at
7    * http://www.mozilla.org/MPL/
8    *
9    * Software distributed under the License is distributed on an "AS IS" basis,
10   * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
11   * for the specific language governing rights and limitations under the
12   * License.
13   *
14   * The Original Code is "SMS Library for the Java platform".
15   *
16   * The Initial Developer of the Original Code is Markus Eriksson.
17   * Portions created by the Initial Developer are Copyright (C) 2002
18   * the Initial Developer. All Rights Reserved.
19   *
20   * Contributor(s):
21   *
22   * Alternatively, the contents of this file may be used under the terms of
23   * either the GNU General Public License Version 2 or later (the "GPL"), or
24   * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
25   * in which case the provisions of the GPL or the LGPL are applicable instead
26   * of those above. If you wish to allow use of your version of this file only
27   * under the terms of either the GPL or the LGPL, and not to allow others to
28   * use your version of this file under the terms of the MPL, indicate your
29   * decision by deleting the provisions above and replace them with the notice
30   * and other provisions required by the GPL or the LGPL. If you do not delete
31   * the provisions above, a recipient may use your version of this file under
32   * the terms of any one of the MPL, the GPL or the LGPL.
33   *
34   * ***** END LICENSE BLOCK ***** */
35  package org.marre.sms;
36  
37  import java.io.*;
38  
39  /***
40   * Represents an User Data Header Element
41   *
42   * @author Markus Eriksson
43   * @version $Id: SmsUdhElement.java,v 1.5 2004/11/02 17:59:49 c95men Exp $
44   */
45  public class SmsUdhElement
46  {
47      protected int myUdhIei;
48      protected byte[] myUdhIeiData;
49  
50      /***
51       * Creates an SmsUdhElement
52       *
53       * @param theUdhIei
54       * @param theUdhIeiData
55       */
56      public SmsUdhElement(int theUdhIei, byte[] theUdhIeiData)
57      {
58          myUdhIei = theUdhIei;
59          myUdhIeiData = theUdhIeiData;
60      }
61  
62      /***
63       * Returns the total length of this UDH element.
64       * <p>
65       * The length is including the UDH data length and the UDH "header" (2 bytes)
66       * @return the length
67       */
68      public int getTotalSize()
69      {
70          return myUdhIeiData.length + 2;
71      }
72  
73      /***
74       * Returns the length of the UDH iei data
75       * <p>
76       * The length returned is only the length of the data
77       * @return Length of data
78       */
79      public int getUdhIeiDataLength()
80      {
81          return myUdhIeiData.length;
82      }
83  
84      /***
85       * Returns the Udh Iei Data excluding the UDH "header"
86       * @return Data
87       */
88      public byte[] getUdhIeiData()
89      {
90          return myUdhIeiData;
91      }
92  
93      /***
94       * Return the UDH element including the UDH "header" (two bytes)
95       *
96       * @return Data
97       */
98      public byte[] getData()
99      {
100         byte[] allData = new byte[myUdhIeiData.length + 2];
101 
102         allData[0] = (byte) (myUdhIei & 0xff);
103         allData[1] = (byte) (myUdhIeiData.length & 0xff);
104         System.arraycopy(myUdhIeiData, 0, allData, 2, myUdhIeiData.length);
105 
106         return allData;
107     }
108 
109     /***
110      * Writes the UDH element including UDH "header" to the given stream
111      *
112      * @param os Stream to write to
113      * @throws IOException
114      */
115     public void writeTo(OutputStream os)
116         throws IOException
117     {
118         os.write(myUdhIei);
119         os.write(myUdhIeiData.length);
120         os.write(myUdhIeiData);
121     }
122 }