47 lines
978 B
Go
47 lines
978 B
Go
package peripheral
|
|
|
|
import (
|
|
"encoding/binary"
|
|
"fmt"
|
|
)
|
|
|
|
type IdentificationPacket struct {
|
|
StartMarker byte
|
|
DeviceID uint8
|
|
PktType PacketType
|
|
Name [32]byte
|
|
EndMarker byte
|
|
}
|
|
|
|
func (pkt *IdentificationPacket) Read(wt *WalkieTalkie) error {
|
|
err := wt.ReadFramedData(binary.Size(IdentificationPacket{}), pkt)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
if !pkt.Validate() {
|
|
return fmt.Errorf("invalid data")
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (pkt *IdentificationPacket) Validate() bool {
|
|
fmt.Println("↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓")
|
|
fmt.Println(pkt.StartMarker)
|
|
fmt.Println(pkt.PktType.String())
|
|
fmt.Println(string(pkt.Name[:]))
|
|
fmt.Println(pkt.EndMarker)
|
|
fmt.Println("↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑")
|
|
|
|
// Change this to return an error and add a validation against available
|
|
// device ids
|
|
|
|
if pkt.StartMarker != startOfText ||
|
|
pkt.EndMarker != endOfText {
|
|
return false
|
|
}
|
|
|
|
return true
|
|
}
|