package uk.co.mmscomputing.sms; import java.io.*; public class SMSStatusReport extends SMSTransportProtocolDataUnit{ public SMSStatusReport(InputStream in)throws IOException{ readFrom(in); } public void readFrom(InputStream in)throws IOException{ int flags = read(in); put("TP-MTI",new Integer(flags&0x03)); // bit 0,1 TP-Message-Type-Indicator (TP-MTI) put("TP-MMS",new Boolean(((flags >> 2)&0x01)==0)); // bit 2 TP-More-Messages-to-Send (TP-MMS) put("TP-SRQ",new Boolean(((flags >> 5)&0x01)==0)); // bit 5 TP-Status-Report-Qualifier (TP-SRQ) put("TP-UDHI",new Boolean(((flags >> 6)&0x01)!=0)); // bit 6 TP-User-Data-Header-Indicator (TP-UDHI) put("TP-MR",new Integer(readInt(in))); // TP-Message-Reference (TP-MR) put("TP-RA",new SMSAddress(in)); // TP-Recipient-Address (TP-RA) put("TP-SCTS",new SMSTimeStamp(in)); // TP-Service-Centre-Time-Stamp (TP-SCTS) put("TP-DT",new SMSTimeStamp(in)); // TP-Discharge-Time (TP-DT) put("TP-ST",new Integer(readOctet(in))); // TP-Status (TP-ST) int pi=readOctet(false,in); put("TP-PI",new Integer(pi)); // optional TP-Parameter-Indicator (TP-PI) if((pi&0x0001)!=0){ // if bit 0 is set put("TP-PID",new Integer(readOctet(in))); // TP-Protocol-Identifier (TP-PID) } if((pi&0x0002)!=0){ // if bit 1 is set put("TP-DCS",new SMSDataCodingScheme(readOctet(in))); // TP-Data-Coding-Scheme (TP-DCS) } if((pi&0x0004)!=0){ // if bit 2 is set readUserDataFrom(in); } } }