-Fix issue where percentages were erroneously applied to strings after a valid percentage
-Fix issue where a number didn't receive the SDR specified formula -Fix issue where xCAT didn't understand the signed sensor value formats git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@807 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
		| @@ -331,6 +331,22 @@ sub translate_sensor { | ||||
|    } | ||||
|    if($sdr->sensor_units_1 & 1) { | ||||
|       $per = "% "; | ||||
|    } else { | ||||
|       $per = " "; | ||||
|    } | ||||
|    my $numformat = ($sdr->sensor_units_1 & 0b11000000) >> 6; | ||||
|    if ($numformat) { | ||||
|      if ($numformat eq 0b11)  { | ||||
|         #Not sure what to do.. leave it alone for now | ||||
|      } else { | ||||
|         if ($reading & 0b10000000) { | ||||
|           if ($numformat eq 0b01) { | ||||
|              $reading = 0-((~($reading&0b01111111))&0b1111111); | ||||
|           } elsif ($numformat eq 0b10) { | ||||
|              $reading = 0-(((~($reading&0b01111111))&0b1111111)+1); | ||||
|           } | ||||
|         } | ||||
|      } | ||||
|    } | ||||
|    if($unitdesc eq "Watts") { | ||||
|       my $f = ($reading * 3.413); | ||||
| @@ -346,7 +362,7 @@ sub translate_sensor { | ||||
|       my $c = ($reading - 32) * 5/9; | ||||
|       $unitdesc = "F (" . int($c + .5) . " C)"; | ||||
|    } | ||||
|    return "$value $unitdesc"; | ||||
|    return "$reading $unitdesc"; | ||||
| } | ||||
|  | ||||
|  | ||||
| @@ -3120,7 +3136,23 @@ sub vitals { | ||||
| 	 | ||||
| 					if($sdr->sensor_units_1 & 1) { | ||||
| 						$per = "% "; | ||||
| 					} | ||||
| 					} else { | ||||
|                   $per = " "; | ||||
|                } | ||||
|                my $numformat = ($sdr->sensor_units_1 & 0b11000000) >> 6; | ||||
|                if ($numformat) { | ||||
|                   if ($numformat eq 0b11)  { | ||||
|                      #Not sure what to do here.. | ||||
|                   } else { | ||||
|                      if ($reading & 0b10000000) { | ||||
|                         if ($numformat eq 0b01) { | ||||
|                            $reading = 0-((~($reading&0b01111111))&0b1111111); | ||||
|                         } elsif ($numformat eq 0b10) { | ||||
|                            $reading = 0-(((~($reading&0b01111111))&0b1111111)+1); | ||||
|                         } | ||||
|                      } | ||||
|                   } | ||||
|                } | ||||
| 	 | ||||
|                     if($unitdesc eq "Watts") { | ||||
|                         my $f = ($reading * 3.413); | ||||
| @@ -3422,11 +3454,11 @@ sub initsdr { | ||||
| 		$sdr->entity_instance($sdr_data[10]); | ||||
| 		$sdr->sensor_type($sdr_data[13]); | ||||
| 		$sdr->event_type_code($sdr_data[14]); | ||||
| 		$sdr->sensor_units_1($sdr_data[21]); | ||||
| 		$sdr->sensor_units_2($sdr_data[22]); | ||||
| 		$sdr->sensor_units_3($sdr_data[23]); | ||||
|  | ||||
| 		if($sdr_type == 0x01) { | ||||
| 		   $sdr->sensor_units_1($sdr_data[21]); | ||||
| 			$sdr->linearization($sdr_data[24] & 0b01111111); | ||||
| 			$sdr->M(comp2int(10,(($sdr_data[26] & 0b11000000) << 2) + $sdr_data[25])); | ||||
| 			$sdr->B(comp2int(10,(($sdr_data[28] & 0b11000000) << 2) + $sdr_data[27])); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user