diff options
author | Andy Green <andy.green@linaro.org> | 2012-10-22 17:21:48 +0800 |
---|---|---|
committer | Andy Green <andy.green@linaro.org> | 2012-10-22 17:52:04 +0800 |
commit | 8154df94d446ae306384c84f3392a1d6ba970775 (patch) | |
tree | 530eb10b9af2901fbf7cbf42e637c2bbce86c5cb /arm-probe | |
parent | 9ccd7d5f3c7b0597141e41a8f763d358b3198d0a (diff) |
remove capture averaging from library add to arm probe
Signed-off-by: Andy Green <andy.green@linaro.org>
Diffstat (limited to 'arm-probe')
-rw-r--r-- | arm-probe/arm-probe.c | 59 |
1 files changed, 50 insertions, 9 deletions
diff --git a/arm-probe/arm-probe.c b/arm-probe/arm-probe.c index fde030d..e36e23a 100644 --- a/arm-probe/arm-probe.c +++ b/arm-probe/arm-probe.c @@ -120,6 +120,13 @@ int main(int argc, char *argv[]) struct aepd_interface_result *aepd_interface_result; int first = 1; + /* simple stats on what was captured */ + + double averages[AEPD_SHARED_MAX_REAL_CHANNELS][3]; + double min[AEPD_SHARED_MAX_REAL_CHANNELS][3]; + double max[AEPD_SHARED_MAX_REAL_CHANNELS][3]; + double count_post_trigger = 0; + loop = 1; signal(SIGINT, sighandler); @@ -327,6 +334,13 @@ int main(int argc, char *argv[]) printf("#\n"); + for (n = 0; n < AEPD_SHARED_MAX_REAL_CHANNELS; n++) + for (m = 0; m < 3; m++) { + averages[n][m] = 0.0; + min[n][m] = 999; + max[n][m] = 0; + } + /* * service any AEP results */ @@ -372,6 +386,8 @@ int main(int argc, char *argv[]) } if (aepd_interface_result->triggered) printf("%f ", aepd_interface_result->samtime); + + m = 0; for (i = 0; i < aepd_interface_result->chans * 2; i += 2) { if (aepd_interface_result->triggered) { if (just_power) @@ -380,6 +396,27 @@ int main(int argc, char *argv[]) printf(" %.2f %.4f %.5f", aepd_interface_result->buf[i], aepd_interface_result->buf[i + 1], aepd_interface_result->buf[i] * aepd_interface_result->buf[i + 1]); } + + averages[m][0] += aepd_interface_result->buf[i]; + averages[m][1] += aepd_interface_result->buf[i + 1]; + averages[m][2] += aepd_interface_result->buf[i] * aepd_interface_result->buf[i + 1]; + + if (min[m][0] > aepd_interface_result->buf[i]) + min[m][0] = aepd_interface_result->buf[i]; + if (min[m][1] > aepd_interface_result->buf[i + 1]) + min[m][1] = aepd_interface_result->buf[i + 1]; + if (min[m][2] > aepd_interface_result->buf[i] * aepd_interface_result->buf[i + 1]) + min[m][2] = aepd_interface_result->buf[i] * aepd_interface_result->buf[i + 1]; + + if (max[m][0] < aepd_interface_result->buf[i]) + max[m][0] = aepd_interface_result->buf[i]; + if (max[m][1] < aepd_interface_result->buf[i + 1]) + max[m][1] = aepd_interface_result->buf[i + 1]; + if (max[m][2] < aepd_interface_result->buf[i] * aepd_interface_result->buf[i + 1]) + max[m][2] = aepd_interface_result->buf[i] * aepd_interface_result->buf[i + 1]; + + m++; + if (periodic & 0x1ff) continue; if (just_power) @@ -388,8 +425,12 @@ int main(int argc, char *argv[]) fprintf(stderr, " %.2f %.4f %.5f", aepd_interface_result->buf[i], aepd_interface_result->buf[i + 1], aepd_interface_result->buf[i] * aepd_interface_result->buf[i + 1]); } - if (aepd_interface_result->triggered) + + count_post_trigger++; + + if (aepd_interface_result->triggered) { printf("\n"); + } aep_free_result(aepd_interface); @@ -421,12 +462,12 @@ int main(int argc, char *argv[]) for (n = 0; n <= aep_context.aepd_interface->chans; n++) { if (just_power) - printf(" %.5f", aep_context.aepd_interface->averages[n][2]); + printf(" %.5f", averages[n][2]); else printf(" %.2f %.4f %.5f", - aep_context.aepd_interface->averages[n][0], - aep_context.aepd_interface->averages[n][1], - aep_context.aepd_interface->averages[n][2]); + averages[n][0] / count_post_trigger, + averages[n][1] / count_post_trigger, + averages[n][2] / count_post_trigger); } printf("\n"); @@ -442,16 +483,16 @@ int main(int argc, char *argv[]) for (n = 0; n < aepd_interface->chans; n++) { - if (aepd_interface->min[n][0] == 999) + if (min[n][0] == 999) continue; fprintf(stderr, "%12s: %4.2fV < %4.3fVavg < %4.2fV, " "%6.4fA < %6.5fAavg < %6.4fA, " "%9.6fW < %9.6fWavg < %9.6fW\n", aepd_interface->channel_name[n], - aepd_interface->min[n][0], aepd_interface->averages[n][0], aepd_interface->max[n][0], - aepd_interface->min[n][1], aepd_interface->averages[n][1], aepd_interface->max[n][1], - aepd_interface->min[n][2], aepd_interface->averages[n][2], aepd_interface->max[n][2]); + min[n][0], averages[n][0] / count_post_trigger, max[n][0], + min[n][1], averages[n][1] / count_post_trigger, max[n][1], + min[n][2], averages[n][2] / count_post_trigger, max[n][2]); } aepd_interface_destroy(aepd_interface); |