make status messages encodable

master
Florian Thienel 3 years ago
parent a505f4320c
commit 3a558b1884

@ -261,7 +261,6 @@ type SDSReport struct {
// Encode this SDS-REPORT PDU // Encode this SDS-REPORT PDU
func (r SDSReport) Encode(bytes []byte, bits int) ([]byte, int) { func (r SDSReport) Encode(bytes []byte, bits int) ([]byte, int) {
bytes, bits = r.protocol.Encode(bytes, bits) bytes, bits = r.protocol.Encode(bytes, bits)
var byte1 byte var byte1 byte
@ -304,6 +303,17 @@ type SDSShortReport struct {
MessageReference MessageReference MessageReference MessageReference
} }
// Encode this SDS-SHORT-REPORT PDU
func (r SDSShortReport) Encode(bytes []byte, bits int) ([]byte, int) {
byte0 := byte(0x7C) | byte(r.ReportType)
bytes = append(bytes, byte0)
bits += 8
bytes, bits = r.MessageReference.Encode(bytes, bits)
return bytes, bits
}
// ParseSDSTransfer parses a SDS-TRANSFER PDU from the given bytes // ParseSDSTransfer parses a SDS-TRANSFER PDU from the given bytes
func ParseSDSTransfer(bytes []byte) (SDSTransfer, error) { func ParseSDSTransfer(bytes []byte) (SDSTransfer, error) {
if len(bytes) < 4 { if len(bytes) < 4 {
@ -947,6 +957,11 @@ func (s Status) Bytes() []byte {
} }
} }
// Encode this status
func (s Status) Encode(bytes []byte, bits int) ([]byte, int) {
return append(bytes, s.Bytes()...), bits + 16
}
// Length returns the length of this encoded status in bytes. // Length returns the length of this encoded status in bytes.
func (s Status) Length() int { func (s Status) Length() int {
return 2 return 2
@ -968,6 +983,7 @@ const (
Status9 Status = 0x800B Status9 Status = 0x800B
// responses // responses
StatusA Status = 0x80F2 StatusA Status = 0x80F2
StatusE Status = 0x80F3 StatusE Status = 0x80F3
StatusC Status = 0x80F4 StatusC Status = 0x80F4

Loading…
Cancel
Save