-
Notifications
You must be signed in to change notification settings - Fork 33
/
msg_1205.go
49 lines (41 loc) · 1.23 KB
/
msg_1205.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package model
import (
"github.com/fakeyanss/jt808-server-go/internal/codec/hex"
)
// JTT1078 终端上传音视频资源列表
//
// 列表过大时需要分包
type Msg1205 struct {
Header *MsgHeader `json:"header"`
AnswerSerialNumber uint16 `json:"answerSerialNumber"` // 流水号,对应查询音视频资源列表消息的流水号
MediaCount uint32 `json:"mediaCount"` // 音视频资源总数
DeviceMedia
}
func (m *Msg1205) Decode(packet *PacketData) error {
m.Header = packet.Header
pkt, idx := packet.Body, 0
m.AnswerSerialNumber = hex.ReadWord(pkt, &idx)
m.MediaCount = hex.ReadDoubleWord(pkt, &idx)
m.DeviceMedia.Decode(pkt[idx:])
return nil
}
func (m *Msg1205) Encode() (pkt []byte, err error) {
pkt = hex.WriteWord(pkt, m.AnswerSerialNumber)
pkt = hex.WriteDoubleWord(pkt, m.MediaCount)
pkt = hex.WriteBytes(pkt, m.DeviceMedia.Encode())
pkt, err = writeHeader(m, pkt)
return pkt, err
}
func (m *Msg1205) GetHeader() *MsgHeader {
return m.Header
}
func (m *Msg1205) GenOutgoing(incoming JT808Msg) error {
in, ok := incoming.(*Msg9205)
if !ok {
return ErrGenOutgoingMsg
}
m.AnswerSerialNumber = in.Header.SerialNumber
m.Header = in.Header
m.Header.MsgID = 0x1205
return nil
}