cleanup api frame comments
This commit is contained in:
parent
6a5cda8c66
commit
4340c610fd
|
@ -14,12 +14,6 @@ import (
|
||||||
"io"
|
"io"
|
||||||
)
|
)
|
||||||
|
|
||||||
// the frames have an outer shell - we will make a function that takes
|
|
||||||
// an inner frame element and wraps it in the appropriate headers.
|
|
||||||
|
|
||||||
// first, we should make it take the frame directly, so we make an interface
|
|
||||||
// that represents "framable" things. note that bytes.Buffer also fulfils this.
|
|
||||||
|
|
||||||
// Frameable is an object that can be sent in an XBee Frame. An XBee Frame
|
// Frameable is an object that can be sent in an XBee Frame. An XBee Frame
|
||||||
// consists of a start delimiter, length, the payload, and a checksum.
|
// consists of a start delimiter, length, the payload, and a checksum.
|
||||||
type Frameable interface {
|
type Frameable interface {
|
||||||
|
@ -62,6 +56,8 @@ func writeXBeeFrame(w io.Writer, data []byte) (n int, err error) {
|
||||||
// xbee uses the first byte of the "frame data" as the API identifier or command.
|
// xbee uses the first byte of the "frame data" as the API identifier or command.
|
||||||
|
|
||||||
//go:generate stringer -output=api_frame_cmd.go -type xbeeCmd
|
//go:generate stringer -output=api_frame_cmd.go -type xbeeCmd
|
||||||
|
|
||||||
|
// XBeeCmd is the frame command type.
|
||||||
type XBeeCmd byte
|
type XBeeCmd byte
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -86,12 +82,10 @@ const (
|
||||||
RemoteCmdRespType XBeeCmd = 0x97 // Remote Command Response
|
RemoteCmdRespType XBeeCmd = 0x97 // Remote Command Response
|
||||||
)
|
)
|
||||||
|
|
||||||
// AT commands are hard, so let's write out all the major ones here
|
|
||||||
|
|
||||||
// Now we will implement receiving packets from a character stream.
|
// Now we will implement receiving packets from a character stream.
|
||||||
// we first need to make a thing that produces frames from a stream using a scanner.
|
// we first need to make a thing that produces frames from a stream using a scanner.
|
||||||
|
|
||||||
// this is a split function for bufio.scanner. It makes it easier to handle the FSM
|
// xbeeFrameSplit is a split function for bufio.scanner. It makes it easier to handle the FSM
|
||||||
// for extracting data from a stream. For the Xbee, this means that we must
|
// for extracting data from a stream. For the Xbee, this means that we must
|
||||||
// find the magic start character, (check that it's escaped), read the length,
|
// find the magic start character, (check that it's escaped), read the length,
|
||||||
// and then ensure we have enough length to finish the token, requesting more data
|
// and then ensure we have enough length to finish the token, requesting more data
|
||||||
|
@ -121,8 +115,7 @@ func xbeeFrameSplit(data []byte, atEOF bool) (advance int, token []byte, err err
|
||||||
// data that came before the start, but not return a token.
|
// data that came before the start, but not return a token.
|
||||||
return startIdx, nil, nil
|
return startIdx, nil, nil
|
||||||
}
|
}
|
||||||
// there is enough data to pull a frame.
|
// there is enough data to pull a frame, so return it.
|
||||||
// todo: check checksum here? we can return an error.
|
|
||||||
return startIdx + frameLen, data[startIdx : startIdx+frameLen], nil
|
return startIdx + frameLen, data[startIdx : startIdx+frameLen], nil
|
||||||
}
|
}
|
||||||
// we didn't find a start character in our data, so request more. trash everythign given to us
|
// we didn't find a start character in our data, so request more. trash everythign given to us
|
||||||
|
|
Loading…
Reference in a new issue