aboutsummaryrefslogtreecommitdiff
path: root/arm-probe
diff options
context:
space:
mode:
authorAndy Green <andy.green@linaro.org>2012-10-22 17:21:48 +0800
committerAndy Green <andy.green@linaro.org>2012-10-22 17:52:04 +0800
commit8154df94d446ae306384c84f3392a1d6ba970775 (patch)
tree530eb10b9af2901fbf7cbf42e637c2bbce86c5cb /arm-probe
parent9ccd7d5f3c7b0597141e41a8f763d358b3198d0a (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.c59
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);