109 #define KK_IHEX_VERSION "2019-08-07"
113 #ifdef IHEX_USE_STDBOOL
115 typedef bool ihex_bool_t;
117 typedef uint_fast8_t ihex_bool_t;
120 typedef uint_least32_t ihex_address_t;
121 typedef uint_least16_t ihex_segment_t;
122 typedef int ihex_count_t;
128 #ifndef IHEX_LINE_MAX_LENGTH
129 #define IHEX_LINE_MAX_LENGTH 255
133 IHEX_FLAG_ADDRESS_OVERFLOW = 0x80
135 typedef uint8_t ihex_flags_t;
138 ihex_address_t address;
139 #ifndef IHEX_DISABLE_SEGMENTS
140 ihex_segment_t segment;
145 uint8_t data[IHEX_LINE_MAX_LENGTH + 1];
148 enum ihex_record_type {
150 IHEX_END_OF_FILE_RECORD,
151 IHEX_EXTENDED_SEGMENT_ADDRESS_RECORD,
152 IHEX_START_SEGMENT_ADDRESS_RECORD,
153 IHEX_EXTENDED_LINEAR_ADDRESS_RECORD,
154 IHEX_START_LINEAR_ADDRESS_RECORD
156 typedef uint8_t ihex_record_type_t;
158 #ifndef IHEX_DISABLE_SEGMENTS
164 #define IHEX_LINEAR_ADDRESS(ihex) ((ihex)->address + (((ihex_address_t)((ihex)->segment)) << 4))
175 #define IHEX_BYTE_ADDRESS(ihex, byte_index) ((((ihex)->address + (byte_index)) & 0xFFFFU) + (((ihex_address_t)((ihex)->segment)) << 4))
179 #define IHEX_LINEAR_ADDRESS(ihex) ((ihex)->address)
180 #define IHEX_BYTE_ADDRESS(ihex, byte_index) ((ihex)->address + (byte_index))
185 #ifndef IHEX_NEWLINE_STRING
186 #define IHEX_NEWLINE_STRING "\n"
Definition: kk_ihex.h:137