applet::tooltip-set [tt-string]
}
-proc append-energies {av energy power eunit punit} {
+proc append-energies {av energy power eunit punit fmt} {
upvar 1 o o
upvar 1 $av a
- append o [format " %.0f%s / %.0f%s / %.0f%s %.0f%s" \
- [expr { $a(${energy}_NOW) * 1e-3 }] $eunit \
- [expr { $a(${energy}_FULL) * 1e-3 }] $eunit \
- [expr { $a(${energy}_FULL_DESIGN) * 1e-3 }] $eunit \
- [expr { $a(${power}_NOW) * 1e-3 }] $punit]
+ append o [format " ${fmt}%s / ${fmt}%s / ${fmt}%s ${fmt}%s" \
+ [expr { $a(${energy}_NOW) * 1e-6 }] $eunit \
+ [expr { $a(${energy}_FULL) * 1e-6 }] $eunit \
+ [expr { $a(${energy}_FULL_DESIGN) * 1e-6 }] $eunit \
+ [expr { $a(${power}_NOW) * 1e-6 }] $punit]
}
proc append-percents {qv} {
if {$nbatts} {
set o "Total: $nbatts present "
append o [join [lsort [array names states]] /]
- append-energies tot energy power mWh mW
+ append-energies tot energy power Wh W %.1f
append-percents tot
lappend lines $o
}
return [join $lines "\n"]
}
-proc compute {power energy factor punit eunit sign} {
+proc compute {power energy factor punit eunit sign fmt} {
upvar 1 a a
upvar 1 q q
upvar 1 tot tot
if {![info exists tot($kq)]} { set tot($kq) 0 }
set tot($kq) [expr {$tot($kq) + $q($kq)}]
}
- append-energies a $energy $power $eunit $punit
+ append-energies a $energy $power $eunit $punit $fmt
append-percents q
return 1
}
}
}
debug::debug "GOT [array names a]"
+ if {![info exists a(TYPE)]} {
+ set op {}
+ foreach k {ONLINE PRESENT} { append op [info exists a($k)] }
+ switch -exact $op {
+ 10 { set a(TYPE) Mains }
+ 01 { set a(TYPE) Battery }
+ default { error "no type and bad op $op" }
+ }
+ debug::debug " guessed type $a(TYPE) from ONLINE PRESENT $op"
+ }
set o "$a(TYPE)"
+
set nbatts 0
switch -exact -- $a(TYPE) {
Mains {
set states($a(STATUS)) 1
append o $a(STATUS)
foreach power {POWER CURRENT} energy {ENERGY CHARGE} \
- punit {mW mA} eunit {mWh mAh} {
+ punit {W A} eunit {Wh Ah} fmt {%.1f %.2f} {
switch -exact $power {
POWER { set factor 1.0 }
CURRENT { set factor [expr {$a(VOLTAGE_NOW) * 1e-6}] }
}
- if {![compute $power $energy $factor $punit $eunit $sign]} \
- continue
+ if {![compute $power $energy $factor \
+ $punit $eunit $sign $fmt]} continue
incr nbatts
}
}