mail archive of the barebox mailing list
 help / color / mirror / Atom feed
From: Peter Korsgaard <peter@korsgaard.com>
To: Sascha Hauer <s.hauer@pengutronix.de>
Cc: Barebox List <barebox@lists.infradead.org>
Subject: Re: [PATCH 1/4] Add Reliable Asynchronous Transfer Protocol
Date: Fri, 12 Jun 2015 14:05:04 +0200	[thread overview]
Message-ID: <87bngli13j.fsf@dell.be.48ers.dk> (raw)
In-Reply-To: <1434005650-28131-2-git-send-email-s.hauer@pengutronix.de> (Sascha Hauer's message of "Thu, 11 Jun 2015 08:54:07 +0200")

>>>>> "Sascha" == Sascha Hauer <s.hauer@pengutronix.de> writes:

 > This patch adds support for Reliable Asynchronous Transfer Protocol (RATP)
 > as described in RFC916.

 > Communication over RS232 is often unreliable as characters are lost or
 > misinterpreted. This protocol allows for a reliable packet based communication
 > over serial lines.

 > The implementation simply follows the state machine described in the RFC text.

Almost ;)

> +static int ratp_recv_pkt_data(struct ratp *ratp, void *data, uint8_t len,
 > +		int poll_timeout_ms)
 > +{
 > +	uint16_t crc_expect, crc_read;
 > +	int ret, i;
 > +
 > +	for (i = 0; i < len + 2; i++) {
 > +		ret = ratp_getc(ratp, data + i, poll_timeout_ms);
 > +		if (ret < 0)
 > +			return ret;
 > +	}
 > +
 > +	crc_expect = cyg_crc16(data, len);

Why crc16? RFC916 states that the checksum is the inverted 1s complement
16bit sum, E.G. like TCP/UDP/IP header checksums:

         Checksum Algorithm

            The checksum algorithm chosen is similar to that used by
            IP/TCP protocols [IP 81] [TCP 81].  This algorithm has shown
            itself to be both reliable and relatively easy to compute.
            The interested reader may refer to [TCP Checksum 78] for a
            more thorough discussion of its properties.

         The checksum algorithm is:

            SENDER

               The unsigned sum of the 16-bit words of the data portion
               of the packet is formed.  Any overflow is added into the
               lowest order bit.  This sum does not include the header
               portion of the packet.  For the purpose of building a
               packet for transmission the two octet checksum field is
               zero.  The sum formed is then bit complemented and
               inserted into the checksum field before transmission.

               If the total number of data octets is odd then the last
               octet is padded to the right (low order) with zeros to
               form a 16-bit word for checksum purposes.  This pad octet
               is not transmitted as part of the packet.

E.G. something like;

http://www.roman10.net/how-to-calculate-iptcpudp-checksumpart-2-implementation/

-- 
Bye, Peter Korsgaard

_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

  reply	other threads:[~2015-06-12 12:05 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-06-11  6:54 Add barebox remote control Sascha Hauer
2015-06-11  6:54 ` [PATCH 1/4] Add Reliable Asynchronous Transfer Protocol Sascha Hauer
2015-06-12 12:05   ` Peter Korsgaard [this message]
2015-06-15  5:12     ` Sascha Hauer
2015-06-15  7:19       ` Peter Korsgaard
2015-06-17  5:45         ` Sascha Hauer
2015-06-11  6:54 ` [PATCH 2/4] barebox remote control Sascha Hauer
2015-06-12 10:36   ` Peter Korsgaard
2015-06-15  4:51     ` Sascha Hauer
2015-06-11  6:54 ` [PATCH 3/4] include pyserial trunk Sascha Hauer
2015-06-11 15:48   ` Uwe Kleine-König
2015-06-11  6:54 ` [PATCH 4/4] host side for barebox remote control Sascha Hauer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87bngli13j.fsf@dell.be.48ers.dk \
    --to=peter@korsgaard.com \
    --cc=barebox@lists.infradead.org \
    --cc=s.hauer@pengutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox