45 #define DEBUG_PARSE_DATA 0 46 #define PARSE_DATA_LEN 64 58 while (c ==
'\n' || c ==
'\r')
81 parse_data_length = 0;
82 parse_data_position = 0;
105 if (parse_data_position == parse_data_length)
109 while (start_code !=
':')
110 start_code = get_data();
112 data[0] = get_data();
113 data[1] = get_data();
115 byte_count =
httoi(data);
116 #if (DEBUG_PARSE_DATA) 117 Serial.print(F(
"Cnt: "));
118 Serial.println(byte_count, HEX);
121 Serial.println(F(
"Parse_data size too samll"));
125 data[0] = get_data();
126 data[1] = get_data();
127 data[2] = get_data();
128 data[3] = get_data();
130 #if (DEBUG_PARSE_DATA) 132 Serial.print(F(
"Addr: "));
133 Serial.println(address, HEX);
136 data[0] = get_data();
137 data[1] = get_data();
139 record_type =
httoi(data);
140 #if (DEBUG_PARSE_DATA) 141 Serial.print(F(
"Rec: "));
142 Serial.println(record_type, HEX);
144 if (record_type == 0)
146 for (i = 0; i < byte_count; i++)
148 data[0] = get_data();
149 data[1] = get_data();
151 parse_data[
i] =
httoi(data);
152 #if (DEBUG_PARSE_DATA) 153 Serial.print(F(
"Parse: "));
154 Serial.print(data[0], HEX);
155 Serial.print(F(
" "));
156 Serial.print(data[1], HEX);
157 Serial.print(F(
" "));
158 Serial.println(parse_data[i], HEX);
162 data[0] = get_data();
163 data[1] = get_data();
165 #if (DEBUG_PARSE_DATA) 166 int crc =
httoi(data);
167 Serial.print(F(
"Crc: "));
168 Serial.println(crc, HEX);
170 parse_data_position = 0;
171 parse_data_length = byte_count;
173 else if (record_type == 1)
177 parse_data[2] = 0x22;
179 parse_data_position = 0;
180 parse_data_length = 4;
183 #if (DEBUG_PARSE_DATA) 184 Serial.print(F(
"Byte "));
185 Serial.println(parse_data[parse_data_position], HEX);
187 return parse_data[parse_data_position++];
192 uint16_t in_position;
193 uint16_t out_position;
202 *(out_records+out_position) = record;
203 in_position += (*out_records[out_position]).Length;
206 if (in_position >= in_length)
220 header = (uint32_t)get_data() << 0 | (uint32_t)get_data() << 8 | (uint32_t)get_data() << 16 | (uint32_t)get_data() << 24;
227 Serial.println(F(
"record_data size too samll"));
228 Serial.print(F(
"requires "));
229 Serial.print(size, DEC);
230 Serial.print(F(
" has "));
232 Serial.print(F(
"Record Type 0x"));
240 record_data[0] = (header >> 0) & 0xFF;
241 record_data[1] = (header >> 8) & 0xFF;
242 record_data[2] = (header >> 16) & 0xFF;
243 record_data[3] = (header >> 24) & 0xFF;
247 for (pos = 0; pos < size - 4; pos++)
248 record_data[pos + 4] = get_data();
262 Serial.println(F(
"processWriteByteOptionalPEC(t_RECORD_PMBUS_WRITE_BYTE*);"));
265 Serial.println(F(
"processWriteWordOptionalPEC(t_RECORD_PMBUS_WRITE_WORD*);"));
268 Serial.println(F(
"processReadByteExpectOptionalPEC(t_RECORD_PMBUS_READ_BYTE_EXPECT*);"));
271 Serial.println(F(
"processReadWordExpectOptionalPEC(t_RECORD_PMBUS_READ_WORD_EXPECT*);"));
274 Serial.println(F(
"bufferNVMData(t_RECORD_NVM_DATA*);"));
277 Serial.println(F(
"processReadByteLoopMaskOptionalPEC(t_RECORD_PMBUS_READ_BYTE_LOOP_MASK*);"));
280 Serial.println(F(
"processReadWordLoopMaskOptionalPEC(t_RECORD_PMBUS_READ_WORD_LOOP_MASK*);"));
283 Serial.println(F(
"processPollReadByteUntilAckNoPEC(t_RECORD_PMBUS_POLL_READ_BYTE_UNTIL_ACK*);"));
286 Serial.println(F(
"processDelayMs(t_RECORD_DELAY_MS*);"));
289 Serial.println(F(
"processSendByteOptionalPEC(t_RECORD_PMBUS_SEND_BYTE*);"));
292 Serial.println(F(
"processWriteByteNoPEC(t_RECORD_PMBUS_WRITE_BYTE_NOPEC*);"));
295 Serial.println(F(
"processWriteWordNoPEC(t_RECORD_PMBUS_WRITE_WORD_NOPEC*);"));
298 Serial.println(F(
"processReadByteExpectNoPEC(t_RECORD_PMBUS_READ_BYTE_EXPECT_NOPEC*);"));
301 Serial.println(F(
"processReadWordExpectNoPEC(t_RECORD_PMBUS_READ_WORD_EXPECT_NOPEC*);"));
304 Serial.println(F(
"processReadByteLoopMaskNoPEC(t_RECORD_PMBUS_READ_BYTE_LOOP_MASK_NOPEC*);"));
307 Serial.println(F(
"processReadWordLoopMaskNoPEC(t_RECORD_PMBUS_READ_WORD_LOOP_MASK_NOPEC*);"));
310 Serial.println(F(
"processSendByteNoPEC(t_RECORD_PMBUS_SEND_BYTE_NOPEC*);"));
313 Serial.println(F(
"processEvent(t_RECORD_EVENT*);"));
316 Serial.println(F(
"processReadByteExpectMaskNoPEC(t_RECORD_PMBUS_READ_BYTE_EXPECT_MASK_NOPEC*);"));
319 Serial.println(F(
"processReadWordExpectMaskNoPEC(t_RECORD_PMBUS_READ_WORD_EXPECT_MASK_NOPEC*);"));
322 Serial.println(F(
"processVariableMetaData(t_RECORD_VARIABLE_META_DATA*);"));
325 Serial.println(F(
"modifyWordNoPEC(t_RECORD_PMBUS_MODIFY_WORD_NO_PEC*);"));
328 Serial.println(F(
"modifyByteNoPEC(t_RECORD_PMBUS_MODIFY_BYTE_NO_PEC*);"));
331 Serial.println(F(
"writeNvmData(t_RECORD_NVM_DATA*);"));
334 Serial.println(F(
"read_then_verifyNvmData(t_RECORD_NVM_DATA*);"));
337 Serial.println(F(
"modifyByteOptionalPEC(t_RECORD_PMBUS_MODIFY_BYTE*);"));
340 Serial.println(F(
"modifyWordOptionalPEC(t_RECORD_PMBUS_MODIFY_WORD*);"));
343 Serial.print(F(
"Unknown Record Type "));
struct tRecordHeader * pRecordHeaderLengthAndType
uint8_t detect_colons(uint8_t(*get_data)(void))
pRecordHeaderLengthAndType parse_record(uint8_t(*get_data)(void))
uint16_t parse_records(uint8_t *in_data, uint16_t in_length, tRecordHeaderLengthAndType **out_records)
Copyright 2018(c) Analog Devices, Inc.
uint8_t parse_hex(uint8_t(*get_data)(void))
union LT_union_int32_4bytes data
pRecordHeaderLengthAndType get_record(void)
static uint8_t parse_data[PARSE_DATA_LEN]
uint8_t * getRecordData()
Copyright 2018(c) Analog Devices, Inc.
static uint16_t parse_data_length
uint8_t ascii_to_hex(uint8_t ascii)
uint8_t filter_terminations(uint8_t(*get_data)(void))
uint16_t httoi(char *value)
static uint8_t record_data[MAX_RECORD_SIZE]
pRecordHeaderLengthAndType print_record(pRecordHeaderLengthAndType(*get_record)(void))
static uint16_t parse_data_position