/** | |
* @file tst_sm_time_kinetis.c | |
* @author NXP Semiconductors | |
* @version 1.0 | |
* @par License | |
* | |
* Copyright 2017,2018 NXP | |
* SPDX-License-Identifier: Apache-2.0 | |
* | |
* @par Description | |
* Utility functions for measurement of test execution time | |
* | |
*/ | |
#include "tst_sm_time.h" | |
#include <stdio.h> | |
extern volatile uint32_t gtimer_kinetis_msticks; // counter for 1ms SysTicks | |
long getMeasurement( | |
axTimeMeasurement_t *mPair) | |
{ | |
if (mPair->tEnd >= mPair->tStart) | |
return mPair->tEnd - mPair->tStart; | |
else | |
return 0; | |
} | |
void initMeasurement( | |
axTimeMeasurement_t *mPair) | |
{ | |
mPair->tEnd = mPair->tStart = gtimer_kinetis_msticks; | |
} | |
void concludeMeasurement( | |
axTimeMeasurement_t *mPair) | |
{ | |
mPair->tEnd = gtimer_kinetis_msticks; | |
} | |
void axSummarizeMeasurement( | |
void *fHandle_NotUsed, char *szMessage, long *msArray, int nMeasurement, int reportMode) | |
{ | |
int i; | |
long averaged = 0; | |
long minValue = 0; | |
long maxValue = 0; | |
//int fEchoStdout = 0; | |
//int fReportVerbose = 0; | |
//int nOut; | |
//fEchoStdout = ((reportMode & AX_MEASURE_ECHO_MASK) == AX_MEASURE_ECHO_STDOUT); | |
//fReportVerbose = ((reportMode & AX_MEASURE_REPORT_MASK) == AX_MEASURE_REPORT_VERBOSE); | |
if (nMeasurement > 0) | |
{ | |
minValue = msArray[0]; | |
maxValue = msArray[0]; | |
} | |
else | |
{ | |
printf("%s: No valid amount of measurements (%d)\n", szMessage, nMeasurement); | |
return; | |
} | |
for (i=0; i<nMeasurement; i++) | |
{ | |
//printf("%s: %ld ms\n", szMessage, msArray[i]); | |
averaged += msArray[i]; | |
minValue = (msArray[i] < minValue) ? msArray[i] : minValue; | |
maxValue = (msArray[i] > maxValue) ? msArray[i] : maxValue; | |
} | |
averaged /= nMeasurement; | |
printf("Exec Time: %s:\n\tAverage (%d measurements): %ld ms\n", szMessage, nMeasurement, averaged); | |
printf("\tMinimum: %ld ms\n", minValue); | |
printf("\tMaximum: %ld ms\n", maxValue); | |
return; | |
} |