diff options
| author | Bdale Garbee <bdale@gag.com> | 2013-12-19 01:38:40 -0700 | 
|---|---|---|
| committer | Bdale Garbee <bdale@gag.com> | 2013-12-19 01:38:40 -0700 | 
| commit | 575bbaf976c5840fd0e308549c45a466fdec1352 (patch) | |
| tree | 11bfb498348bf7687bffc24699c4b1a998988ee4 /ao-tools/lib/ao-hex.h | |
| parent | b825116df173b77e2cab217a7b76112c742f9279 (diff) | |
| parent | bc3610d8cecbfed40c62d4dcb93fc9a4d2a7c9e3 (diff) | |
Merge branch 'branch-1.3' into debian
Conflicts:
	ChangeLog
	altoslib/AltosRecordMM.java
	altosui/Makefile.am
	altosui/altos-windows.nsi.in
	configure.ac
	debian/changelog
	debian/control
	doc/Makefile
	doc/altusmetrum.xsl
	doc/release-notes-1.2.1.xsl
	doc/release-notes-1.2.xsl
Diffstat (limited to 'ao-tools/lib/ao-hex.h')
| -rw-r--r-- | ao-tools/lib/ao-hex.h | 82 | 
1 files changed, 82 insertions, 0 deletions
diff --git a/ao-tools/lib/ao-hex.h b/ao-tools/lib/ao-hex.h new file mode 100644 index 00000000..98497460 --- /dev/null +++ b/ao-tools/lib/ao-hex.h @@ -0,0 +1,82 @@ +/* + * Copyright © 2013 Keith Packard <keithp@keithp.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + */ + +#ifndef _AO_HEX_H_ +#define _AO_HEX_H_ + +#include <stdint.h> +#include <stdbool.h> +#include <stdio.h> + +#define AO_HEX_RECORD_NORMAL			0x00 +#define AO_HEX_RECORD_EOF			0x01 +#define AO_HEX_RECORD_EXTENDED_ADDRESS_4	0x02 +#define AO_HEX_RECORD_EXTENDED_ADDRESS_8	0x04 +#define AO_HEX_RECORD_SYMBOL			0xfe + +/* Intel hex file format data + */ +struct ao_hex_record { +	uint8_t	length; +	uint16_t address; +	uint8_t type; +	uint8_t checksum; +	uint8_t data[0]; +}; + +struct ao_hex_file { +	int			nrecord; +	struct ao_hex_record	*records[0]; +}; + +struct ao_hex_image { +	uint32_t	address; +	uint32_t	length; +	uint8_t		data[0]; +}; + +struct ao_sym { +	unsigned	addr; +	unsigned	default_addr; +	char		*name; +	bool		required; +	bool		found; +}; + +struct ao_hex_file * +ao_hex_file_read(FILE *file, char *name); + +void +ao_hex_file_free(struct ao_hex_file *hex); + +struct ao_hex_image * +ao_hex_image_create(struct ao_hex_file *hex); + +void +ao_hex_image_free(struct ao_hex_image *image); + +struct ao_hex_image * +ao_hex_load(char *filename, struct ao_sym **symbols, int *num_symbols); + +int +ao_hex_image_equal(struct ao_hex_image *a, struct ao_hex_image *b); + +bool +ao_hex_save(FILE *file, struct ao_hex_image *image, +	    struct ao_sym *symbols, int num_symbols); + +#endif /* _AO_HEX_H_ */  | 
