/*	Copyright Motorola, Inc. 1993, 1994
	ALL RIGHTS RESERVED

	You are hereby granted a copyright license to use, modify, and
	distribute the SOFTWARE so long as this entire notice is retained
	without alteration in any modified and/or redistributed versions,
	and that such modified versions are clearly identified as such.
	No licenses are granted by implication, estoppel or otherwise under
	any patents or trademarks of Motorola, Inc.

	The SOFTWARE is provided on an "AS IS" basis and without warranty.
	To the maximum extent permitted by applicable law, MOTOROLA DISCLAIMS
	ALL WARRANTIES WHETHER EXPRESS OR IMPLIED, INCLUDING IMPLIED
	WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR
	PURPOSE AND ANY WARRANTY AGAINST INFRINGEMENT WITH
	REGARD TO THE SOFTWARE (INCLUDING ANY MODIFIED VERSIONS
	THEREOF) AND ANY ACCOMPANYING WRITTEN MATERIALS.

	To the maximum extent permitted by applicable law, IN NO EVENT SHALL
	MOTOROLA BE LIABLE FOR ANY DAMAGES WHATSOEVER
	(INCLUDING WITHOUT LIMITATION, DAMAGES FOR LOSS OF
	BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS
	INFORMATION, OR OTHER PECUNIARY LOSS) ARISING OF THE USE OR
	INABILITY TO USE THE SOFTWARE.   Motorola assumes no responsibility
	for the maintenance and support of the SOFTWARE.

*/


#include "config.h"

/*
	 1         2         3         4         5         6         7         8
01234567890123456789012345678901234567890123456789012345678901234567890123456789
*/
/* List define statements here */

/* These are for all the toolboxes and functions to use. These will help
to standardize the error handling in the current project */

				/* this is the "data type" for the error
				messages in the system */
#define STATUS unsigned int

				/* this is a success status code */
#define SUCCESS 1

				/* likewise this is failure */
#define FAILURE 0

#define NUM_ERRORS 47

/* This first section of "defines" are for error codes ONLY.  The called
   routine will return one of these error codes to the caller.  If the final
   returned code is "VALID", then everything is a-okay.  However, if one
   of the functions returns a non-valid status, that error code should be
   propogated back to all the callers.  At the end, the last caller will
   call an error_processing function, and send in the status which was
   returned.  It's up to the error_processing function to determine which
   error occured (as indicated by the status), and print an appropriate
   message back to the user.
*/
/*----------------------------------------------------------------------*/
/* these are specifically for the parser routines			*/

#define UNKNOWN_COMMAND		0xfb00 /* "unrecognized command " */
#define UNKNOWN_REGISTER	0xfb01 /* "unknown register "*/
#define ILLEGAL_RD_STAGE	0xfb02 /* cannot specify reg. family in range*/
#define ILLEGAL_REG_FAMILY	0xfb03 /* "cannot specify a range of special
					or miscellaneous registers"*/
#define RANGE_CROSS_FAMILY	0xfb04 /* "cannot specify a range across
					register families" */
#define UNIMPLEMENTED_STAGE	0xfb05 /* invalid rd or rmm parameter format */
#define REG_NOT_WRITEABLE	0xfb06 /* "unknown operator in arguements"*/
#define INVALID_FILENAME	0xfb07 /* "invalid download filename" */
#define INVALID_BAUD_RATE	0xfb08	/* invalid baud rate from sb command */
#define UNSUPPORTED_REGISTER	0xfb09	/* Special register is not supported */
#define FOR_BOARD_ONLY		0xfb0a  /* "Not available for Unix." */


/*----------------------------------------------------------------------*/
/* these are for the error checking toolbox				*/

#define INVALID			0xfd00 /* NOT valid */
#define VALID			0xfd01 /* valid */

					/* This error is found in the fcn:
					is_right_size_input() to indicate
					that the input was not 8 characters
					long.  */
#define INVALID_SIZE		0xfd02

					/* This error is found in the fcn:
					is_valid_address_range() to indicate
					that the address given falls outside
					of valid memory defined by MEM_START
					to MEM_END.
					*/
#define OUT_OF_BOUNDS_ADDRESS	0xfd03

					/* This error is found in the fcn:
					is_valid_hex_input() to indicate that
					one of more of the characters entered
					are not valid hex characters.  Valid
					hex characters are 0-9, A-F, a-f.
					*/
#define INVALID_HEX_INPUT	0xfd04

					/* This error is found in the fcn:
					is_valid_register_number() to indicate
					that a given register does not exist.
					*/
#define REG_NOT_READABLE	0xfd05

					/* This error is found in the fcn:
					is_word_aligned_address() to indicate
					that the given address is not word-
					aligned.  A word-aligned address ends
					in 0x0,0x4,0x8,0xc.
					*/
#define	NOT_WORD_ALIGNED	0xfd07

					/* This error is found in the fcn:
					is_valid_address_range() to indicate
					that the starting address is greater
					than the ending address.
					*/
#define REVERSED_ADDRESS	0xfd08

					/* this error tells us that the address
					specified as the destination is within
					the source addresses  */
#define RANGE_OVERLAP		0xfd09


#define	ERROR			0xfd0a /* An error occured */
#define INVALID_PARAM		0xfd0b /* "invalid input parameter " */


#define INVALID_FLAG		0xfd0c	/* invalid flag */

/*----------------------------------------------------------------------*/
/* these are for the getarg toolbox					*/

#define INVALID_NUMBER_ARGS	0xFE00 /* invalid number of commd arguements */
#define UNKNOWN_PARAMETER	0xFE01 /* "unknown type of parameter "*/


/*----------------------------------------------------------------------*/
/* these are for the tokenizer toolbox					*/

#define ILLEGAL_CHARACTER	0xFF00 /* unrecognized char. in input stream*/
#define TTL_NOT_SORTED		0xFF01 /* token translation list not sorted */
#define TTL_NOT_DEFINED		0xFF02 /* token translation list not assigned*/
#define INVALID_STRING		0xFF03 /* unable to extract string from input */
#define BUFFER_EMPTY		0xFF04 /* "input buffer is empty" */
#define INVALID_MODE		0xFF05 /* input buf is in an unrecognized mode*/
#define TOK_INTERNAL_ERROR	0xFF06 /* "internal tokenizer error" */
#define TOO_MANY_IBS		0xFF07 /* "too many open input buffers" */
#define NO_OPEN_IBS		0xFF08 /* "no open input buffers" */


/* these are for the read from screen toolbox */

#define RESERVED_WORD		0xFC00 /* used a reserved word as an arguement*/


/* these are for the breakpoint routines */

#define FULL_BPDS		0xFA00 /* breakpoint data structure is full */


/* THESE are for the downloader */

#define NOT_IN_S_RECORD_FORMAT	0xf900 /* "not in S-Record Format" */
#define UNREC_RECORD_TYPE	0xf901 /* "unrecognized record type" */
#define CONVERSION_ERROR	0xf902 /* "ascii to int conversion error" */
#define INVALID_MEMORY		0xf903 /* "bad s-record memory address " */


/* these are for the compression and decompression stuff */

#define COMP_UNK_CHARACTER	0xf800 /* "unknown compressed character " */

#define COMP_UNKNOWN_STATE	0xf801 /* "unknown binary state" */

#define NOT_IN_COMPRESSED_FORMAT 0xf802 /* not in compressed S-Record format */


/* these are for the DUART handling things */

					/* "unrecognized serial port configuration" */
#define UNKNOWN_PORT_STATE	0xf700


/* these are for the register toolbox */

					/* "cannot find register in special
					 purpose register file " */
#define SPR_NOT_FOUND		0xf600


/* these are for the duart specific stuff */

					/* "transparent mode needs access to
						two serial ports" */
#define TM_NEEDS_BOTH_PORTS	0xf500


/*----------------------------------------------------------------------*/
/* these are specifically for the flash routines			*/
#define FLASH_ERROR		0xf100		/* general flash error */