void printFloatArray(char *prefix, float array[], int size) { appendMsgPrefix(&logger); appendPrintf(&logger, prefix); for (int j = 0; j < size; j++) appendPrintf(&logger, "%f ", array[j]); appendMsgPostfix(&logger); scheduleLogging(&logger); }
void scheduleMsg(Logging *logging, const char *fmt, ...) { resetLogging(logging); // todo: is 'reset' really needed here? appendMsgPrefix(logging); va_list ap; va_start(ap, fmt); vappendPrintf(logging, fmt, ap); va_end(ap); appendMsgPostfix(logging); scheduleLogging(logging); }
/** * This method would output a simple console message immediately. * This method should only be invoked on main thread because only the main thread can write to the console */ void printMsg(Logging *logger, const char *fmt, ...) { // resetLogging(logging); // I guess 'reset' is not needed here? appendMsgPrefix(logger); va_list ap; va_start(ap, fmt); vappendPrintf(logger, fmt, ap); va_end(ap); append(logger, DELIMETER); printLine(logger); }
/** * This method would output a simple console message immediately. * This method should only be invoked on main thread because only the main thread can write to the console */ void printMsg(Logging *logger, const char *fmt, ...) { efiAssertVoid(getRemainingStack(chThdSelf()) > 128, "lowstck#5o"); // resetLogging(logging); // I guess 'reset' is not needed here? appendMsgPrefix(logger); va_list ap; va_start(ap, fmt); vappendPrintf(logger, fmt, ap); va_end(ap); append(logger, DELIMETER); printLine(logger); }
/** * @brief This function knows how to print a histogram_s summary */ void printHistogram(Logging *logging, histogram_s *histogram) { int report[5]; int len = hsReport(histogram, report); resetLogging(logging); appendMsgPrefix(logging); appendPrintf(logging, "histogram %s *", histogram->name); for (int i = 0; i < len; i++) appendPrintf(logging, "%d ", report[i]); appendPrintf(logging, "*"); appendMsgPostfix(logging); scheduleLogging(logging); }
/** * this whole method is executed under syslock so that we can have multiple threads use the same shared buffer * in order to reduce memory usage */ void scheduleMsg(Logging *logging, const char *fmt, ...) { efiAssertVoid(logging != NULL, "logging NULL"); int wasLocked = lockAnyContext(); resetLogging(logging); // todo: is 'reset' really needed here? appendMsgPrefix(logging); va_list ap; va_start(ap, fmt); vappendPrintf(logging, fmt, ap); va_end(ap); appendMsgPostfix(logging); scheduleLogging(logging); if (!wasLocked) { unlockAnyContext(); } }
void printDateTime(void) { static time_t unix_time; struct tm timp; unix_time = rtcGetTimeUnixSec(&RTCD1); if (unix_time == -1) { scheduleMsg(&logger, "incorrect time in RTC cell"); } else { scheduleMsg(&logger, "%D - unix time", unix_time); rtcGetTimeTm(&RTCD1, &timp); appendMsgPrefix(&logger); appendPrintf(&logger, "Current RTC time in GMT is: %04u-%02u-%02u %02u:%02u:%02u", timp.tm_year + 1900, timp.tm_mon + 1, timp.tm_mday, timp.tm_hour, timp.tm_min, timp.tm_sec); appendMsgPostfix(&logger); scheduleLogging(&logger); } }
/** * @brief This function knows how to print a histogram_s summary */ void printHistogram(Logging *logging, histogram_s *histogram) { #if EFI_HISTOGRAMS && ! EFI_UNIT_TEST int report[5]; int len = hsReport(histogram, report); resetLogging(logging); appendMsgPrefix(logging); appendPrintf(logging, "histogram %s *", histogram->name); for (int i = 0; i < len; i++) appendPrintf(logging, "%d ", report[i]); appendPrintf(logging, "*"); appendMsgPostfix(logging); scheduleLogging(logging); #else UNUSED(logging); UNUSED(histogram); #endif /* EFI_HISTOGRAMS */ }
static void printFullAdcReport(void) { for (int index = 0; index < EFI_ADC_SLOW_CHANNELS_COUNT; index++) { appendMsgPrefix(&logger); int hwIndex = getAdcHardwareIndexByInternalIndex(index); GPIO_TypeDef* port = getAdcChannelPort(hwIndex); int pin = getAdcChannelPin(hwIndex); int adcValue = getAdcValueByIndex(index); appendPrintf(&logger, " ch%d %s%d", index, portname(port), pin); appendPrintf(&logger, " ADC%d 12bit=%d", hwIndex, adcValue); float volts = adcToVolts(adcValue); appendPrintf(&logger, " v=%f", volts); appendMsgPostfix(&logger); scheduleLogging(&logger); } }
static void printFullAdcReport(void) { scheduleMsg(&logger, "fast %d slow %d", fastAdc.conversionCount, slowAdc.conversionCount); for (int index = 0; index < slowAdc.size(); index++) { appendMsgPrefix(&logger); adc_channel_e hwIndex = slowAdc.getAdcHardwareIndexByInternalIndex(index); GPIO_TypeDef* port = getAdcChannelPort(hwIndex); int pin = getAdcChannelPin(hwIndex); int adcValue = slowAdc.getAdcValueByIndex(index); appendPrintf(&logger, " ch%d %s%d", index, portname(port), pin); appendPrintf(&logger, " ADC%d 12bit=%d", hwIndex, adcValue); float volts = adcToVolts(adcValue); appendPrintf(&logger, " v=%f", volts); appendMsgPostfix(&logger); scheduleLogging(&logger); } }
static void printFullAdcReport(Logging *logger) { scheduleMsg(logger, "fast %d slow %d", fastAdc.conversionCount, slowAdc.conversionCount); for (int index = 0; index < slowAdc.size(); index++) { appendMsgPrefix(logger); adc_channel_e hwIndex = slowAdc.getAdcHardwareIndexByInternalIndex(index); if(hwIndex != EFI_ADC_NONE && hwIndex != EFI_ADC_ERROR) { ioportid_t port = getAdcChannelPort("print", hwIndex); int pin = getAdcChannelPin(hwIndex); int adcValue = slowAdc.getAdcValueByIndex(index); appendPrintf(logger, " ch%d %s%d", index, portname(port), pin); appendPrintf(logger, " ADC%d 12bit=%d", hwIndex, adcValue); float volts = adcToVolts(adcValue); appendPrintf(logger, " v=%.2f", volts); appendMsgPostfix(logger); scheduleLogging(logger); } } }