From 4fcc1d88ff77748d8d2ca8e57170b7ffd8b251e1 Mon Sep 17 00:00:00 2001 From: PhatPhuckDave <> Date: Mon, 22 Jul 2024 22:58:01 +0200 Subject: [PATCH] Implement a part of submit encode --- pdu/submit.go | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/pdu/submit.go b/pdu/submit.go index dc57ae6..5834186 100644 --- a/pdu/submit.go +++ b/pdu/submit.go @@ -1,5 +1,7 @@ package pdu +import "fmt" + type ( SUBMIT_SM struct { header PDU_HEADER @@ -58,16 +60,28 @@ type ( SUBMIT_MULTI_RESP struct{} ) -func (p *SUBMIT_SM) Encode() []byte { - return []byte{} +func (p *SUBMIT_SM) Encode() ([]byte, error) { + buf := make([]byte, p.Size()) + err := p.EncodeInto(&buf) + return buf, err } -func (p *SUBMIT_SM) EncodeInto(buf *[]byte) { +func (p *SUBMIT_SM) EncodeInto(buf *[]byte) error { + if buf == nil { + return fmt.Errorf("cannot encode SUBMIT_SM, buffer is nil") + } + if len(*buf) < int(p.Size()) { + return fmt.Errorf("cannot encode SUBMIT_SM, buffer too small (%d, required %d)", len(*buf), p.Size()) + } + + p.header.EncodeInto(buf) + + return nil } func (p *SUBMIT_SM) Decode(data []byte) { } func (p *SUBMIT_SM) Size() uint32 { var size uint32 - size += 16 // header + size += p.header.Size() size += uint32(len(p.service_type) * 1) size += 1 // source_addr_ton size += 1 // source_addr_npi