71 char tmp = buf[
index];
72 int index2 = (start +
index) % len;
74 while (index2 != offset)
77 buf[
index] = buf[index2];
81 index2 = (start +
index) % len;
109 return (uint8_t *)pos >= (uint8_t *)
this + firstValidByte && (uint8_t *)pos + (size - 1) <= (uint8_t *)
this + lastValidByte;
126 uint8_t *
data = (uint8_t *) malloc(size);
128 Serial.print(F(
"bad malloc."));
133 uint8_t block_address = data[0];
135 rotate(&data[72], block_address - 71, 167);
137 memmove(data, data+1, size-1);
139 for (
int i = 71;
i < 71 + 83;
i++)
141 uint8_t d = data[237-(
i-71)];
142 data[237-(
i-71)] = data[
i];
198 printAllLoops(printer);
205 void LT_2974FaultLog::printTitle(Print *printer)
207 printer->print(F(
"LTC2974 Log Data\n"));
210 void LT_2974FaultLog::printTime(Print *printer)
213 snprintf_P(buffer,
FILE_TEXT_LINE_MAX, PSTR(
"Fault Time 0x%02x%02x%02x%02x%02x%02x\n"), time[5], time[4], time[3], time[2], time[1], time[0]);
214 printer->print(buffer);
216 printer->println(F(
" Ticks (200us each)"));
219 void LT_2974FaultLog::printPeaks(Print *printer)
247 printer->println(F(
"\nPeak Values and Fast Status:"));
248 printer->println(F(
"--------"));
250 printFastChannel(0, printer);
252 float vin_max, vin_min;
255 printer->print(F(
"Vin: Min: "));
256 printer->print(vin_min, 6);
257 printer->print(F(
", Peak: "));
258 printer->println(vin_max, 6);
261 printFastChannel(1, printer);
262 printFastChannel(2, printer);
263 printFastChannel(3, printer);
268 delete [] chanStatuses;
271 void LT_2974FaultLog::printFastChannel(uint8_t
index, Print *printer)
273 float vout_peak, vout_min, iout_peak, iout_min, temp_peak, temp_min;
277 printer->print(F(
"Vout"));
278 printer->print(
index);
279 printer->print(F(
": Min: "));
280 printer->print(vout_min, 6);
281 printer->print(F(
", Peak: "));
282 printer->println(vout_peak, 6);
285 printer->print(F(
"Temp"));
286 printer->print(
index);
287 printer->print(F(
": Min: "));
288 printer->print(temp_min, 6);
289 printer->print(F(
", Peak: "));
290 printer->println(temp_peak, 6);
293 printer->print(F(
"Iout"));
294 printer->print(
index);
295 printer->print(F(
": Min: "));
296 printer->print(iout_min, 6);
297 printer->print(F(
", Peak: "));
298 printer->println(iout_peak, 6);
300 printer->print(F(
"Fast Status"));
301 printer->println(
index);
304 printer->print(buffer);
307 printer->print(buffer);
310 printer->println(buffer);
313 void LT_2974FaultLog::printAllLoops(Print *printer)
320 printer->println(F(
"Fault Log Loops Follow:"));
321 printer->println(F(
"(most recent data first)"));
325 printLoop(
index, printer);
334 void LT_2974FaultLog::printLoop(uint8_t
index, Print *printer)
336 printer->println(F(
"-------"));
337 printer->print(F(
"Loop: "));
338 printer->println(
index);
339 printer->println(F(
"-------"));
364 printLoopChannel(3, printer);
365 printLoopChannel(2, printer);
366 printLoopChannel(1, printer);
370 printer->println(F(
"VIN:"));
373 printer->print(buffer);
378 printer->print(F(
" READ_VIN: "));
379 printer->print(val, 6);
380 printer->println(F(
" V"));
383 printLoopChannel(0, printer);
387 printer->println(F(
"Chip Temp:"));
389 printer->print(F(
" CHIP TEMP: "));
390 printer->print(val, 6);
391 printer->println(F(
" C"));
397 void LT_2974FaultLog::printLoopChannel(uint8_t
index, Print *printer)
404 printer->print(F(
"CHAN"));
405 printer->print(index);
406 printer->println(F(
":"));
408 printer->print(F(
" READ POUT: "));
409 printer->print(val, 6);
410 printer->println(F(
" W "));
415 printer->print(F(
" READ IOUT: "));
416 printer->print(val, 6);
417 printer->println(F(
" A "));
423 printer->print(buffer);
429 printer->print(buffer);
434 printer->print(F(
" READ TEMP: "));
435 printer->print(val, 6);
436 printer->println(F(
" C"));
442 printer->print(buffer);
448 printer->print(buffer);
453 printer->print(F(
" READ_VOUT: "));
454 printer->print(val, 6);
455 printer->println(F(
" V"));
struct Peak16Words vout3_peaks
struct Peak5_11Words iout1_peaks
struct ChanStatus chan_status1
struct ChanStatus chan_status3
struct PoutData pout_data0
struct FaultLogTimeStamp shared_time
uint16_t getLin5_11WordReverseVal(Lin5_11WordReverse value)
uint16_t getBinarySize()
Get size of binary data.
void dumpBin(Print *printer, uint8_t *log, uint8_t size)
struct RawByte status_vin
FaultLogLtc2974 * faultLog2974
struct RawByte status_temp
struct Peak16Words vout2_peaks
float lin16_to_float(lin16_t lin16_mant, lin16m_t vout_mode)
String status(void)
Returns a descriptive string based on status of pins.
struct IoutData iout_data0
void dumpBinary(Print *printer=0)
Dumps binary of the fault log to a Print inheriting object, or Serial if none specified.
struct FaultLogPeaksLtc2974 peaks
virtual void sendByte(uint8_t address, uint8_t command)=0
SMBus send byte command.
struct IoutData iout_data2
struct TempData temp_data3
struct Lin5_11WordReverse read_iout
struct IoutData iout_data1
uint16_t getLin5_11WordVal(Lin5_11Word value)
struct RawByte status_iout
uint8_t * getBinary()
Get binary of the fault log or NULL if no log.
float lin11_to_float(lin11_t xin)
struct Peak5_11Words temp1_peaks
struct Peak16Words vout0_peaks
#define FILE_TEXT_LINE_MAX
uint8_t telemetryData[184]
struct RawByte status_vout
struct ChanStatus chan_status2
struct VoutData vout_data1
union LT_union_int32_4bytes data
struct Peak5_11Words iout2_peaks
struct IoutData iout_data3
struct Peak5_11Words temp2_peaks
uint16_t getLin16WordVal(Lin16Word value)
struct VoutData vout_data3
struct VoutData vout_data2
struct FaultLogPreambleLtc2974 preamble
struct Peak5_11Words iout0_peaks
void getNvmBlock(uint8_t address, uint16_t offset, uint16_t numWords, uint8_t command, uint8_t *data)
virtual uint8_t readByte(uint8_t address, uint8_t command)=0
SMBus read byte command.
struct PoutData pout_data3
void release()
Frees the memory reserved for the fault log.
struct Lin16WordReverse read_vout
void read(uint8_t address)
Reads the fault log from the specified address, reserves memory to hold the data. ...
bool isValidData(void *pos, uint8_t size=2)
struct RawByte status_mfr
uint64_t getSharedTime200us(FaultLogTimeStamp time_stamp)
struct VoutData vout_data0
void print(Print *printer=0)
Pretty prints this part's fault log to a Print inheriting object, or Serial if none specified...
struct TempData temp_data0
struct PoutData pout_data1
struct Peak16Words vout1_peaks
virtual uint8_t readBlock(uint8_t address, uint8_t command, uint8_t *block, uint16_t block_size)=0
SMBus read block command.
struct Peak5_11Words temp3_peaks
struct Lin5_11WordReverse vin
struct Lin5_11WordReverse read_temp2
struct Lin5_11WordReverse read_pout
struct FaultLogReadStatusLtc2974 fault_log_status
uint8_t getRawByteVal(RawByte value)
void rotate(uint8_t *buf, int start, int len)
LTC SMBus Support: Implementation for a LTC2974 Fault Log.
struct Peak5_11Words iout3_peaks
uint16_t getLin16WordReverseVal(Lin16WordReverse value)
struct PoutData pout_data2
#define MFR_FAULT_LOG_RESTORE
struct ChanStatus chan_status0
struct FaultLogReadLoopLtc2974 * loops
LT_2974FaultLog(LT_PMBus *pmbus)
Constructor.
struct Peak5_11Words vin_peaks
struct TempData temp_data1
struct Peak5_11Words temp0_peaks
struct TempData temp_data2
struct Lin5_11WordReverse read_temp1