package uk.co.mmscomputing.sms;
import java.io.*;
public class SMSTransportProtocolDataUnit extends SMSDataUnit{
// Transport Protocol Data Unit
private byte[] data = new byte[0];
public SMSTransportProtocolDataUnit(){}
public byte[] getUserData(){return data;}
public void setUserData(byte[] data){this.data=data;}
public void readUserDataFrom(InputStream in)throws IOException{
boolean udhi = getBoolean("TP-UDHI"); // bit 6 TP-User-Data-Header-Indicator (TP-UDHI)
int udl = read(in); // TP-User-Data-Length (TP-UDL)
if(udhi){ // we have optional features
int udhl = read(in); // TP-User-Data-Header-Length (TP-UDHL)
byte[] udh = new byte[udhl]; // TP-User Data (TP-UDH)
System.err.println("TP-UDHL = "+udhl);
for(int i=0;i<udhl;i++){
System.err.println("["+i+"]=0x"+Integer.toHexString(read(in)));
}
// if(udhl!=in.read(data)){ // waste data
// }
udl -= udhl;
}
data = new byte[udl]; // TP-User Data (TP-UD)
// short message can be 7, 8 or 16 bit
// support only 7 bit yet.
if(udl!=new SMS7BitInputStream(in).read(data)){
}
}
public void writeUserDataTo(OutputStream out)throws IOException{
/*
out.write(data.length+4);
out.write(3); // TP-UDHL
// Information Data Element
out.write(0x0B); // sound
out.write(1); // length of data
out.write(3); // "ta da"
out=new SMS7BitOutputStream(out);
out.write(data);
out.flush();
*/
///*
out.write(data.length);
out=new SMS7BitOutputStream(out);
out.write(data);
out.flush();
//*/
}
public String toString(){
String s=super.toString();
if(data.length>0){ s+="\ndata = "+new String(data)+"\n\n";}
return s;
}
}
// [1] ETSI TS 123 040 (2004-09)