#!/bin/sh

model=`/sbin/sysctl hw.model | cut -d" " -f 3`

/usr/sbin/envstat | awk -v model="$model" '
BEGIN {
	printf("Model: %s\n", model);
	section = "";
}
{
	if ($1 ~ /^\[.*]$/)
		section = $1;
	if (model == "SUNW,Sun-Blade-1000") {
		if (section ~ /admtemp[0-3]/) {
			n = section;
			sub("\\[admtemp", "", n);
			sub("]", "", n);
			c = "     cpu" n;
		$1 ~ /internal/ sub(" internal", "  ambient");
		$1 ~ /external/ sub(" external", c);
		}
	}
	if (model == "SUNW,Sun-Fire-V240" || model == "SUNW,Sun-Fire-V210") {
		$1 ~ /fan 0/ sub("fan 0", "F0.RS");
		$1 ~ /fan 1/ sub("fan 1", "F1.RS");
		$1 ~ /fan 2/ sub("fan 2", "F2.RS");
		$1 ~ /fan 4/ sub("      fan 4", "MB.P0.F1.RS");
		$1 ~ /fan 5/ sub("      fan 5", "MB.P1.F0.RS");
		$1 ~ /fan 6/ sub("      fan 6", "MB.P0.F0.RS");
		$1 ~ /fan 7/ sub("      fan 7", "MB.P1.F1.RS");
		$1 ~ /external 1/ sub("  external 1", "MB.P0.T_CORE");
		$1 ~ /external 2/ sub("  external 2", "MB.P1.T_CORE");
		$1 ~ /Vbatt/ sub("       Vbatt", "MB.BAT.V_BAT");
		$1 ~ /Vccp/ sub("        Vccp", "MB.P0.V_CORE");
		$1 ~ /V3.0 0/ sub("   V3.0 0", "MB.V_+1V5");
		$1 ~ /V3.0 1/ sub("   V3.0 1", "MB.V_+2V5");
		$1 ~ /V3.0 2/ sub("    V3.0 2", "MB.V_VCCTM");
		$1 ~ /V3.0 3/ sub("       V3.0 3", "MB.V_GBE_CORE");
		$1 ~ /V3.0 4/ sub("       V3.0 4", "MB.V_GBE_+2V5");
		$1 ~ /V2.5 0/ sub("  V2.5 0", "MB.V_VTT");
		$1 ~ /V2.5 1/ sub("      V2.5 1", "MB.P1.V_CORE");
		$1 ~ /temperature-sensor/ sub("temperature-sensor", "          MB.T_ENC");
	}
	if (model == "SUNW,Sun-Fire-V210") {
		$1 ~ /fan 3/ sub("fan 3", "F3.RS");
	}
	if (model == "SUNW,Sun-Fire-V440") {
		if (section ~ /adm1026hm0/) {
			$1 ~ /fan 0/ sub("      fan 0", "FT0.F0.TACH");
			$1 ~ /fan 1/ sub("      fan 1", "FT1.F0.TACH");
			$1 ~ /fan 2/ sub("      fan 2", "FT1.F1.TACH");
			$1 ~ /Vbatt/ sub("       Vbatt", "MB.BAT.V_BAT");
			$1 ~ /internal/ sub("    internal", "SCSIBP.T_AMB");
			$1 ~ /V3.3 standby/ sub(" V3.3 standby", "MB.V_+3V3STBY");
			$1 ~ /V3.3 main/ sub(" V3.3 main", " MB.V_+3V3");
			$1 ~ /V5.0/ sub("    V5.0", "MB.V_+5V");
			$1 ~ /V+12/ sub("   V+12", "MB.V_+12V");
			$1 ~ /V-12/ sub("   V+12", "MB.V_-12V");
			$1 ~ /V3.0 0/ sub("   V3.0 0", "MB.V_+1V5");
			$1 ~ /V3.0 1/ sub("    V3.0 1", "MB.V_VCCTM");
			$1 ~ /V3.0 2/ sub("        V3.0 2", "MB.V_SCSI_CORE");
			$1 ~ /V3.0 3/ sub("        V3.0 3", "MB.V_NET0_1V2D");
			$1 ~ /V3.0 4/ sub("        V3.0 4", "MB.V_NET1_1V2D");
			$1 ~ /V3.0 5/ sub("        V3.0 5", "MB.V_NET0_1V2A");
			$1 ~ /V2.5 0/ sub("        V2.5 0", "MB.V_NET1_1V2A");
		}
		if (section ~ /admtemp[0-3]/) {
			n = section;
			sub("\\[admtemp", "", n);
			sub("]", "", n);
			i = "C" n ".T_AMB";
			e = "C" n ".P0.T_CORE";
			$1 ~ /internal/ sub("    internal", i);
			$1 ~ /external/ sub("external", e);
		}
		$1 ~ /temperature-sensor/ sub("temperature-sensor", "          MB.T_AMB");
	}
	print;
}'