79 return (uint8_t *)pos >= (uint8_t *)
this + firstValidByte && (uint8_t *)pos + (size - 1) <= (uint8_t *)
this + lastValidByte;
96 uint8_t *
data = (uint8_t *) malloc(size);
98 Serial.print(F(
"bad malloc."));
154 printAllLoops(printer);
161 void LT_2975FaultLog::printTitle(Print *printer)
163 printer->print(F(
"LTC2975 Log Data\n"));
166 void LT_2975FaultLog::printTime(Print *printer)
169 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]);
170 printer->print(buffer);
172 printer->println(F(
" Ticks (200us each)"));
175 void LT_2975FaultLog::printPeaks(Print *printer)
203 printer->println(F(
"\nPeak Values and Fast Status:"));
204 printer->println(F(
"--------"));
206 printFastChannel(0, printer);
208 float vin_max, vin_min;
211 printer->print(F(
"Vin: Min: "));
212 printer->print(vin_min, 6);
213 printer->print(F(
", Peak: "));
214 printer->println(vin_max, 6);
216 float iin_max, iin_min;
219 printer->print(F(
"Iin: Min: "));
220 printer->print(iin_min, 6);
221 printer->print(F(
", Peak: "));
222 printer->println(iin_max, 6);
225 float pin_max, pin_min;
228 printer->print(F(
"Pin: Min: "));
229 printer->print(pin_min, 6);
230 printer->print(F(
", Peak: "));
231 printer->println(pin_max, 6);
234 printFastChannel(1, printer);
235 printFastChannel(2, printer);
236 printFastChannel(3, printer);
241 delete [] chanStatuses;
244 void LT_2975FaultLog::printFastChannel(uint8_t
index, Print *printer)
246 float vout_peak, vout_min, iout_peak, iout_min, temp_peak, temp_min;
250 printer->print(F(
"Vout"));
251 printer->print(
index);
252 printer->print(F(
": Min: "));
253 printer->print(vout_min, 6);
254 printer->print(F(
", Peak: "));
255 printer->println(vout_peak, 6);
258 printer->print(F(
"Temp"));
259 printer->print(
index);
260 printer->print(F(
": Min: "));
261 printer->print(temp_min, 6);
262 printer->print(F(
", Peak: "));
263 printer->println(temp_peak, 6);
266 printer->print(F(
"Iout"));
267 printer->print(
index);
268 printer->print(F(
": Min: "));
269 printer->print(iout_min, 6);
270 printer->print(F(
", Peak: "));
271 printer->println(iout_peak, 6);
273 printer->print(F(
"Fast Status"));
274 printer->println(
index);
277 printer->print(buffer);
280 printer->print(buffer);
283 printer->println(buffer);
286 void LT_2975FaultLog::printAllLoops(Print *printer)
293 printer->println(F(
"Fault Log Loops Follow:"));
294 printer->println(F(
"(most recent data first)"));
298 printLoop(
index, printer);
307 void LT_2975FaultLog::printLoop(uint8_t
index, Print *printer)
309 printer->println(F(
"-------"));
310 printer->print(F(
"Loop: "));
311 printer->println(
index);
312 printer->println(F(
"-------"));
337 printLoopChannel(3, printer);
338 printLoopChannel(2, printer);
339 printLoopChannel(1, printer);
343 printer->println(F(
"VIN:"));
346 printer->print(buffer);
351 printer->print(F(
" READ_VIN: "));
352 printer->print(val, 6);
353 printer->println(F(
" V"));
358 printer->print(F(
" READ_IIN: "));
359 printer->print(val, 6);
360 printer->println(F(
" A"));
365 printer->print(F(
" READ_PIN: "));
366 printer->print(val, 6);
367 printer->println(F(
" W"));
370 printLoopChannel(0, printer);
374 printer->println(F(
"Chip Temp:"));
376 printer->print(F(
" CHIP TEMP: "));
377 printer->print(val, 6);
378 printer->println(F(
" C"));
384 void LT_2975FaultLog::printLoopChannel(uint8_t
index, Print *printer)
391 printer->print(F(
"CHAN"));
392 printer->print(index);
393 printer->println(F(
":"));
395 printer->print(F(
" READ POUT: "));
396 printer->print(val, 6);
397 printer->println(F(
" W "));
402 printer->print(F(
" READ IOUT: "));
403 printer->print(val, 6);
404 printer->println(F(
" A "));
410 printer->print(buffer);
416 printer->print(buffer);
421 printer->print(F(
" READ TEMP: "));
422 printer->print(val, 6);
423 printer->println(F(
" C"));
429 printer->print(buffer);
435 printer->print(buffer);
440 printer->print(F(
" READ_VOUT: "));
441 printer->print(val, 6);
442 printer->println(F(
" V"));
struct Peak5_11Words temp2_peaks
struct PoutData pout_data0
struct VoutData vout_data3
uint16_t getLin5_11WordReverseVal(Lin5_11WordReverse value)
void dumpBin(Print *printer, uint8_t *log, uint8_t size)
struct IoutData iout_data1
struct VoutData vout_data2
struct IoutData iout_data3
struct Lin5_11WordReverse vin
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 RawByte status_vout
struct PoutData pout_data3
uint16_t getBinarySize()
Get size of binary data.
struct Lin5_11WordReverse read_iin
FaultLogLtc2975 * faultLog2975
void release()
Frees the memory reserved for the fault log.
virtual void sendByte(uint8_t address, uint8_t command)=0
SMBus send byte command.
struct Peak5_11Words iout1_peaks
struct IoutData iout_data0
uint16_t getLin5_11WordVal(Lin5_11Word value)
bool isValidData(void *pos, uint8_t size=2)
uint8_t * getBinary()
Get binary of the fault log or NULL if no log.
void getNvmBlock(uint8_t address, uint16_t offset, uint16_t numWords, uint8_t command, uint8_t *data)
LT_2975FaultLog(LT_PMBus *pmbus)
Constructor.
struct PoutData pout_data2
float lin11_to_float(lin11_t xin)
struct TempData temp_data2
#define FILE_TEXT_LINE_MAX
void dumpBinary(Print *printer=0)
Dumps binary of the fault log to a Print inheriting object, or Serial if none specified.
struct ChanStatus chan_status1
struct TempData temp_data1
struct Peak5_11Words iout3_peaks
union LT_union_int32_4bytes data
struct FaultLogReadStatusLtc2975 fault_log_status
struct RawByte status_temp
struct Peak5_11Words vin_peaks
uint16_t getLin16WordVal(Lin16Word value)
struct ChanStatus chan_status3
struct IoutData iout_data2
struct Peak5_11Words iout2_peaks
struct PoutData pout_data1
struct Lin5_11WordReverse read_temp1
struct Lin5_11WordReverse read_pin
struct Peak16Words vout3_peaks
LTC SMBus Support: Implementation for a LTC2975 Fault Log.
struct Peak16Words vout1_peaks
virtual uint8_t readByte(uint8_t address, uint8_t command)=0
SMBus read byte command.
struct FaultLogPeaksLtc2975 peaks
struct ChanStatus chan_status2
struct Lin16WordReverse read_vout
void read(uint8_t address)
Reads the fault log from the specified address, reserves memory to hold the data. ...
struct VoutData vout_data0
struct Lin5_11WordReverse read_temp2
struct Peak5_11Words temp0_peaks
struct Peak5_11Words temp3_peaks
struct TempData temp_data0
struct RawByte status_vin
uint64_t getSharedTime200us(FaultLogTimeStamp time_stamp)
void print(Print *printer=0)
Pretty prints this part's fault log to a Print inheriting object, or Serial if none specified...
struct FaultLogPreambleLtc2975 preamble
struct Lin5_11WordReverse read_pout
struct FaultLogTimeStamp shared_time
uint8_t telemetryData[176]
struct RawByte status_mfr
struct TempData temp_data3
virtual uint8_t readBlock(uint8_t address, uint8_t command, uint8_t *block, uint16_t block_size)=0
SMBus read block command.
struct FaultLogReadLoopLtc2975 * loops
struct Peak16Words vout2_peaks
uint8_t getRawByteVal(RawByte value)
struct VoutData vout_data1
uint16_t getLin16WordReverseVal(Lin16WordReverse value)
struct ChanStatus chan_status0
struct Peak5_11Words iout0_peaks
#define MFR_FAULT_LOG_RESTORE
struct Peak5_11Words temp1_peaks
struct Peak5_11Words iin_peaks
struct Peak5_11Words pin_peaks
struct Lin5_11WordReverse read_iout
struct RawByte status_iout
struct Peak16Words vout0_peaks