/** * @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; }