Fixed code smells
This commit is contained in:
54
protocol/meshtastic/packet.go
Normal file
54
protocol/meshtastic/packet.go
Normal file
@@ -0,0 +1,54 @@
|
||||
package meshtastic
|
||||
|
||||
import (
|
||||
"encoding/binary"
|
||||
"errors"
|
||||
)
|
||||
|
||||
const (
|
||||
minPacketSize = 4 + 4 + 4 + 1 + 1 + 1 + 1
|
||||
maxPayloadSize = 237
|
||||
)
|
||||
|
||||
var (
|
||||
// ErrInvalidPacket signals the source buffer does not contain a valid packet.
|
||||
ErrInvalidPacket = errors.New("meshtastic: invalid packet")
|
||||
)
|
||||
|
||||
type Packet struct {
|
||||
Destination NodeID
|
||||
Source NodeID
|
||||
ID uint32
|
||||
Flags uint8
|
||||
ChannelHash uint8
|
||||
NextHop uint8
|
||||
RelayNode uint8
|
||||
PayloadLength int
|
||||
Payload [maxPayloadSize]byte
|
||||
}
|
||||
|
||||
func (packet *Packet) Decode(data []byte) error {
|
||||
if len(data) < minPacketSize {
|
||||
return ErrInvalidPacket
|
||||
}
|
||||
|
||||
packet.Destination = parseNodeID(data[0:])
|
||||
packet.Source = parseNodeID(data[4:])
|
||||
packet.ID = binary.LittleEndian.Uint32(data[8:])
|
||||
packet.Flags = data[12]
|
||||
packet.ChannelHash = data[13]
|
||||
packet.NextHop = data[14]
|
||||
packet.RelayNode = data[15]
|
||||
packet.PayloadLength = len(data[16:])
|
||||
copy(packet.Payload[:], data[16:])
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (packet *Packet) HopLimit() int {
|
||||
return
|
||||
}
|
||||
|
||||
func parseNodeID(data []byte) NodeID {
|
||||
return NodeID(binary.LittleEndian.Uint32(data))
|
||||
}
|
||||
Reference in New Issue
Block a user