forked from pboyd04/MotoGo
-
Notifications
You must be signed in to change notification settings - Fork 0
/
DevConnectionRequest.go
61 lines (54 loc) · 1.86 KB
/
DevConnectionRequest.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
50
51
52
53
54
55
56
57
58
59
60
61
package xnl
import (
"github.com/pboyd04/MotoGo/internal/util"
)
// DevConnectionRequestPacket a request to initialize a XNL connection
type DevConnectionRequestPacket struct {
Header Header
connection Address
connectionType byte
connectionIndex byte
key []byte
}
// NewDevConnectionRequestPacket create deregistration packet from params
func NewDevConnectionRequestPacket(dest Address, src Address, connectionAddr Address, connectionType byte, connectionIndex byte, key []byte) DevConnectionRequestPacket {
var pkt DevConnectionRequestPacket
pkt.Header.OpCode = DeviceConnectionRequest
pkt.Header.Protocol = ProtocolXNL
pkt.Header.Flags = 0x00
pkt.Header.Dest = dest
pkt.Header.Src = src
pkt.Header.TransactionID = 0
pkt.connection = connectionAddr
pkt.connectionType = connectionType
pkt.connectionIndex = connectionIndex
pkt.key = Encrypt(key)
return pkt
}
// NewDevConnectionRequestPacketByArray create an deregistration packet from data array
func NewDevConnectionRequestPacketByArray(data []byte) DevConnectionRequestPacket {
var p DevConnectionRequestPacket
p.Header.FromArray(data)
p.connection = Address(util.ParseUint16(data, 14))
p.connectionType = data[15]
p.connectionIndex = data[16]
p.key = data[17:]
return p
}
// GetHeader returns the header for the packet
func (p DevConnectionRequestPacket) GetHeader() Header {
return p.Header
}
// SetHeader returns the header for the packet
func (p DevConnectionRequestPacket) SetHeader(h Header) {
p.Header = h
}
// ToArray converts a packet to a byte array
func (p DevConnectionRequestPacket) ToArray() []byte {
payload := make([]byte, 4)
payload[0] = byte(p.connection >> 8)
payload[1] = byte(p.connection)
payload[2] = p.connectionType
payload[3] = p.connectionIndex
return p.Header.ToArray(append(payload, p.key...))
}