aboutsummaryrefslogtreecommitdiffstats
path: root/avg_power.sh
blob: 664e990a676d7b8933d57385cb0ee32e22bad667 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#!/bin/bash
#
# Script to measure the average power drawn by
# the device.
#
# Copyright (C) 2007-2009 Michael Buesch <mb@bu3sch.de>
# GPLv2+
#

PCIBX="./pcibx -V1 $@"	# path to pcibx
cnt=50			# number of measurements


echo "1 + 1" | bc 2>&1 >/dev/null
if [ $? -ne 0 ]; then
	echo "Could not execute \"bc\"."
	echo "Is bc installed?"
	exit 1
fi

function measure # $1=what
{
	local tmp

	tmp="$($PCIBX --cmd-measure$1)"
	[ $? -eq 0 ] || exit 1
	RES="$(echo $tmp | cut -d' ' -f2)"
}

S="scale=3;"
avg_a5="0"
avg_a12="0"
avg_a33="0"
avg_v5="0"
avg_v12="0"
avg_v33="0"
echo -n "measuring" >&2
for ((i = 0; i < $cnt; i++)); do
	echo -n "." >&2
	measure a5
	avg_a5=$(echo "$S $avg_a5 + $RES" | bc)
	measure v5uut
	avg_v5=$(echo "$S $avg_v5 + $RES" | bc)
	measure a12
	avg_a12=$(echo "$S $avg_a12 + $RES" | bc)
	measure v12uut
	avg_v12=$(echo "$S $avg_v12 + $RES" | bc)
	measure a33
	avg_a33=$(echo "$S $avg_a33 + $RES" | bc)
	measure v33uut
	avg_v33=$(echo "$S $avg_v33 + $RES" | bc)
done
echo "OK" >&2
echo >&2
avg_a5=$(echo "$S $avg_a5 / $cnt" | bc)
avg_a12=$(echo "$S $avg_a12 / $cnt" | bc)
avg_a33=$(echo "$S $avg_a33 / $cnt" | bc)
avg_v5=$(echo "$S $avg_v5 / $cnt" | bc)
avg_v12=$(echo "$S $avg_v12 / $cnt" | bc)
avg_v33=$(echo "$S $avg_v33 / $cnt" | bc)

va5=$(echo "$S $avg_v5 * $avg_a5" | bc)
va12=$(echo "$S $avg_v12 * $avg_a12" | bc)
va33=$(echo "$S $avg_v33 * $avg_a33" | bc)
va_all=$(echo "$S $va5 + $va12 + $va33" | bc)

echo "5V line:     $avg_v5 Volts,  $avg_a5 Ampere  => $va5 VA"
echo "12V line:   $avg_v12 Volts,  $avg_a12 Ampere  => $va12 VA"
echo "3.3V line:   $avg_v33 Volts,  $avg_a33 Ampere  => $va33 VA"
echo "-------------"
echo "= $va_all VA"

exit 0
bues.ch cgit interface