Implement submit encode

This commit is contained in:
2024-07-24 19:17:34 +02:00
parent 500cb11235
commit 14c861ccb4
4 changed files with 83 additions and 65 deletions

View File

@@ -4,6 +4,7 @@ import (
"bytes"
"encoding/ascii85"
"encoding/binary"
"fmt"
)
type (
@@ -65,33 +66,41 @@ type (
)
func (p *SUBMIT_SM) Encode(buf *bytes.Buffer) error {
if buf == nil {
return fmt.Errorf("cannot encode into nil buffer")
}
p.header.Encode(buf)
n := ascii85.Encode(buf.Bytes(), []byte(p.service_type))
buf.Truncate(n)
binary.Write(buf, binary.BigEndian, byte(len(p.service_type)))
// service_type string
// source_addr_ton byte
// source_addr_npi byte
// source_addr string
// dest_addr_ton byte
// dest_addr_npi byte
// destination_addr string
// esm_class byte
// protocol_id byte
// priority_flag byte
// schedule_delivery_time string
// validity_period string
// registered_delivery byte
// replace_if_present byte
// data_coding byte
// sm_default_msg_id byte
// sm_length byte
// short_message string
binary.Write(buf, binary.BigEndian, p.source_addr_ton)
binary.Write(buf, binary.BigEndian, p.source_addr_npi)
n = ascii85.Encode(buf.Bytes(), []byte(p.source_addr))
buf.Truncate(n)
binary.Write(buf, binary.BigEndian, p.dest_addr_ton)
binary.Write(buf, binary.BigEndian, p.dest_addr_npi)
n = ascii85.Encode(buf.Bytes(), []byte(p.destination_addr))
buf.Truncate(n)
binary.Write(buf, binary.BigEndian, p.esm_class)
binary.Write(buf, binary.BigEndian, p.protocol_id)
binary.Write(buf, binary.BigEndian, p.priority_flag)
n = ascii85.Encode(buf.Bytes(), []byte(p.schedule_delivery_time))
buf.Truncate(n)
n = ascii85.Encode(buf.Bytes(), []byte(p.validity_period))
buf.Truncate(n)
binary.Write(buf, binary.BigEndian, p.registered_delivery)
binary.Write(buf, binary.BigEndian, p.replace_if_present)
binary.Write(buf, binary.BigEndian, p.data_coding)
binary.Write(buf, binary.BigEndian, p.sm_default_msg_id)
binary.Write(buf, binary.BigEndian, p.sm_length)
// TODO: Implement encodings bsed on p.data_coding
n = ascii85.Encode(buf.Bytes(), []byte(p.short_message))
buf.Truncate(n)
return nil
}
func (p *SUBMIT_SM) Decode(buf *bytes.Buffer) error {
if buf == nil {
return fmt.Errorf("cannot decode nil buffer")
}
return nil
}
func (p *SUBMIT_SM) Size() int {