Code for autonomous rover for Sparkfun AVC. DataBus won 3rd in 2012 and the same code was used on Troubled Child, a 1986 Jeep Grand Wagoneer to win 1st in 2014.
Dependencies: mbed Watchdog SDFileSystem DigoleSerialDisp
Diff: logging/b64.cpp
- Revision:
- 2:fbc6e3cf3ed8
- Parent:
- 1:cb84b477886c
- Child:
- 3:42f3821c4e54
--- a/logging/b64.cpp Tue May 28 13:58:35 2013 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,140 +0,0 @@ -/********************************************************************* - -MODULE NAME: b64.c - -AUTHOR: Bob Trower 08/04/01, Michael Shimniok 04/04/13 - -COPYRIGHT: Copyright (c) Trantor Standard Systems Inc., 2001 - -NOTES: This source code may be used as you wish, subject to - the MIT license. See the LICENCE section below. - - Canonical source should be at: - http://base64.sourceforge.net - -DESCRIPTION: Implements Base64 Content-Transfer-Encoding standard - described in RFC1113 (http://www.faqs.org/rfcs/rfc1113.html). - - Groups of 3 binary bytes from a binary stream are coded as - groups of 4 printable bytes in a text stream. -*********************************************************************/ - -#include <stdio.h> -#include <stdlib.h> -#include "b64.h" - -/** - * Translation Table as described in RFC1113 - */ -static const char cb64[]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - -/** - * Translation Table to decode (created by author) - */ -//static const char cd64[]="|$$$}rstuvwxyz{$$$$$$$>?@ABCDEFGHIJKLMNOPQRSTUVW$$$$$$XYZ[\\]^_`abcdefghijklmnopq"; - -/** - * returnable errors - * - * Error codes returned to the operating system. - * - */ -#define B64_SYNTAX_ERROR 1 -#define B64_FILE_ERROR 2 -#define B64_FILE_IO_ERROR 3 -#define B64_ERROR_OUT_CLOSE 4 -#define B64_LINE_SIZE_TO_MIN 5 -#define B64_SYNTAX_TOOMANYARGS 6 - -/** - * encodeblock - * - * encode 3 8-bit binary bytes as 4 '6-bit' characters - */ -void encodeblock( const unsigned char *in, unsigned char *out, const int len ) -{ - out[0] = (unsigned char) cb64[ (int)(in[0] >> 2) ]; - out[1] = (unsigned char) cb64[ (int)(((in[0] & 0x03) << 4) | ((in[1] & 0xf0) >> 4)) ]; - out[2] = (unsigned char) (len > 1 ? cb64[ (int)(((in[1] & 0x0f) << 2) | ((in[2] & 0xc0) >> 6)) ] : '='); - out[3] = (unsigned char) (len > 2 ? cb64[ (int)(in[2] & 0x3f) ] : '='); -} - -/** - * encodeblock - * - * encode a buffer of binary data into lines of '6-bit' characters - */ -int encode( const unsigned char *sin, const int length, unsigned char *sout, const int linesize ) -{ - unsigned char in[3]; - int i; - int j; // j is the sin position index - int len, blocksout = 0; - int retcode = 0; - - in[0] = 0; - j = 0; - while( j < length ) { - // Get a block of three bytes to encode - // If there's < 3 bytes left in the string, - // pad with '\0' - len = 0; - for (i=0; i < 3; i++, j++) { - if (j < length) { - len++; - in[i] = sin[j]; - } else { - in[i] = '\0'; - } - } - //printf("2. in=%02x %02x %02x j=%u length=%u\n", in[0], in[1], in[2], j, length); - encodeblock( in, sout, len ); - //printf("4. sout=%c%c%c%c\n", sout[0], sout[1], sout[2], sout[3]); - sout += 4; - blocksout++; - if( linesize && blocksout >= (linesize/4) ) { - *sout++ = '\n'; - blocksout = 0; - } - } - *sout = '\0'; - return( retcode ); -} - -/****************************************************************************** -LICENCE: Copyright (c) 2001 Bob Trower, Trantor Standard Systems Inc. - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated - documentation files (the "Software"), to deal in the - Software without restriction, including without limitation - the rights to use, copy, modify, merge, publish, distribute, - sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, - subject to the following conditions: - - The above copyright notice and this permission notice shall - be included in all copies or substantial portions of the - Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY - KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS - OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR - OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -VERSION HISTORY: - Bob Trower 08/04/01 -- Create Version 0.00.00B - Bob Trower 08/17/01 -- Correct documentation, messages. - -- Correct help for linesize syntax. - -- Force error on too many arguments. - Bob Trower 08/19/01 -- Add sourceforge.net reference to - help screen prior to release. - Bob Trower 10/22/04 -- Cosmetics for package/release. - Bob Trower 02/28/08 -- More Cosmetics for package/release. - Bob Trower 02/14/11 -- Cast altered to fix warning in VS6. - -*****************************************************************************/