def encode
      head = ""
      head << @smsc
      head << @pdu_type
      head << @message_reference
      head << @address
      head << @protocol_identifier
      head << @data_coding_scheme
      head << @validity_period
      pdus = []
      @message_parts.each do |part|
        pdus << PDU.new(head + part.length + part.data)
      end
      pdus
    end
def encode
      head = ""
      head << @smsc
      head << @pdu_type
      head << @message_reference
      head << @address
      head << @protocol_identifier
      head << @data_coding_scheme
      head << @validity_period
      pdus = []
      @message_parts.each do |part|
        pdus << PDU.new(head + part.length + part.data)
      end
      pdus
    end
PDU structure - http://read.pudn.com/downloads150/sourcecode/embed/646395/Short%20Message%20in%20PDU%20Encoding.pdf
 X Bytes - SMSC - Service Center Address
 1 Byte  - Flags / PDU Type
     - 1 bit  Reply Path parameter indicator
     - 1 bit  User Data Header Indicator
     - 1 bit  Status Request Report
     - 2 bits Validity Period Format
     - 1 bit  Reject Duplicates
     - 2 bits Message Type Indicator
 2 Bytes - Message Reference
 X Bytes - Address length and address
 1 Byte  - Protocol identificator (PID)
 1 Byte  - Data Coding Scheme
 X Bytes - Validity Period
 1 Byte  - User Data Length
 X Bytes - User Data