cleanup api frame comments

This commit is contained in:
saji 2023-05-04 14:06:05 -05:00
parent 6a5cda8c66
commit 4340c610fd

View file

@ -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